Xin nhờ mọi người sửa giúp câu lệnh Update trong ADO

Liên hệ QC

khanhhero

Thành viên hoạt động
Tham gia
28/7/11
Bài viết
144
Được thích
36
Em có viết câu lệnh để update max value từ sheet GL sang sheet2, nhưng hiện tại đang bị báo lỗi. Nhờ mọi người xem giúp em bị lỗi chỗ nào với ạ.
Em cám ơn mọi người.

Mã:
Sub Update()

Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection

Dim strcnn As String
Dim sqlstr As String

strcnn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel 12.0"
cnn.Open strcnn
    
    sqlstr = "UPDATE A" & _
             " SET A.So_Tien = B.sMax" & _
              " FROM [Sheet2$E1:F5] as A" & _
                  " INNER JOIN" & _
                     " (SELECT Ma_CT, Max(Amount) as sMax FROM [GL$H1:I7] GROUP BY MA_CT) as B" & _
                  "ON A.Ma_TK = B.Ma_CT"


cnn.Execute sqlstr

cnn.Close
Set cnn = Nothing
End Sub

221329
 
thiếu khoảng trắng.
......As B" _
"ON
A.Ma_TK=B.Ma_CT
 
Câu lệnh INNER JOIN của bạn sai rồi. Sửa cách này thử xem.

Mã:
sqlstr = "UPDATE A" & _
             " SET A.So_Tien = B.sMax" & _
             " FROM [Sheet2$E1:F5] as A" & _
             " INNER JOIN (SELECT Ma_CT, Max(Amount) as sMax FROM [GL$H1:I7] As B GROUP BY MA_CT) B" & _
             " ON A.Ma_TK = B.MA_CT"
 
Lần chỉnh sửa cuối:
Em gửi file nhờ mọi người xem hộ giúp em với ạ. Em cám ơn ạ. :)
Mã:
Sub Update()
'On Error Resume Next

Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
'Dim rs As New ADODB.Recordset

Dim strcnn As String
Dim sqlstr As String

strcnn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel 12.0"
cnn.Open strcnn
   
    sqlstr = "UPDATE A" & _
             " SET A.So_Tien = B.sMax" & _
             " FROM [Sheet2$E1:F5] as A" & _
             " INNER JOIN (SELECT Ma_CT, Max(Amount) as sMax FROM [GL$H1:I7] GROUP BY MA_CT) as B" & _
             " ON A.Ma_TK = B.MA_CT"


cnn.Execute sqlstr


cnn.Close
Set cnn = Nothing
End Sub
 

File đính kèm

  • TEST.xlsb
    17.2 KB · Đọc: 10
Em gửi file nhờ mọi người xem hộ giúp em với ạ. Em cám ơn ạ. :)
Mã:
Sub Update()
'On Error Resume Next

Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
'Dim rs As New ADODB.Recordset

Dim strcnn As String
Dim sqlstr As String

strcnn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel 12.0"
cnn.Open strcnn
  
    sqlstr = "UPDATE A" & _
             " SET A.So_Tien = B.sMax" & _
             " FROM [Sheet2$E1:F5] as A" & _
             " INNER JOIN (SELECT Ma_CT, Max(Amount) as sMax FROM [GL$H1:I7] GROUP BY MA_CT) as B" & _
             " ON A.Ma_TK = B.MA_CT"


cnn.Execute sqlstr


cnn.Close
Set cnn = Nothing
End Sub
Lỗi cú pháp, với lại trong Excel ADO không dùng được câu lệnh update với subquery là câu lệnh truy vấn gộp.
 
thay vì update thì bạn dùng left join rồi fill lại là được.
 
Web KT

Bài viết mới nhất

Back
Top Bottom