Chudng 4: THAO TAC DU LIEU BANG QUERY

Một phần của tài liệu Microsoft Access 2000 Lập trình ứng dụng cơ sở dữ liệu. Tập 1 (Trang 279 - 294)

THIET KE QUERY BANG TAY

Chudng 4: Chudng 4: THAO TAC DU LIEU BANG QUERY

Hai kỹ thuật mới hơn cho việc phân tích nổi lên như sự thách thức đối với query crosstab. Đầu tiên, một bảng pivot (bảng chốt) có thể tính toán các kết quả của crosstab cơ bản từ một nguồn record, nhưng nó có thể cho phép thêm vào thao tác động của dữ liệu sau khi tính toán về crosstab. Điều này cho phép những người phân tích quyết định tác động qua lại một cách động với kết quả phân tích của họ. Access cho phép phân tích bảng pivot qua các form và Data Access Pages, nhưng Microsoft Excel là phương tiện chính cho việc thực hiện phân tích bảng pivot có trong bộ Office. Thứ hai, kỹ thuật Online Analytical Processing Database (cơ sở dữ liệu xử lý phân tích trực tuyến viết tất là OLAP) cho phép phân tích dữ liệu động dựa vào tiểm năng của nguồn dữ liệu rất lớn. Kỹ thuật này yêu cầu một server cơ sở dữ liệu từ xa, chẳng hạn như SQL Server 7 và một khách hàng của OLAP cho đữ liệu. Trong các thành phần truyền thống cua Microsoft Office 2000, Excel 2000 được chỉ định là tài nguyên cho vai trò đó.

Sử Dụng Khung Nhìn Design

Trong khi wizard cho phép thiết kế query với sự hiểu biết ít ỏi hoặc không hiểu biết về cú pháp query và những vấn đề thiết kế, chúng không cung cấp cho phạm vi rộng có những quan hệ có thể thực hiện điều gì đó. Trong trường hợp phải thường xuyên sử dung wizard, sự thiết kế của các wizard query có sẵn đôi khi lại phức tạp hơn so với yêu cầu cân phải làm để thực hiện một số nhiệm vụ.

Điều này có thể gây rắc rối khi cần thay đổi nhỏ cho một query.

Nếu bạn thiết kế ban đầu một query cho mình, rất có thể bạn nên sử dụng tính logic của query và nên chú ý đến việc sửa chữa nó sau này sao cho được dễ dàng hơn.

Thêm Các Bỏng Và Các Query

Bạn có thể tạo các query khách hàng cho riêng mình bằng cách thêm các bảng hoặc các query khác vào mạng lưới thiết kế query. Thông thường thực hiện theo cách này sẽ gỡ bỏ nhu cầu viết đoạn chương trinh bang SQL để tạo và chỉnh sửa query của bạn.

271

Hãy mở mạng lưới thiết kế query bằng cach double-click tuy chon Create Query In Design View trong nhóm các đối tượng Queries của cửa sổ Database. Kế tiếp, thêm một hay nhiều bảng, query, hoặc kết hợp giữa các bảng và query vào phần đầu của mạng lưới thiết kế. Chọn một bảng hoặc một query và click nút Add để di chuyển một bảng hoặc query từ hộp thoại Show Table vào phần trên của mạng lưới thiết kế.

Sau khi thêm một bảng dữ liệu vào phần trên của khung nhìn Design, bạn cần phải chọn những field sẽ là một phần của query trong mạng lưới ở dưới. Cú ớt nhất 3 cỏch để thờm cỏc fủield vào query. Đầu tiên, drag (kéo) và drop (tha) chung từ hộp danh sách

các field nguồn vào dòng Field trong mạng lưới thiết kế query ở dưới. Nếu bạn drag và drop một field ở biên trên bên trái của một cột đã choán, Access sé tự động di chuyển những cột còn lại sang bên phải. Thứ hai, bạn có thể double-click vào mục nhập trong danh sỏch fủield. Thao tỏc này sao chộp field vào cột trống đầu tiờn trong mạng lưới thiết kế. Thứ ba, bạn có thể chọn một field từ hộp danh sách thả xuống trong mỗi dòng Field của cột. Nếu bạn có nhiều nguồn đữ liệu trong mạng lưới thiết kế ở trên, thì danh sách cua dong Field sộ liột kờ cỏc ủeld được nhúm theo nguồn đữ liệu.

Bạn có thể sử dụng bất kỳ kỹ thuật nào trong ba kỹ thuật kể trên với một bảng để chỉ rõ một số cột trong một bảng có nhiều cột.

Hình 4-7 hiển thị các khung nhìn Design và Datasheet của một query dựa trên bảng Products mẫu. Query này chỉ rõ 3 field từ bảng Products.

Dong Sort trong cét ProductName cia Hình 4-7 được thiết kế theo Ascending (tang dan). Dong này chứa một hộp danh sách có ba tùy chon: Tang dan (Ascending), gidm dan (Descending ) va khéng sắp xếp (Not Sorted). Nếu bạn lựa tùy chọn cuối cùng, ô đó sẽ hiển thị là ô trắng trong mạng lưới thiết kế và đữ liệu của cột sẽ không được sắp xếp khi query được hiển thị trong khung nhìn Datasheet.

Chọn Ascending cho cột ProduetName sẽ làm cho các record xuất hiện theo thứ tự từ điển dựa trên nội dung của cột ProductNgme.

Chuong 4: THAO TAC DU LIEU BANG QUERY

Nếu dòng Sort của edt ProductName 1a trong, thi to di liệu trong cửa sổ cuối trong Hình 4-7 sẽ xuất hiện theo trật tự khóa chính ProductID của bảng.

l? @yPeductz2Cob ; Selecl ẹuen ie (fe)

Pee ea ac Recah Lea aD F.EIx]

Product ID Product Name Discontinued |. +]

ằ Alice Mutton 3 Anisaed Syrup

40 Boston Crab Meat GO Camembert Pierrot 18 Carnawon Tigers

+ Chai 2 Chang

38 Chartreuse verte . 4 Chef Anton's Cajun Seasoning 5 Chef Anton's Gumbo Max 48 Chocolade

3 Côte de Blaye

#3 Escargots de Bourgogne 52 Filo Mix

Recor: 441+ } + + [mlb+j of7T

og

1DDDGEDDDEHIERD

Hình 4-7. Cửa sổ trên cùng trình bày thiết kế query khi tạo query bằng tay dựa trên bằng Products. Cửa sổ dưới là tờ dữ liệu thu được.

Thật dễ dàng để thêm nhiều nguồn record vào hệ thống thiết kế query. Bạn có thể chọn nguồn record nhập vào từ những bảng và những query khác. Nó rất cần kết nối với các nguồn rẻcord (nếu Access không tự động kết nối chúng dựa trên những mối quan hệ được chỉ ra trong cửa sổ Relationships). Việc thiếu sự kết nối giữ..

các bảng sẽ gây ra kết quả trong tờ đữ liệu trình bày sản phẩm 273

Cartesian ở cả hai bảng. Điều này thường xảy ra đối với một bảng có nhiéu record.

Hình 4-8 trình bày các bảng Products va Order Details được kết nối dựa trên field ProductTD. Bạn có thể tạo một kết nối mặc định giống như vậy bằng cách drag một field từ một bảng và drop nú vào fủield tương ứng trong bảng kia. Kiểu kết nối này sẽ tạo ra tờ đữ liệu cú một dũng cho mỗi fủeld tương hợp trong cả hai bảng. Nếu một record chỉ xuất hiện trong một bảng thì nó sẽ không trình bày trong tờ đữ liệu của query. Có hai kiểu kết nối khác. Một là thêm tất cả các dòng tir bang Products ở bên trái. Cách kia là thêm tất cả cdc dong tit bang Order Details 6 bén phải. Bạn có thể chọn bất kỳ loại kết nối nào bằng cách click nút phải của chuột vào đường kết nối giữa 2 bảng và chọn loại kết nối mong muốn.

bên 4]

} vot Bac ory swanthy inner

Extended Price: [Order ô ị

Details j! (Quantity }*/Order ——

Details }![UnitPrice }*(1-[Discount}) Svea

Hình 4-8. Cửa sổ ở trên trình bày thiết kế query bằng tay dựa vào các bảng Products và Order Details. Cửa sổ ở dưới hiển thị hộp thoại Zoom trình bày công thức cho field đã tính toán lrong query.

274

đề Chương 4: THAO TÁC DỮ LIỆU BẰNG G QUERY

Dong Table trong Hình 4-8 tỉnh bày bốn cột thuộc bảng Order Details. Cot kia, ProductName, vhuộc vé bang Products. Field cuối cùng của thiết kế query không thể hiện đây đủ trong cửa sổ ở trên của hình.

