Tham chiếu điều kiện của Query đến 1 biến trong Access?

Liên hệ QC
Lý do là không phải chỉ có xem thôi mà khi duyệt các Record thì đồng thời phải lấy được mã số của chứng từ của dòng kết quả. Khi phát hiện sai sót không phải thoát ra mà nhấn phím chức năng (F1-12) hay nhấp đúp vào dòng đó phải mở lại chứng từ đó để sửa chữa. Nếu nhấn Enter mở chi tiết cấp 2. Đây là cơ chế quản trị dữ liệu Drill-Down rất được ưa thích.

Chính trên Form Datasheet view, ta mới có thể dùng phím chức năng F1-12 để mở form nhập liệu hoặc mở form chi tiết cấp 2. Đó là dùng event Keydown. Thí dụ

PHP:
Sub txt1_KeyDown (KeyCode As integer)
If Keycode = vbKeyF3 Then 
StDocName = "Nhaplieu"
StLinkCriteria = "SoCT = Forms!Form1.txt1"
Docmd.OpenForm StDocName, StLinkCriteria, AcEdit
End If
End Sub

Hơn nữa, trong các phần mềm kế toán hiện nay đều có 2 chức năng xem và in sổ sách (Thêm cả chuyển đỏi dữ liệu sang Excel chẳng hạn). Nhưng nếu xem bằng Printview thì hiện nay ít dùng và người sd không chấp nhận được

Gán chuỗi Filter trong sự kiện Report_Open có tác dụng đối với cả các lệnh in. Nhớ lại, Preview và Print đều cùng lệnh DoCmd.OpenReport, chỉ khác argument là acViewNormal hay acViewPreview.

Export ra Excel dùng câu lệnh khác nhưng cũng có tác dụng.

Cơ bản là: Đã dùng biến Public thay cho câu lệnh SQL trong VBA và không cần tạo Query lọc trên lưới, đạt yêu cầu ban đầu của topic. (Không dùng cột phụ)
 
Lần chỉnh sửa cuối:
File minh hoạ cho ý tưởng trên:

1. Từ form startup, gọi form3, đó là Datasheet View Form. Có thể Filter, Sort, Find trên form này như Open Query vậy

2. Từ Form3, nhấn F3 trong trường "So" tại record bất kỳ, sẽ mở Form nhập liệu tại đúng record đó để hiệu chỉnh.

3. Từ form startup, gọi form2 bằng nút "xem báo cáo". Form2 mở lên trong khi biên thg đã có giá trị từ Form1, nên vẫn hoạt động cho các report.

4. Các report có thể preview, Print, Export ra Excel theo đúng điều kiện filter mà trước đó ta đã gán cho report trong sub Report_Open.

5. Có thể thử với các report khác với DataSource khác.

Không biết Sealand còn yêu cầu nào khác không, chứ theo như chủ đề ban đầu của topic này thì đạt rồi.
 

File đính kèm

  • Hoi Ptm.rar
    114.2 KB · Đọc: 120
Một lần nữa cám ơn sự quan tâm của các bạn, về kỹ thuật thì tốt rồi giờ là việc phải biến nó thành của mình nữa.
Thân Sealand
 
Thầy ơi cho em hỏi thêm xíu,

Ở ví dụ của Thầy nếu như ở From1 em muốn mở From3 lên với điều kiện số tháng >=2 thì em phải làm thế naò?
em thử đổi trong Combo box Row source 2 thành >=2 nhưng không được,

Xin cám ơn Thầy,
 
Phải có 3 combobox:
1 combobox có rowsource ={"=", ">", "<", "All", "Between")
1 combobox chọn tháng, luôn luôn hiện trừ khi combobox 1 chọn All
1 combobox cũng chọn tháng, luôn luôn ẩn, trừ khi combobox 1 chọn Between

Sau đó set FilterOn của Form hoặc subForm = Yes, và Filter là 1 chuỗi nối combobox 1, combobox 2 (và combobox 3 nếu between)
 
File Minh hoạ việc chọn tháng theo ý muốn:

Select1.jpg


select2.jpg


Select3.jpg
 

File đính kèm

  • Hoi Ptm.rar
    126.2 KB · Đọc: 56
Lần chỉnh sửa cuối:
Thầy xem giúp em trong file đính kèm ở Form4 có 2 nút option

nếu chọn option1 thì trong query "Q01" với điều kiện [thang]=2

nếu chọn option còn lại thì điều kiện [thang]>2

em loay hoay mãi mà hok được, nhờ Thầy chỉ giúp,
em cám ơn Thầy,
 

File đính kèm

  • Hoi Ptm.rar
    143 KB · Đọc: 16
Bạn đang Open Query chứ không phải Open Form.
Open query thì không set filter kiểu như set property cho form được.
 
Dạ, đúng là yêu cầu là muốn thay đổi điều kiện trong query, vì em muốn sử dụng 1 query đó cho 2 report cùng tính chất (tương ứng với điều kiện =2 và >2).

Vì đó là query nguồn và sau đó nhiều query khác sử dụng tiếp nó, để hạn chế số lượng query tồn tại nên em muốn chỉ cần thay đổi điều kiện để chạy report tương ứng, Thầy có giải pháp nào hướng dẫn giúp em.
Em cám ơn Thầy
 
Sao bạnkhông dùng form có sẵn (Form 3), datasheet view thì y như query vậy? Form 1 và form 3 đạt hết mọi yêu cầu của bạn, chỉ sửa form1 thành checkbox thay vì combobox. Tất nhiên là không đụng đến query nguồn mà chỉ filter bằng biến lấy từ form.
 
Thầy ơi nếu sử dụng Form3 thì Form3 có dùng làm nguồn tạo các query khác được không thầy,

vì sau khi đặt điều kiện lọc em được Query1

từ Query1 với điều kiện A , loại một số trường hợp trong Query1 bằng cách lấy [giá trị]*(-1) em được Query2

tương tự từ Query1 vơi điều kiện B , loại một số trường hợp trong Query1 bằng cách lấy [giá trị]*(-1) em được Query3

sau đó em dùng Union để kết (Query1, Query2 và Query3) lại với nhau tạo Query4 là được tổng sau cùng em cần,

và sau đó em update Query4 này vào 1table,

Thầy xem giúp em,
 
Tôi không hiểu "lấy [giá trị]*(-1) " nghĩa là gì?
Tuy nhiên, lọc ra 3, 4 query khác nhau, rồi Union lại, đó là 1 vấn đề hoàn toàn khác, ra khỏi phạm vi của topic này. Topic này là chỉ xử lý 1 query có sẵn, lọc và cho hiển thị lên form hoặc lên report. Với yêu cầu của chủ topic là không dùng SQL, không lọc trước bằng query.

Bạn nên mở 1 topic mới cho vần đề của bạn (nhớ nói rõ chi tiết hơn và giải thích "lấy [giá trị]*(-1)" là gì).
 
Web KT
Back
Top Bottom