2017-12-22 7 views
2

私のデータベースには[productlist]という名前のテーブルがあり、その内部には(Name)、(Stock) (サイズ)リストビュー内の特定の列の値とデータベースの値の合計を取得してデータベースを更新します

私はこのようなリストビューがあります。私は私のリストビューで、「数量」の値が "の値に加算されます 保存ボタンをクリックしたときに

|Qty| Name | Brand | Size | 
| 2 | Name 1| Brand 1| Size 1| 
| 2 | Name 2| Brand 2| Size 2|  

何が起こるしたいことはあるが在庫 "私のデータベースに

(私のリストビューの数量)+(現在の値私productlistテーブル内の証券)=(私のproductlistテーブルの証券)

私はので、私はこのコードを試みたが、それは仕事をdidntの起動方法いけない:

Private Sub btnSave_Click(sender As System.Object, e As System.EventArgs) Handles btnSave.Click 


Dim MyConnection As New MySqlConnection 
Dim MyTransaction As MySqlTransaction = Nothing 

MyConnection.ConnectionString = "Server=localhost;Database=empiredb;Uid=root;" 

    MyConnection.Open() 
    MyTransaction = MyConnection.BeginTransaction 


For Each item As ListViewItem In lvwProductPurchases.Items 



Dim SQL As String = "update productlist set [Stock] = [Stock] + @0 where Name = @1 and Brand = @2 and Size = @3" 

Dim CMD4 As New MySqlCommand 

      CMD4.Connection = MyConnection 
      CMD4.Transaction = MyTransaction 
      CMD4.CommandText = SQL 
      CMD4.Parameters.AddWithValue("@0", item.Text) 
      CMD4.Parameters.AddWithValue("@1", item.SubItems(1).Text) 
      CMD4.Parameters.AddWithValue("@2", item.SubItems(2).Text) 
      CMD4.Parameters.AddWithValue("@3", item.SubItems(3).Text) 
      CMD4.ExecuteNonQuery() 
      CMD4.Dispose() 
Next 
    MsgBox("updated") 
'try and catch i will put transactionrollback 
End sub 

あなたのSQL構文でエラーが発生しています。正しい構文がMySQLサーバーバージョンに対応するマニュアルをチェックして、[Stock] = [Stock] + '2'、Name = 'kahoy'、Brand = 'Brand 1'、Size = 'm' 1

+0

どのコード行に問題があるか教えてください。それ以外の場合は、VBAの教師がこれを読んだり、他の人があなたの実際のコードをローカルでテストするのに役立つ唯一の方法です。 –

+0

SQL構文にエラーがあります。正しい構文がMySQLサーバーバージョンに対応するマニュアルをチェックして、[Stock] = [Stock] + '2'、Name = 'kahoy'、Brand = 'Brand 1'、Size = 'm' 1 – sid

+0

私はデータベースの在庫を取得して更新クエリに入れて両方の値の合計を得る方法を知らない – sid

答えて

1

私はVB.netで多くの作業を行っていませんが、MySQLクエリに1つの問題があります。 MySQLでは、括弧をエスケープ/参照するために括弧で囲むことは有効な構文ではありません。これは、SQL Server、Access、およびおそらく他のいくつかのデータベースで有効です。クエリに次の構文を使用することを提案します。

Dim SQL As String = "UPDATE productlist SET Stock = Stock + @0 " _ 
        "WHERE Name = @1 AND Brand = @2 AND Size = @3" 
+1

OMGあなたはそれを持っています!それは簡単です!どうもありがとうございました!次回私が問題を抱えているときに新しい質問を見ることができることを願っています。どうもありがとうございました! – sid

+0

@sidよろしくお願いします。列名の問題が唯一の大きな問題であったということは、一般に良いコードを書いていることを示しています。その努力を続けてください。 –

関連する問題