Probleme au niveau de l'ajout

Fermé
Jamel - 8 avril 2014 à 08:28
 Jamel - 9 avril 2014 à 10:42
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

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
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
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
Ya pas "NuméroAuto" au niveau de tous les champs, mais il ya "oui sans doublon" au niveau de la cle primaire IdP.
0
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
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
dtr("IdP") = Me.TextBox11.Text 
Que mets tu dans ton TextBox11?
0
J'ai entrer un nombre qque
(ou entier)
0