-
Cho mình hỏi cách tạo report động theo ngày
BayVeo > 07-12-16, 06:30 PM
1. Có một query tên Q_ngaynhap với câu SQL:
SELECT T_nhaphang.Ma_nhap_hang, T_nhaphang.MaSP, T_nhaphang.TenSP, T_nhaphang.So_luong, T_nhaphang.HanSD, T_nhaphang.Gia, T_nhaphang.Ngay_nhap
FROM T_nhaphang
WHERE ((T_nhaphang.Ngay_nhap >= tungay) AND (T_nhaphang.Ngay_nhap <= dengay));
2. Report tên R_ngaynhap có data source Q_ngaynhap
3. Form:
Text_tungay (textbox với format là shortdate)
Text_denngay (textbox với format là shortdate)
một nút OK và nút Thoát
4. Code xử lí nút OK
Private Sub cmd_OK_Click()
On Error GoTo loi
Dim st
Dim db As Database, Qr As QueryDef
Dim tungay, denngay As Date
tungay = Text_tungay
denngay = Text_denngay
st = "SELECT T_nhaphang.Ma_nhap_hang, T_nhaphang.MaSP, T_nhaphang.TenSP, T_nhaphang.So_luong, T_nhaphang.HanSD, T_nhaphang.Gia, T_nhaphang.Ngay_nhap FROM T_nhaphang WHERE ((T_nhaphang.Ngay_nhap >= tungay) AND (T_nhaphang.Ngay_nhap <= dengay));"
Set db = CurrentDb
Set Qr = db.QueryDefs("Q_nhapngay")
Qr.SQL = st
Qr.Close
Set db = Nothing
DoCmd.OpenReport "R_nhapngay", acViewPreview
DoCmd.Maximize
Exit Sub
loi:
Select Case Err.Number
Case Else
MsgBox "Loi: " & Err.Number & " - " & Err.Description
End Select
End Sub
Kết quả:
1. Hiển thị dialog bắt nhập biến tungay và denngay mặc dù trong form mình đã chọn giá trị cho hai textbox này
2. Report không hiển thị data
Code sai chỗ nào mong anh em chỉ giúp ạ. Chân thành cám ơn!!! -
RE: Cho mình hỏi cách tạo report động theo ngày
maidinhdan > 07-12-16, 09:09 PM
(07-12-16, 06:30 PM)BayVeo Đã viết: 1. Có một query tên Q_ngaynhap với câu SQL:
SELECT T_nhaphang.Ma_nhap_hang, T_nhaphang.MaSP, T_nhaphang.TenSP, T_nhaphang.So_luong, T_nhaphang.HanSD, T_nhaphang.Gia, T_nhaphang.Ngay_nhap
FROM T_nhaphang
WHERE ((T_nhaphang.Ngay_nhap >= tungay) AND (T_nhaphang.Ngay_nhap <= dengay));
2. Report tên R_ngaynhap có data source Q_ngaynhap
3. Form:
Text_tungay (textbox với format là shortdate)
Text_denngay (textbox với format là shortdate)
một nút OK và nút Thoát
4. Code xử lí nút OK
Private Sub cmd_OK_Click()
On Error GoTo loi
Dim st
Dim db As Database, Qr As QueryDef
Dim tungay, denngay As Date
tungay = Text_tungay
denngay = Text_denngay
st = "SELECT T_nhaphang.Ma_nhap_hang, T_nhaphang.MaSP, T_nhaphang.TenSP, T_nhaphang.So_luong, T_nhaphang.HanSD, T_nhaphang.Gia, T_nhaphang.Ngay_nhap FROM T_nhaphang WHERE ((T_nhaphang.Ngay_nhap >= tungay) AND (T_nhaphang.Ngay_nhap <= dengay));"
Set db = CurrentDb
Set Qr = db.QueryDefs("Q_nhapngay")
Qr.SQL = st
Qr.Close
Set db = Nothing
DoCmd.OpenReport "R_nhapngay", acViewPreview
DoCmd.Maximize
Exit Sub
loi:
Select Case Err.Number
Case Else
MsgBox "Loi: " & Err.Number & " - " & Err.Description
End Select
End Sub
Kết quả:
1. Hiển thị dialog bắt nhập biến tungay và denngay mặc dù trong form mình đã chọn giá trị cho hai textbox này
2. Report không hiển thị data
Code sai chỗ nào mong anh em chỉ giúp ạ. Chân thành cám ơn!!!
Sai chỗ này: Qr.SQL = st
Kết luận dù cho sửa đúng thì nó cũng không ra kết quả, Lý do. hàm queryDefs của bạn chẳng có ý nghĩa gì cả, bởi cú pháp st y chang Q_ngaynhap thế thì bạn chỉ cần 1 dòng đủ: DoCmd.OpenReport "R_nhapngay", acViewPreview
* Tôi giả sử không có Q_ngaynhap: thì lúc đó mới sử dụng QueryDefs, còn sử dụng như thế nào thì như bạn làm và có chỉnh 1 chút như sau:
* Ghi chú: đây là cú pháp tạo ra queryMã PHP:Dim st as String
qr As QueryDef
st = "SELECT * FROM T_nhaphang WHERE Ngay_nhap >= tungay AND Ngay_nhap <= dengay;"
Set qr = CurrentDB.CreateQueryDef("Q_ngaynhap", st)
qr.Execute
qr.Close
DoCmd.OpenReport "R_nhapngay", acViewPreview
DoCmd.Maximize
- Ở sự kiện Close_Report bạn sẽ cho xóa cái Q_ngaynhap bằng cú pháp
Mã PHP:CurrentDb.QueryDefs.Delete "Q_ngaynhap"
Chỉ có vài dòng như vậy