Tham Chiếu Các Subddtosheet

Một trong những đối mới được g... thiệu trong Access 2000 là khả năng tham chiếu có thứ bậc một bảng hoặc query từ trong một query khác. Theo một nghĩa nào đó như thể nó là query cha có một bảng con hoặc query con,

Hình 4-9 hiển thị một tờ đữ liệu phụ (subdatasheet) bên trong một tờ dữ liệu query (query datasheet). Query cha có tên là qryCategories. Hay lưu ý đến dấu cộng (+) trong cột đầu tiên của query. Click bất kỳ dấu nào trong số đó, chẳng hạn như một dấu ở dòng loại Meat/Poultry, khi đó sẽ mở một tờ đữ liệu phụ và dấu cộng (+) sẽ chuyển thành dấu trừ (-). Dấu +/- hoạt động như là một công tắc mở và đóng tờ dữ liệu phụ được nối kết với bất kỳ dòng nào trong query cha. Tờ đữ liệu phụ của query con trong hình này thể hiện các field sản phẩm cho một dòng trong tờ dữ liệu cha.

Thông thường, tờ đữ liệu phụ của con tham chiếu đến một query khác hoặc một bảng khác đã được nối kết với dòng hiện hành. Bạn có thể mở đông thời nhiều tờ dữ liệu phụ của con. Nói tóm lại, thuộc tính query cho phép bạn gỡ bỏ tất cả các tờ dif liệu phụ của con mở mặc định.

Hình 4-9. Một nh In

query cha,

qryCategories,

hiển thị tờ dữ liệu phụ của nó

cho loại ‘

Meat/Poultry. SỈ ae

275

Có ð thuộc tính mới của qucry diéu khién tinh năng hoạt động và sự xuất hiện của tờ đữ liệu phụ. Thuộc tính Subdatasheet Name chi dén tén bang hay query chứa dữ liệu con. Để truy xuất đến thuộc tính này và bốn thuộc tính khác, hãy mở hộp thoại Query Properties trong khung nhìn Design của query. Năm thuộc tính mới nằm ở cuối hộp thoại. Hộp thuộc tính Subdœfasheet Name chứa một hộp danh sách thả xuống để làm đơn giản hóa việc chọn query hoặc bảng khác như là nguồn record cho tờ dữ liệu phụ. Đối với query trong Hình 4-9, giá trị của thuộc tinh Subdatasheet Name la bang MyProducts. Gd tén field cho cdc thuéc tinh Link Child Fields va Link Master Fields dé đồng bộ héa query cha với query con hoặc bảng. Cũng giống như form chớnh/phụ, những tờn fủield không cần phải trùng tên, nhưng chúng phải cùng kiểu dữ liệu.

Thuộc tính Sưbdafasheet Height điều khiển chiều cao của tờ dữ liệu phụ bên trong khung nhìn datasheet cha. Cuối cùng, thuộc tính Subdatasheet Expanded nhận giá trị Yes hoặc No. Hộp thoại Query Properties cung cấp một danh sách thả xuống để nhập một trong hai giá trị.

Access 2000 còn hỗ trợ các tờ đữ liệu phụ cho các tờ dữ liệu cha dựa trên những bảng cũng như các query. Tuy nhiên, các cơ cấu khác nhau đôi chút hỗ trợ các tờ dữ liệu phụ cho các query cha trái ngược với những bảng cha. Với bảng cha, bạn có thể chỉ định mối quan hệ giữa một bảng cha và bảng con của nó hoặc query trong cửa số Relationships. Nếu bạn quyết định sử dụng hộp thoại Table Properties, bạn phải mở bảng trong khung nhìn Design. Sau đó, bạn phải mở hộp thoại Table Properties bang cach click nut phai của chuột vào phần đầu của mạng lưới và chọn Properties. Diéu này thực hiện giếng như năm thuộc tính có sẵn cho các query để thiết

lập những mối quan hệ giữa một bảng cha và tờ dữ liệu phụ của nó.

Sử Dụng Các Field Tính Toán

Bạn có thể tạo một field tính toán mà giá trị của nó bắt nguồn từ một hay nhiều field trong một query. Sử dụng các phép

Chuong 4: THAO TAC DU LIEU BANG QUERY

