Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Help] Trích xuất dữ liệu
#21
- Báo lỗi do kết nối query của bạn có thêm tham số điều kiện. Để OpenRecordset là 1 Query có điều kiện phải làm cách khác chứ không Open như Table (thuần tuý Select Query không có đk thì mở được, không báo lỗi).
- Để OpenRecordset là 1 Query có điều kiện thì có 2 cách:
Cách 1: Chạy Query bằng câu lệnh SQL. Cách này thường dùng.
- Bạn để ý cách truyền tham số sau dấu "&".
- Tại sao có lệnh rs.MoveFirst? Vì Query này của bạn có thể trả về nhiều dòng, do vậy để cập nhật tất cả các dòng bạn phải cho con trỏ di chuyển về dòng đầu tiên của Recordset, sau đó update, sau đó di chuyển qua dòng kế tiếp (rs.MoveNext) và update. Lặp lại hoạt động này cho đến khi đến dòng cuối của Recordset thì ngưng (rs.EOF).
- Có trường hợp Recordset trả về không có dòng nào thì chương trình sẽ báo lỗi do vậy thêm dòng lệnh If rs.RecordCount>0...
 
Mã PHP:
Dim rs As DAO.RecordsetstrSQL As String
   strSQL 
"SELECT Nhaphoso.SoQD, Nhaphoso.NgayKetqua, Nhaphoso.Nguoicocong, Nhaphoso.Nguoihuonghangthang, Nhaphoso.Nguoihuongmotlan, Nhaphoso.Xa, Nhaphoso.Huyen, Nhaphoso.LoaiHS, Nhaphoso.Doituong, Nhaphoso.NguoiGQ, Nhaphoso.Ngaynhan, Nhaphoso.GhichuKQ " _
           
"FROM Nhaphoso " _
           
"WHERE Nhaphoso.SoQD Is Not Null AND Nhaphoso.Doituong = '" & [Forms]![frmlocloaihoso]![cbolocdoituongtg] & "' AND Nhaphoso.Ngaynhan BETWEEN #" & [Forms]![frmlocloaihoso]![txtngaydau] & "# And #" & [Forms]![frmlocloaihoso]![txtngaysau] & "#"
   Set rs CurrentDb.OpenRecordset(strSQLdbOpenDynaset)
   If rs.RecordCount 0 Then
       rs
.MoveFirst
   Else
       Exit Sub
   End 
If
   With rs
       Do Until 
.EOF
           
.Edit
           
!GhichuKQ = !GhichuKQ "-" Me.txtngaydau
           
.Update
           
.MoveNext
       Loop
   End With
   rs
.Close
   Set rs 
Nothing 

Cách 2: sử dụng Query đã tạo sẳn (như "qrybaocaotheothoigian" của bạn). 
- Vì Query này có lấy 2 tham số từ form nên khi OpenRecordset từ query này phải khai báo lại tham số điều kiện.
Mã PHP:
Dim rs As DAO.Recordsetqdf As QueryDefprm As Parameter
    Set qdf 
CurrentDb.QueryDefs("qrybaocaotheothoigian")
   For Each prm In qdf.Parameters
       prm
.Value = Eval(prm.Name)
   Next
   Set rs 
qdf.OpenRecordset(dbOpenDynaset)
   If rs.RecordCount 0 Then
       rs
.MoveFirst
   Else
       Exit Sub
   End 
If
   With rs
       Do Until 
.EOF
           
.Edit
           
!GhichuKQ = !GhichuKQ "-" Me.txtngaydau
           
.Update
           
.MoveNext
       Loop
   End With
   rs
.Close
   Set rs 
Nothing 
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn maidinhdan


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Hướng Dẫn Cách lưu (back up database) dữ liệu! danhxetnghiem 36 6,332 03-12-17, 12:13 PM
Bài mới nhất: MTNQ
  [Hỏi] Xin hỏi về cách trích thông tin từ một chuỗi Thiên Hùng 5 139 13-11-17, 11:33 AM
Bài mới nhất: cpucloi
  [Help] Nhiều người truy cập cùng một dữ liệu import từ Excel nap0le0n 5 180 26-10-17, 12:08 AM
Bài mới nhất: tranthanhan1962
  Về các field (cột dữ liệu) có kiểu là OLE Object lehongduc 2 228 28-08-17, 08:25 AM
Bài mới nhất: lehongduc
  [Hỏi] Sao lưu file MDB và tạo lệnh phục hồi dữ liệu hoangminh 5 371 17-08-17, 03:54 PM
Bài mới nhất: cpucloi

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