yamakashi2003 > 08-10-20, 12:55 AM
(03-10-20, 05:04 PM)ongke0711 Đã viết:Bác ơi, e, tạo 1 nút báo cáo theo cách lọc trục tiep trên subform, và 1 nút tìm kiếm trên form bằng textbox(03-10-20, 01:59 PM)yamakashi2003 Đã viết:Trích dẫn:- Thứ hai, bạn muốn chạy Report có nguồn từ cái Datasheet Form vừa được lọc (filtered) thì cần gì phải qua bước tạo Table tạm chi cho mất thời gian, bộ nhớ, bạn lấy thẳng nguồn của Datasheet Form là Record Souce cho Report luôn.
Code cho nút lệnh "In report": sau khi bạn đã lọc, sort các kiểu trên Subform Datasheet.
Mã PHP:DoCmd.OpenReport "rptABC", acViewPreview, , Me.sfmABC.Form.Filter, acWindowNormal
Đối với Report: lấy nguồn từ Subform
Mã PHP:Private Sub Report_Open(Cancel As Integer)
Me.RecordSource = Forms![frmMainABC]![sfmABC].Form.RecordSource
End Sub
yamakashi2003 > 08-10-20, 07:45 PM
tranthanhan1962 > 08-10-20, 09:20 PM
yamakashi2003 > 09-10-20, 01:05 AM
(08-10-20, 09:20 PM)tranthanhan1962 Đã viết: Hình như tôi có hướng dẫn cách tham chiếu đối tượng trên form, nhất là sub form bằng cách tạo một query tạm rồi vào Build...Bác ơi em thử sửa lại vào file em gửi ở trên thì vẫn bị lỗi đó mà bác,
--> Expression Build --> Expression elements, sao đó tìm đến form --> subform thuộc form --> Expression Categories và Expression Values tìm đúng yêu cầu đối tượng tham chiếu sau đó đưa vào code (có ảnh đầy đủ, bạn có thể tim lại bài hướng dẫn này để nắm rõ hơn).
Về phần đoạn code của bạn:
DoCmd.OpenReport "R_ChitietHang", acViewPreview, , Me.SF_ChitietHang.Form.Filter, acWindowNormal
Ban sử dụng tham chiếu Me.SF_ChitietHang.Form để tham chiếu đến sub form là sai. Me.SF_ChitietHang là tham chiếu đến cái control Subform/Subreport đang chứa form F_ChitietHang và cái này chắc chắn không có thuộc tính Filter, do đó nó báo lỗi là dương nhiên. Nếu làm theo cách của tôi bạn sẽ thấy đối tượng tham chiếu sẽ là Forms![F_BaoCao]![SF_ChitietHang].Form.Filter và bạn chỉ cần thay thế Me.SF_ChitietHang.Form.Filter = Forms![F_BaoCao]![SF_ChitietHang].Form.Filter
DoCmd.OpenReport "R_ChitietHang", acViewPreview, , Forms![F_BaoCao]![SF_ChitietHang].Form.Filter, acWindowNormal
Lúc này nó sẽ chạy ngon lành và không còn báo lỗi.
ongke0711 > 09-10-20, 08:58 AM
(08-10-20, 12:55 AM)yamakashi2003 Đã viết: Bác ơi, e, tạo 1 nút báo cáo theo cách lọc trục tiep trên subform, và 1 nút tìm kiếm trên form bằng textbox
nếu trước đó em lọc trực tiếp bằng subform thì chạy ra báo cáo ok,
nhưng nếu em có nhấn vào nút tìm kiếm mà rồi mới chạy báo cáo thì nó hiện ra hộp thoại paramenter và không ra được kết quả lọc ạ
Dim qd As DAO.QueryDef
Set qd = CurrentDb.QueryDefs("qryABC")
qd.SQL = "SELECT ... FROM ... WHERE ..."
tranthanhan1962 > 09-10-20, 11:38 AM
(09-10-20, 01:05 AM)yamakashi2003 Đã viết: Bác ơi em thử sửa lại vào file em gửi ở trên thì vẫn bị lỗi đó mà bác,Form accdb có đặt điểm là đôi khi nhớ điều kiện lọc cũ. Lỗi trên do khi bạn lọc lần trước form vẫn nhớ điều kiện lọc nhưng lần kế tiếp nó không thấy giá trị lọc ở điều kiện đó. Khi lỗi xảy ra nếu bạn mở form ở chế độ design bạn sẽ thấy trong propeties/Data/Filter sẽ có một đoạn biểu thức lọc, mặc dù bạn chưa từng làm điều gì ở đó. Khi xóa biểu thức này form sẽ hoạt động lại bình thường. Nhưng chẳng lẽ mỗi lần lỗi lại mở design để xử lý điều này. Cách xử lý:
vẫn hiện ra cái paramenter
Lỗi này chỉ xảy ra khi em ấn nút tìm kiếm trước, xong rồi lọc subform rồi ấn nút chạy report
nếu không ấn nút đó thì lọc (sort) subform rồi chạy report vô tư ạ
yamakashi2003 > 12-10-20, 12:07 PM
(09-10-20, 11:38 AM)tranthanhan1962 Đã viết:Bác ơi cách của bác em có thử thì lại có 2 thông báo lỗi,(09-10-20, 01:05 AM)yamakashi2003 Đã viết: Bác ơi em thử sửa lại vào file em gửi ở trên thì vẫn bị lỗi đó mà bác,Form accdb có đặt điểm là đôi khi nhớ điều kiện lọc cũ. Lỗi trên do khi bạn lọc lần trước form vẫn nhớ điều kiện lọc nhưng lần kế tiếp nó không thấy giá trị lọc ở điều kiện đó. Khi lỗi xảy ra nếu bạn mở form ở chế độ design bạn sẽ thấy trong propeties/Data/Filter sẽ có một đoạn biểu thức lọc, mặc dù bạn chưa từng làm điều gì ở đó. Khi xóa biểu thức này form sẽ hoạt động lại bình thường. Nhưng chẳng lẽ mỗi lần lỗi lại mở design để xử lý điều này. Cách xử lý:
vẫn hiện ra cái paramenter
Lỗi này chỉ xảy ra khi em ấn nút tìm kiếm trước, xong rồi lọc subform rồi ấn nút chạy report
nếu không ấn nút đó thì lọc (sort) subform rồi chạy report vô tư ạ
1/ Tự động xóa nhớ bộ lọc trên form (nếu có):
Private Sub Command12_Click()
'DoCmd.OpenReport "R_ChitietHang", acViewPreview, , Me.SF_ChitietHang.Form.Filter, acWindowNormal
DoCmd.OpenReport "R_ChitietHang", acViewPreview, , Forms![F_BaoCao]![SF_ChitietHang].Form.Filter, acWindowNormal
Forms![F_BaoCao]![SF_ChitietHang].Form.FilterOn = False (đoạn code này thêm vào để bỏ lọc trên form)
End Sub
2/ Khởi động lại bộ lọc form
Private Sub btnTim_Click()
Forms![F_BaoCao]![SF_ChitietHang].Form.FilterOn = true
Dim STRSQL As String
Select Case FR_DKTK
...
OK!
tranthanhan1962 > 12-10-20, 02:15 PM
yamakashi2003 > 12-10-20, 11:41 PM
(12-10-20, 02:15 PM)tranthanhan1962 Đã viết: Gởi bạn Demo tôi chỉnh sửa từ file của bạn. Trên máy tôi nó hoạt đông ổn định, bình thường cho dù lọc rồi báo cáo hay báo cáo rồi lọc cũng không hỏi tham số parameter. Nếu trên máy bạn nó vẫ đòi tham số thì bó tay.Em bật file này ở máy khác vẫn lỗi ạ,
tranthanhan1962 > 13-10-20, 01:15 AM