toán số học đơn giản và các phép toán kiểu chuỗi, các hàm có sẵn, hoặc cỏc hàm khỏch hàng để biểu thị cỏc ủeld tớnh toỏn.

Các field tính toán không thể cập nhật trực tiếp. Điều này không thực hiện được bởi vì Access chỉ lưu trữ biểu thức bằng câu lệnh SQL, hơn là kết quả của việc tính toán. Bạn có thể xem lại những ủeld tớnh toỏn bằng cỏch nhập đữ liệu vào biểu thức tớnh toỏn. Cho dự cỏc ủeld tớnh toỏn khụng thể cập nhật được, ứng dụng của bạn có thể tập hợp chúng qua.các record.

Việc chỉ định những field tham gia vào biểu thức trong query có một số lợi điểm sau. Đầu tiên, biểu thức có thể hiển thị dữ liệu mà khụng cần sắp xếp dữ liệu, sử dụng một biểu thức cho một ủeld cho phép một query thể hiện kết quả mà không phụ thuộc vào không gian lưu trữ. Thứ hai, biểu thức được tự động tính lại. Điều này cho phép chúng phản ánh được dữ liệu mới nhất mà không cần thao tác đặc biệt của người quản trị cơ sở dữ liệu. Thứ ba, có nhiều cỏch thức để đưa cỏc biểu thức như là cỏc fủield. Nghiờn cứu những cách này sẽ làm tăng thêm sự hiểu biết của bạn về Access.

Các Phép Toán Số Học

Hỡnh 4-8 trỡnh bày một fủeld tớnh toỏn, fủeld này tớnh cột giỏ mở rộng (extended price). Biểu thức tính toán cho giá mở rộng dựa trên những phép toán số học đơn giản, chẳng hạn như phép nhân và phộp trừ để trỡnh bày fủeld được tớnh toỏn. Lưu ý rằng dũng Table đối với fủield tớnh toỏn ở cửa số bờn trờn của Hỡnh 4-8 là dũng trống. Điều này biểu thị rằng ủeld đú khụng sử dụng bất kỳ một không gian lưu trữ nào. Field tính toán trong Hình 4-8 sử dụng nhón ủeld để trỡnh bày một nhón cú ý nghĩa cho fủield trong khung nhìn Datasheet.

Các Hàm Có Sản

Hỡnh 4-10 trỡnh bày một ủeld tớnh toỏn dựa vào cỏc hàm cú sẵn. Khi một biểu thức xây dựng một chuỗi, nó có thể sử dụng hàm

277

Left$. Ham nay tiết kiệm bộ nhớ, có đặc điểm như hàm Le#' trả về một chuỗi có kiểu dữ liệu là variant.

Biểu thức trong Hình 4-10 kết nối ba chuỗi riêng biệt với nhau. Đầu tiên, nó lấy ký tự đầu tiên của thành phần tên bằng hàm Lef$. Thứ hai, nó thêm chuỗi ". " để thêm một dấu chấm và một khoảng trắng đằng sau ký tự đầu tiên của tên người. Biểu thức kết thúc bằng việc kết nối thêm thành phần họ. Field tính toán này vẫn cú tờn nhón fủield mặc định, nhưng khung nhỡn Datasheet của query trình bày cột có tiêu để khác hẳn với mô tả. Hộp thoại

trên cùng phía bên phải trong Hình 4-10 biểu thị rằng bạn có thể thực hiện được kết quả này bằng cách gán một giá trị vào mục tiêu để của field. Bất kỳ những giá trị nào được đưa vào trong hộp thuộc tính tiêu để sẽ ghi đè lên tiêu để cột của biểu thức.

Hình 4-10. Ba cửa sổ trình bày cú pháp và các qui ước nhãn để thêm một biểu thức chuỗi cho một query để định nghĩa field duy nhất của nó.

Cửa sổ cuối cùng thể hiện kết quả của query.

Bạn có thể giảm nhẹ tiến trình sử dụng các hàm có sẵn và tham chiếu tới bảng đữ liệu, query và những giá trị của form bằng việc sử dụng Expression Builder. Nếu cần thiết bạn cải tiến lại biểu thức sau khi xây dựng nó bằng công cụ Expression Builder hoặc 278

Chuang 4: THAQ TAC DU LIEU BANG QUERY

