galaxy2009
Messages postés144Date d'inscriptiondimanche 24 avril 2011StatutMembreDernière intervention16 juin 2016
-
Modifié par jordane45 le 25/02/2014 à 23:53
Cricri1670
Messages postés32Date d'inscriptionsamedi 15 décembre 2007StatutMembreDernière intervention10 avril 2014
-
2 avril 2014 à 16:14
Bonjour,
j'ai une table stock où j'enregistre l'arrivage des produits, maintenant j'ai un problème c'est quand je veux modifier le dernier arrivage d'un produit ma requête modifie toujours le premier enregistrement de ma table.
voilà mon code dans le bouton enregistrer:
Private Sub Enregistrer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Enregistrer.Click
sql = "select HSstockin.* from HSstockin where "
' If TextBox14.Text <> "" Then sql = sql & "ID = '" & TextBox14.Text & "' and "
If TID.Text <> "" Then sql = sql & "id = '" & TID.Text & "' and "
If T1.Text <> "" Then sql = sql & "design = '" & T1.Text & "' and "
If Mask1.Text <> "" Then sql = sql & "dentrer = '" & Mask1.Text & "'"
cmd = New SqlCommand(sql)
dta = New SqlDataAdapter(cmd)
cmd.Connection() = cnx
'chargement du DataSet à partir du DataAdapter
dta.Fill(dts, "HSstockin")
'chargement de la DataTable à partir du DataSet
dtt = dts.Tables("HSstockin")
'mise à jour des données du DataAdapter à partir du commandbuilder
dta.Update(dts, "HSstockin")
'si la table est vide alors
If rownum > dtt.Rows.Count - 1 Then
Me.Show()
End If
'*******MODIFICATION DES DONNEES********
dtr = dts.Tables("HSstockin").Rows(rownum)
dtr("design") = Me.T1.Text
dtr("ref") = Me.T2.Text
dtr("famille") = Me.T3.Text
dtr("prix") = Me.T4.Text
dtr("fourniss") = Me.T5.Text
dtr("quantite") = Me.T6.Text
dtr("minim") = Me.T7.Text
dtr("ancienstock") = Me.T8.Text
dtr("stockentrer") = Me.T9.Text
dtr("stockgeneral") = Me.T10.Text
dtr("facture") = Me.T11.Text
dtr("dentrer") = MaskedTextBox1.Text
dtr("utilisateur") = Me.T12.Text
dtr("datecreat") = Me.Mask2.Text
dtr("timecreat") = Me.T13.Text
cmdb = New SqlCommandBuilder(dta)
'mise à jour des données du DataAdapter à partir du commandbuilder
dta.Update(dts, "HSstockin")
'on vide le dataset pour le recréer avec les nouvelles données
dts.Clear()
dta.Fill(dts, "HSstockin")
dtt = dts.Tables("HSstockin")
End Sub
Cricri1670
Messages postés32Date d'inscriptionsamedi 15 décembre 2007StatutMembreDernière intervention10 avril 2014 2 avril 2014 à 16:14
Bonjour,
Je n'ai pas lu l'ensemble de ton code mais je peux tout de suite t'orienter vers les points suivants :
1) Pour pouvoir identifier une ligne de données, il faut que ta base contienne une Clef Primaire unique. Est-ce le cas ? Si tu n'as qu'un seul arrivage par jour, tu peux utiliser la date, sinon, il te faudra trouver autre chose.
2) Lors d'un Update sur une base, il FAUT une clause WHERE qui contient la référence à cette clef unique, sinon le premier élément correspondant sera modifié.
Vérifies le texte de la commande UPDATE de ton CommandBuilder car sans clef, celui-ci va te créer une commande qui ne marchera pas.