aitinh2005
Thành viên mới

- Tham gia
- 6/8/07
- Bài viết
- 7
- Được thích
- 0
Đó hỏi: Trong kho chứa nhiều kiện hàng, trong mỗi kiện hàng có nhiều loại hàng khác nhau. Mỗi kiện hàng có mã số riêng, khi nhập kho đã được theo dõi mã số kiện, số lượng từng loại hàng trong từng kiện theo thời gian nhập khác nhau. Bây giờ tôi muốn tạo một form để lọc và cập nhật dữ liệu như sau: khi xuất các kiện hàng bất kỳ (nhiều kiện một lần), chỉ cần gõ mã số của các kiện vào text box, sau đó nhấn nút "Lọc" là tất cả tên hàng, số lượng của từng loại hàng được lọc tương ứng theo mã số kiện và thể hiện số liệu trên form. Tôi đã làm được phần lọc cho một kiện hàng nhưng ở đây tôi muốn gõ liên tục nhiều kiện hàng vào một text box và lọc một lần cho nhanh thì phải viết mã lệnh ra sao? Xin e-CHÍP chỉ một vài cách. <yaya21012005@>
Đây trả lời:
Bạn có thể sử dụng query với hàm InStr như trong ví dụ sau đây. Ví dụ này lọc các khách hàng có nội dung field CustomerID (của table Customers trong database Nwind.MDB của Access) được liệt kê trong text box có tên txtLoc.
Giả sử bạn thiết kế form có tên frmLocTheoDanhSachCustomerID, vẽ một text box có tên txtLoc. Bạn thiết kế query lọc có tên qryLocTheoDanhSachCustomerID với nội dung lệnh SQL như sau:
SELECT Customers.*
FROM Customers
WHERE (((InStr([Forms]![frmLocTheoDanhSachCustomerID]![txtLoc],[CustomerID]))>0));
Bạn vẽ thêm một nút lệnh có tên cmdLoc, rồi gõ lệnh sau đây vào thủ tục xử lý tình huống Click:
Private Sub cmdLoc_Click()
DoCmd.OpenQuery "qryLocTheoDanhSachCustomerID"
End Sub
Với cách này, người sử dụng có thể gõ dữ liệu lọc với phân cách tùy ý, không phân biệt chữ thường hay chữ hoa (hình 1) mà vẫn có kết quả như ý (hình 2). Tùy ứng dụng của bạn mà áp dụng như cách trên.
Hình 1: Form cần thiết kế
Hình 2: Nội dung lọc được
đây là 1 chương trinh đã có sẵn.
cau hoi: trong muc Customer ID can loc ta gõ: chop, bol, cact, beg
thi ta sẽ phai làm nhu thế nào?
xin các bạn chỉ giúp
Đây trả lời:
Bạn có thể sử dụng query với hàm InStr như trong ví dụ sau đây. Ví dụ này lọc các khách hàng có nội dung field CustomerID (của table Customers trong database Nwind.MDB của Access) được liệt kê trong text box có tên txtLoc.
Giả sử bạn thiết kế form có tên frmLocTheoDanhSachCustomerID, vẽ một text box có tên txtLoc. Bạn thiết kế query lọc có tên qryLocTheoDanhSachCustomerID với nội dung lệnh SQL như sau:
SELECT Customers.*
FROM Customers
WHERE (((InStr([Forms]![frmLocTheoDanhSachCustomerID]![txtLoc],[CustomerID]))>0));
Bạn vẽ thêm một nút lệnh có tên cmdLoc, rồi gõ lệnh sau đây vào thủ tục xử lý tình huống Click:
Private Sub cmdLoc_Click()
DoCmd.OpenQuery "qryLocTheoDanhSachCustomerID"
End Sub
Với cách này, người sử dụng có thể gõ dữ liệu lọc với phân cách tùy ý, không phân biệt chữ thường hay chữ hoa (hình 1) mà vẫn có kết quả như ý (hình 2). Tùy ứng dụng của bạn mà áp dụng như cách trên.
Hình 1: Form cần thiết kế

Hình 2: Nội dung lọc được

đây là 1 chương trinh đã có sẵn.
cau hoi: trong muc Customer ID can loc ta gõ: chop, bol, cact, beg
thi ta sẽ phai làm nhu thế nào?
xin các bạn chỉ giúp

Lần chỉnh sửa cuối: