-
Câu lệnh SQL không chạy khi thay giá trị bằng ô được đặt tên sẵn
Đình Phán > 25-03-23, 10:59 PM
Chào các anh, chị.
Mã:Public Sub Search_Debit()
Dim MyCnn As Object
Dim MyRs As Object
Dim MySQL As String
Application.ScreenUpdating = False
Set MyCnn = CreateObject("ADODB.Connection")
Set MyRs = CreateObject("ADODB.Recordset")
'ConnectionString Excel *xlsb
'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myBinaryExcel2007file.xlsb;Extended Properties="Excel 12.0;HDR=YES";
MyCnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=YES"";"
'MySQL = "SELECT [Ngay_Thang],[So_Tien],[Dien_Giai] FROM [Debit$A:E] WHERE ((([Tai_Khoan] like " & [Account] & ") AND ([Ma_Doi_Tuong] like ""B"") AND ([Ngay_Thang] BETWEEN #" & [Date_1] & "# AND #" & [Date_2] & "#)));"
MySQL = "SELECT [Ngay_Thang],[So_Tien],[Dien_Giai] FROM [Debit$A:E] WHERE ((([Tai_Khoan] like " & [Account] & ") AND ([Ma_Doi_Tuong] like " & [MET] & ") AND ([Ngay_Thang] BETWEEN #" & [Date_1] & "# AND #" & [Date_2] & "#)));"
MyRs.Open MySQL, MyCnn
Sheets("Search").Range("A9:E1000").ClearContents
Sheets("Search").Range("B9").CopyFromRecordset MyRs
MyCnn.Close
Set MyRs = Nothing
Set MyCnn = Nothing
Application.ScreenUpdating = True
End Sub
Em có thực hiện kết nối đến excel và gọi dữ liệu từ 1 sheet, các biến em đã đặt tên, tuy nhiên với Biến Đối tượng, khi thay bằng giá trị đặt tên thì báo lỗi, em ko tìm ra lỗi ở đâu.
Với đợn MySQL ở trên thì chạy được, giờ em muốn giá trị ô đó động nên có đặt tên là MET, nhưng thay vào thành MySQL bên dưới thì lỗi.
Mong các anh, chị trợ giúp
em cảm ơn. -
RE: Câu lệnh SQL không chạy khi thay giá trị bằng ô được đặt tên sẵn
Đình Phán > 25-03-23, 11:17 PM
(25-03-23, 10:59 PM)Đình Phán Đã viết: Chào các anh, chị.
Mã:Public Sub Search_Debit()
Dim MyCnn As Object
Dim MyRs As Object
Dim MySQL As String
Application.ScreenUpdating = False
Set MyCnn = CreateObject("ADODB.Connection")
Set MyRs = CreateObject("ADODB.Recordset")
'ConnectionString Excel *xlsb
'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myBinaryExcel2007file.xlsb;Extended Properties="Excel 12.0;HDR=YES";
MyCnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=YES"";"
'MySQL = "SELECT [Ngay_Thang],[So_Tien],[Dien_Giai] FROM [Debit$A:E] WHERE ((([Tai_Khoan] like " & [Account] & ") AND ([Ma_Doi_Tuong] like ""B"") AND ([Ngay_Thang] BETWEEN #" & [Date_1] & "# AND #" & [Date_2] & "#)));"
MySQL = "SELECT [Ngay_Thang],[So_Tien],[Dien_Giai] FROM [Debit$A:E] WHERE ((([Tai_Khoan] like " & [Account] & ") AND ([Ma_Doi_Tuong] like " & [MET] & ") AND ([Ngay_Thang] BETWEEN #" & [Date_1] & "# AND #" & [Date_2] & "#)));"
MyRs.Open MySQL, MyCnn
Sheets("Search").Range("A9:E1000").ClearContents
Sheets("Search").Range("B9").CopyFromRecordset MyRs
MyCnn.Close
Set MyRs = Nothing
Set MyCnn = Nothing
Application.ScreenUpdating = True
End Sub
Em có thực hiện kết nối đến excel và gọi dữ liệu từ 1 sheet, các biến em đã đặt tên, tuy nhiên với Biến Đối tượng, khi thay bằng giá trị đặt tên thì báo lỗi, em ko tìm ra lỗi ở đâu.
Với đợn MySQL ở trên thì chạy được, giờ em muốn giá trị ô đó động nên có đặt tên là MET, nhưng thay vào thành MySQL bên dưới thì lỗi.
Mong các anh, chị trợ giúp
em cảm ơn.
Em xin bổ sung thêm là nếu giá trị tại ô MET đánh dạng số (ví dụ 123) và bên Sheet Debit cũng 123 thì code chạy bình thường.
Còn đánh dạng text, string thì không được.
Em không hiểu nổi chỗ này -
RE: Câu lệnh SQL không chạy khi thay giá trị bằng ô được đặt tên sẵn
ongke0711 > 26-03-23, 11:32 AM
(25-03-23, 11:17 PM)Đình Phán Đã viết: ... AND ([Ma_Doi_Tuong] like " & [MET] & ") AND ...;"
Đơn giản là đối với tham số dạng Text thì phải có dấu nháy đơn bao quanh nó, còn dạng Number thì không cần.
Do đó dữ liệu một cột nó phải chuẩn hết, số hoặc Text, không được cả hai.
Tôi cũng không hiểu bạn truyền tham số vào chuỗi sql với dấu ngoặc vuông [..] để làm gì? Chưa kể tham số không tham chiếu rõ như: Me.txt.MET....
Mã PHP:... AND ([Ma_Doi_Tuong] like '" & [MET] & "') AND ...;"