2009-04-02 5 views
1

J'utilise une vue de grille de données pour afficher des informations à partir d'une base de données et je n'arrive pas à la mettre à jour correctement. Je peux voir les données de la base de données, mais lorsque je change d'information et que je la sauvegarde, cela change l'information de la colonne entière. Mes lignes doivent avoir des valeurs différentes dans la même colonne, donc c'est un problème.SQL UPDATEing une base de données dans VB.NET, ayant des problèmes

-Voici mon code jusqu'à présent, ce que le programme fait est de faire une liste des transactions qui sont entrées.

Public Class Form1 

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 
    Handles Button3.Click 

    If MsgBox("Add new transaction?", MsgBoxStyle.YesNo, " ") <> 7 Then 
     If IsNumeric(in_cost.Text) Then 
      Dim x As Int16 = Database1DataSet.Table1.Count + 1  '//gets # value 
      Me.Table1TableAdapter.Insert(Format(Now, "dddd, M/dd/yy"), x, in_cost.Text, in_prod.Text, in_type.Text, in_note.Text, 9999.99) '//Writes new index to DB table 
      Me.Table1TableAdapter.Fill(Me.Database1DataSet.Table1) 
     Else 
      MsgBox("Cost is non-numeric!") 
     End If 
    End If 
End Sub 
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
    Me.Table1TableAdapter.Fill(Me.Database1DataSet.Table1) 
End Sub 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Me.Table1TableAdapter.Fill(Me.Database1DataSet.Table1) 
End Sub 
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Me.Table1TableAdapter.Update(Me.Database1DataSet.Table1) 
End Sub 
End Class 

-SQL commande UPDATE:

UPDATE Table1 

SET  Balance = @p1, Note = @p2, Type = @p3, Product = @p4, Cost = @p5, # = @p6, Date = @p7 

Merci à l'avance pour toute aide.

+0

Cela ressemble à du code VB.Net, pas à du code VB 6. –

+0

@Ben: La réponse de Mark tpdi est correcte si elle a répondu à votre question;) – Kezzer

Répondre

5

Il change chaque ligne car votre instruction update n'a pas de clause where. Sans clause where, il n'y a pas de prédicat, donc il correspond à chaque ligne, et chaque ligne est mise à jour.

Vous avez besoin d'une clause where (un prédicat) dans votre instruction de mise à jour. Probablement "où id = @id" à la fin de votre déclaration de mise à jour.

+0

Cela a fonctionné, merci beaucoup! –

+0

Pas de problème, allez-y et marquez-le comme la meilleure réponse! ;) – tpdi

+0

+1 Pour demander de façon flagrante de marquer la * meilleure * réponse. Oui. – Sung

Questions connexes