Probleme au niveau de l'ajout

Jamel -  
 Jamel -
Bonjour,


J'ai entrain de realiser une Application VB, j'ai probleme au niveau de l'ajout.
Voila le message qui m'apparais lors de l'execution:

OleDbException was unhandled
the changes you requested to the table were not successfuk because
they would create duplicate values in the index, primary key, or
relationship. change the data in the field or fields that contain...

Et merci

2 réponses

Thomas
 
Hello,

Semblerait que tu forces l'ajout d'une auto incrémentation, ou d'un numéro automatique. Quelle base de données utilises tu?
Copie/colle ta requête.
0
Jamel
 
Hi,
BD: Access2007
VB2005
Voila ce que je fais:
'=================
Private Sub BtnAjouter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAjouter.Click
'crátion d'une nouvelle ligne avec les données des textbox
dtr = dts.Tables("Participante").NewRow
If Me.TextBox11.Text = "" Then
MsgBox("???? ??? ???????", vbExclamation + vbOKOnly, "???")
'End If
ElseIf (Me.TextBox11.Text <> "") Then
'Try
While (Me.TextBox11.Text <> "")
dtr("IdP") = Me.TextBox11.Text
dtr("NomP") = Me.TextBox1.Text
dtr("AgeP") = Me.TextBox2.Text
dtr("FonctionP") = Me.TextBox3.Text
dtr("NumTelP") = Me.TextBox4.Text
dtr("NumTelE") = Me.TextBox9.Text
dtr("NPE") = Me.TextBox12.Text
dtr("AdresseP") = Me.TextBox13.Text
dtr("TypeP") = Me.TypeP.Text
dtr("PriceP") = Me.TextBox16.Text
dtr("DateBeg") = Me.DatDep.Text
'-----------------------
Dim today As System.DateTime
Dim duration As System.TimeSpan
Dim answer As System.DateTime
today = Me.DatDep.Text
Select Case Me.TypeP.Text
Case "???"
duration = New System.TimeSpan(30, 0, 0, 0)
Case "?????"
duration = New System.TimeSpan(60, 0, 0, 0)
Case "????? ????"
duration = New System.TimeSpan(90, 0, 0, 0)
Case "??? ????"
duration = New System.TimeSpan(180, 0, 0, 0)
Case "???"
duration = New System.TimeSpan(360, 0, 0, 0)
End Select
answer = today.Add(duration)
Me.TextBox5.Text = answer
dtr("DateEnd") = Me.TextBox5.Text
'-----------------------
' Else
' MsgBox("???? ??? ???????", vbExclamation + vbOKOnly, "???")
' End If
'ajout de la ligne dans le DataSet
dts.Tables("Participante").Rows.Add(dtr)
'création et exécution du commandbuilder pour mettre à jour le DataAdapter
cmdb = New OleDbCommandBuilder(dta)
'mise à jour des données du dataadapter(dta)à partir du commandbuilder (cmdb)
dta.Update(dts, "Participante")
'on vide le dataset pour le recréer avec les nouvelles données
dts.Clear()
dta.Fill(dts, "Participante")
dtt = dts.Tables("Participante")
MsgBox("Client ajoute avec succes")
End While
'End Try
End If
'MsgBox("??? ??????? ?????")
Me.TextBox11.Text = ""
Me.TextBox1.Text = ""
Me.TextBox2.Text = ""
Me.TextBox3.Text = ""
Me.TextBox12.Text = ""
Me.TextBox13.Text = ""
Me.TextBox16.Text = ""
Me.TextBox4.Text = ""
Me.TextBox5.Text = ""
Me.TextBox9.Text = ""
Me.DatDep.Text = ""
Me.TypeP.Text = ""
End Sub
'================
Et merci...
0
Thomas
 
Alors alors, si tu ouvres ta base Access, et que tu fais un cliques droits> mode création sur ta table "Participante".
Dans les types de donées, y a t il un "NuméroAuto" quelques part? on dans les propriété "indexé" la valeur: "oui - sans doublon" dans l'un des champs suivants:
IdP
NomP
AgeP
FonctionP
NumTelP
NumTelE
NPE
AdresseP
TypeP
PriceP
DateBeg
0
Jamel
 
Ya pas "NuméroAuto" au niveau de tous les champs, mais il ya "oui sans doublon" au niveau de la cle primaire IdP.
0
Thomas
 
Es tu sur que tu ne met pas une valeur existante dans ta table(au niveau du champs idP) lorsque tu fais ton ajout?
La valeur de ton TextBox11 est générée comment?
0
Jamel
 
Nn j'ai pas utiliser aucune valeur existante au niveau champs IdP, (IdP cle primaire est de type number).......J'attends votre aide est merci.
0
Thomas
 
dtr("IdP") = Me.TextBox11.Text 
Que mets tu dans ton TextBox11?
0
Jamel
 
J'ai entrer un nombre qque
(ou entier)
0