bằng tay, hãy sử dụng hộp thoại Zoom. Bạn có thể làm điều này bằng cách click nút phải của chuột vào dòng Field va chon muc Zoom để đưa biểu thức đã chỉnh sửa vào trong query. Khi đó nó sẽ mở hộp thoại Zoom cùng với biểu thức của bạn. Chỉnh sửa biểu thức nếu cần trước khi click nút OK để đóng hộp thoại Zoom. Cửa sổ cuối cùng trong Hình 4-8 là hộp Zoom hiển thị nội dung field tính toán của query.

Các Hàm Khách Hàng

Ngoài việc sử dụng các phép toán và các hàm có sẵn, bạn có thể trình bày biểu thức tính toán bằng những hàm khách hàng để trả về những giỏ trị của fủield. Hỡnh 4-11 thể hiện một query duoc liên kết với bang dbo_titles trong co sé di liéu Pubs cla SQL Server.

Query nay liét ké cde field title vA pubdate của mỗi record.

Ngoài ra, nó còn có một field tính toán gọi một hàm khách hàng daysto2K., biểu thức truyền giỏ trị của field pubdứte vào hàm. Hàm daysto2K được trình bày dưới đây. Bằng cách so sánh tên hàm dưới đây với query thiết kế trong Hình 4-11, bạn có thể thấy rằng các tham chiếu hàm trong query không phân biệt chữ hoa, chữ thường.

Public Function DaysTo2K(InDate As Date) As Integer DaysTo2K = DateDiff("d", InDate, #1/1/2000#) End Function

Breed

Hinh 4-11. Query này sử dụng mội hàm khách hàng để ưóc tính mức độ khác nhau giữa một fieia long query và ngày January 1, 2000

279

Ham nhận gia tri field pubdate nhu lA một thông số và trả về query kiéu di liéu integer. Két qua nay được tự động canh lễ phải.

(khéng thé chi dinh tra vé két qua Integer cho ham tra vé kiéu Variant vao query được, kết quả sẽ canh theo lễ trái.) Hàm khách.

hàng có một dòng, nó áp dụng hàm có sẵn là DateDiff dé ước tính mức độ khác nhau trong các ngày khác nhau giữa giá trị của field pubdate va ngay January 1, 2000.

Có mặt hạn chế tiểm ẩn cho việc ứng dụng các hàm khách hàng trong các biểu thức cho các field của query, đặc biệt với những cơ sở đữ liệu lớn và từ xa. Ứng dụng của bạn phải ngưng lại trong khi một bảng lớn di chuyển qua dây dẫn từ server ở xa đến trạm làm việc cục bộ của bạn. Ngoài ra bạn làm mất khả năng tính toán query trên máy server ở xa. Trong tình huống này, ở nơi nào bạn yêu cầu một hàm khách hàng xây dựng một query thì ở đó nó trích xuất một số ít nhất các record từ server từ xa và thực hiện tất cả các hàm khác trên server từ xa đó. Sau đó áp dụng các hàm khách hàng vào tập nhỏ các kết quả trả về từ server. Những lý do đối nghịch lại các hàm khách hàng là không thích hợp với ví dụ trong Hỡnh 4-11 bởi vỡ bảng đửo_fies quỏ nhỏ. Cỏc hàm khỏch hàng làm việc tốt với cơ sở dữ liệu đet có kích thước bất kỳ.

Cac Hàm Tập Hợp SGL

Bạn có thể tính một giá trị mà không cần sử dụng biểu thức.

Một cách để hoàn tất việc này là cHek vào nút Totals—nút có ký hiệu Ð trên thanh công cụ Query Design. Sau đó, drag một hoặc nhiều ủeld vào mạng lưới thiết kế query và chọn mục Group By trong dòng Total. Bạn phải có ít nhất một field có giá trị kiểu số để dũng Total thiết lập Group By. Bạn cú thể chỉ rừ ủeld tớnh toỏn như là fủield số. Chọn Expression trong dũng Total. Chốn một hàm tập hợp SQL xung quanh ủeld tớnh toỏn của bạn để đếm, tớnh tổng, hoặc tớnh trung bỡnh một fủield tớnh toỏn cho mỗi kết hợp cỏc ỉeld mà dòng Total được thiết lập Group By trong nguồn record.

Một phần của tài liệu Microsoft Access 2000 Lập trình ứng dụng cơ sở dữ liệu. Tập 1 (Trang 279 - 294)

Tải bản đầy đủ (PDF)

(383 trang)