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

  1. 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
    1. 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
  2. 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
    1. 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
    2. 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
    3. 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
    4. Thomas
       
      dtr("IdP") = Me.TextBox11.Text 
      Que mets tu dans ton TextBox11?
      0
    5. Jamel
       
      J'ai entrer un nombre qque
      (ou entier)
      0