TÌM KIẾM VÀ HIẾN THỊ DU LIEU
Chương 5: Chương 5: XÂY DỰNG GIÁO DIỆN NGƯỜI DÙNG BẰNG FORM
DoCmd.OpenQuery “qprHistoryfromTextBox"
End Sub
paiement jee bepeal Reese ed
Hình 5-10. Query qprHistoryfromTextBox trong khung nhin Design.
Sử Dụng Hộp Kết Hợp Để Nhập Thông Tin Người Dùng
Form trình bày trong Hình 5-11 có thiết kế đẹp hơn so với form trong Hình 5-9. Thay vì bắt buộc người dùng phải phỏng đoán mã khách hàng, nó cho phép người dùng chọn khách hàng từ một hộp nhập. Một thủ tục sự kiện After Update của hộp kết hợp mở query gprHistoryfromComboBox để người dùng chọn một khách hàng, vì thế nút lệnh không còn cần thiết nữa.
© treComboBosLookup : Form 1 [JEP]
Select a customer to find the total quantity ordered of each product bought by the customer
Company Nene: 7 JAfieds Fotteikecte ˆ
JAna Trujlo Evow cdsdos v helados — |
Antonio Morena Taqueria Around the Horn, Blazer See Och atossen es Bloradet pare et fig.
Bétdo Comidas preparadas ~
Hình 5-11. Một dạng thiết kế tốt hơn cho form tìm kiếm.
353
Ee GHI CHU: Form tim kiếm của hộp kết hợp có thể trở nên chậm khi số lượng các mục tìm kiếm quá nhiều.
Trong trường hợp này, bạn có ít nhất hai lựa chọn. Đầu tiên, bạn có thể quay lại form tìm kiếm của hộp văn bản
như đã giới thiệu ở trên. Thứ hai, bạn có thể tạo một hệ thống theo từng lớp trong đó người dùng có thể chọn để
giới hạn phạm vi các mục có thể có trong hộp kết hợp.
Để cung cấp bất kỳ điều khiển hộp kết hợp nào cho chức năng này, hãy thực hiện theo các bước sau:
1. Thiết lập thuộc tinh Row Source Type cia điều khiển cho
Table/Query (mặc định). :
2. Thiét lap thudc tinh Row Source cia điều khiển cho một chuỗi lệnh SQL để trả về cỏc ủeld bạn muốn. (vớ dụ chuỗi của SQL cho mau lA SELECT CUSTOMERID, COMPANYNAME FROM CUSTOMERS.)
3. Thiét lap thuéc tinh Column Count cia diéu khién 1a 2.
4. Xác định độ rộng của cột, phân cách bằng đấu chấm phẩy.
(giá trị đầu tiên nên luôn luôn là 0.)
Nếu bạn thích, công cụ wizard Combo Box có thể tạo điểu khiển cho bạn. Đơn giản bạn chọn nút Control Wizards trên Toolbox và thêm hộp kết hợp vào form.
Hiển Thị Kết Quả Trong Hộp Thông Báo
Những ví dụ trước mắc phải hai khuyết điểm. Đầu tiên, chúng truyền những giá trị tới và biểu lộ những giá trị từ query. Điều này có nghĩa là người sử dụng có thể tình cờ làm hỏng thiết kế của query. Thứ hai, người ding còn có thể chỉnh sửa đữ liệu căn bản của
query.
fẹ] Chương 5: XÂY DỰNG GIAO DIỆN NGƯỜI DÙNG BANG FORM
Form tìm kiếm mẫu ở trên cùng của Hình 5-12 khắc phục những thiếu sót này bằng cách sử dụng VBA và ActiveX Data Objects (ADO).
Seer cd
Salect a customer to find the total quantity. ordered of each product ị
bought by the customer
Programming Micravolt Acesss 2009
a? Sect aban Mice ko.
w Begnch snabtklo, Arhsos ao, XI
Besgunds mebtaap. poh Coffee,
Beghads wabthey, Tnhh nd Cl Chon, 0
snabbkop. Koribu,
Pear mene Cok oon 2 Bangknd3 snabbkbo, Maecapooe Bexgunde enabtkop, Masaki. 185 Bacgunds snabthbn, NoréCel Makeshedng, 8 Bergunds srabkip, Pad chincit, 29 F abso, 10 Bergande snabtkip, Pavlow, 12
‘Chek 0% to se mat in anther maszogh bee
Programming Mictosalt Access 2000
; Resgunch knabbkdp, Pedh Paskei, 12
i wD: Barchands srubli.in, °°. Bergundi seabbkoo, Jeske waitin Rott Seu he TU pecs eibton, Rhone KeovEe 5Ì Racieite Coudevat, 15 Red Kove, 25 Mawnalede,
Hình 5-12. Rorm ở trên cùng hiển thị kết quả trong hộp thông báo vì thế người dùng có thể xem kết quả nhưng không thay đổi được dữ liệu căn bản.
355
Đầu vào của form trông giống như form trong Hình 5-11.
Trong khi kết quả trả về của query thực hiện bởi hai form giống hệt, nhau, chúng thể hiện theo những cách khác nhau. Ví dụ trong Hình 5-12 trình bày tập các kết quá trả về trong các hộp thông báo thay vì trong một cửa sổ query trong khung nhìn Datasheet. (Ví dụ sử dụng càng nhiều hộp thông báo càng cần để thể hiện kết quả trả ve của nó). Phương pháp này bảo vệ dữ liệu căn bản tránh việc vô tình làm hỏng dữ liệu do người sử dụng gây ra.
Thủ tục dưới đây chạy sự kiện Affer Update của hộp kết hợp trong Hình 5-12. Nó thực hiện một câu lệnh dựa vào một query để biểu lộ tập hợp kết quả một recordset trả về. Sau đó nó gán kết quả trả về từ câu lệnh và hiển thị một recordset bằng cách sử dụng một hay nhiều hộp thông báo.
Private Sub cboLookup_AfterUpdate() Dim ctl1 As Control
Dim cmd1 As Command
Dim rst! As Recordset, stri As String
"Thiết lập tham chiếu tới điều khiển ComboBox.
Set ctli = Me.Controls("cboLookup")
"Tạo và định nghĩa lệnh.
'Sử dụng giá trị ComboBox trong chuỗi lệnh SQL cho lệnh.
Set cmd1 = New ADODB.Command With cmd1
-ActiveConnection = CurrentProject.Connection
.CommandText = "Select Customers.CompanyName, "&
*Products.ProductName, * & _
"Sum ([Order Details].Quantity) As TotalQuantity " & _
“From Products Inner Join ((Customers Inner Join Orders " & _
“ON Customers.CustomerlD = Orders.CustomerlD)# & _
“Inner Join [Order Details] ON * & _
“Orders.OrderlD = [Order Details}].OrderiD) * & _
"ON Products.ProductiD = [Order Details].ProductID * & _