Đá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 26 4,330 05-06-17, 02:05 AM
Bài mới nhất: MTNQ
  [Help] Bẫy lỗi tiếng Việt trùng dữ liệu khi bấm nút Lưu trên Form ongke0711 7 357 12-05-17, 07:10 PM
Bài mới nhất: maidinhdan
  Thiết lập tham số nhập liệu và báo cáo feeling 3 191 30-04-17, 03:09 AM
Bài mới nhất: tranthanhan1962
Question V/v Cách tạo phiếu xuất thứ tự theo từng ngày vuga 1 216 04-01-17, 06:38 PM
Bài mới nhất: maidinhdan
  [Help] Thiết kế form nhập và lưu trữ dữ liệu theo yêu cầu brianhuynh 16 1,061 20-10-16, 10:54 PM
Bài mới nhất: brianhuynh

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ơ