-
RE: SQL trong VBA chạy không đúng!
NguyenDungAnh > 06-09-18, 11:11 PM
(06-09-18, 09:34 PM)ongke0711 Đã viết: Khi khai báo biến mảng không biết trước kích thước bạn có thể khai báo mảng động sau đó sẽ khai báo kích thước cố định sau đó.
Vd:
Dim arr() As Variant
...
Sau khi biết số dòng (RecordCount) thì khai báo lại.
...
Redim arr(số dòng).
....
Lưu ý: sau khi xử lý xong nên giải phóng biến khỏi bộ nhớ
Erase arr
Về việc xuống dòng khi câu lênh dài trong VBA, có 2 kiểu tuỳ thói quen người lập trình:
C1:
sSQL="SELECT * FROM Table1 " & _ --> dấu nháy kép cách ký tự cuối 1 khoảng trắng + dấu cách + & + dấu cách + _
"WHERE Table1.ID = 'NV001' " & _
"GROUP BY Table1.ID"
C2:
sSQL="SELECT * FROM Table1 " _ --> dấu nháy kép cách ký tự cuối 1 khoảng trắng + dấu cách + _
& "WHERE Table1.ID = 'NV001' " _
& "GROUP BY Table1.ID"
Cám ơn bác nhiều -
RE: SQL trong VBA chạy không đúng!
ongke0711 > 07-09-18, 12:56 AM
(06-09-18, 06:19 PM)NguyenDungAnh Đã viết: Được rồi các bác ạ, em thêm mỗi cái rs.movelast vào trước cái rs.count là ok
Còn vụ này quên nói.
Cái rs.MoveLast này chỉ để cái RecordCount nó đếm đúng thôi nhưng trong code trên của bạn nó sẽ báo lỗi nếu như rs trả về không có record nào (lỗi No Current record).
Do đó nên bẫy lỗi trước.
Set rs = db.OpenRecordset (.........)
If rs.EOF or rs.BOF Then
Msgbox "Không có dữ liệu."
Exit Sub
End If
rs.MoveLast
rs.MoveFirst
rs.RecordCount -
RE: SQL trong VBA chạy không đúng!
NguyenDungAnh > 07-09-18, 10:44 AM
Vâng em có tham khảo bài của bác dan rồi