2017-12-22 20 views
2

내 데이터베이스에 [productlist]라는 테이블이 있으며 그 안에 (Name), (Stock) (Brand), "내가 버튼 내 목록보기에서"수량 "의 값을 저장 클릭하면목록보기에서 특정 열의 값과 데이터베이스의 값의 합계를 가져와 데이터베이스 업데이트

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

내가 일 할 것은이 값에 추가됩니다 : (크기)

나는이 같은 목록보기를 재고 "내 데이터베이스에

(내 목록보기의 수량 값) + (현재 값 내 제품 목록 테이블 주) = 내 제품 목록 표에서 (주)

는 나는이 코드를 시도 그래서 시작하는 방법을 해달라고하지만 작업 일부러 : 당신은 당신의 SQL 구문에 오류가

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 

을; 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 쿼리에 하나의 문제가 있습니다. 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 u있어! 그리고 그 간단한!? 대단히 감사합니다! 다음 번에 문제가 생길 때마다 내 새로운 질문을 볼 수 있기를 바랍니다. 대단히 감사합니다! – sid

+0

@sid 도와 드리겠습니다. 열 이름 문제가 유일한 주요 문제라는 사실은 일반적으로 좋은 코드를 작성했음을 나타냅니다. 그 노력을 계속하십시오. –