Tự học lập trình cơ sở dữ liệu với Visual Basic 5 trong 21 ngày ấn phẩm 2



tải về 0.58 Mb.
trang8/13
Chuyển đổi dữ liệu26.04.2018
Kích0.58 Mb.
#37160
1   ...   5   6   7   8   9   10   11   12   13

Dataset-Oriented chống lại dữ liệu Record- Oriented
Trước khi bạn học về các đối tượng dữ liệu Visual Basic, bạn nên đầu tiên học một vài cái cơ bản của Visual Basic hoạt động thế nào trên các cơ sở dữ liệu. Khi bạn hiểu Visual Basic làm thế nào để xem các cơ sở dữ liệu, bạn có thể tạo các chương trình tốt hơn đáp ứng với các cái cần thiết của bạn.
Kiểu cơ sở dữ liệu đằng sau cơ sở dữ liệu của Microsoft Access và các cơ sở dữ liệu SQL-oriented khác là hoàn toàn khác từ kiểu cơ sở dữ liệu đằng sau các cơ sở dữ liệu PC truyền thống ví dụ như FoxPro, dBASE, và Paradox. Các cơ sở dữ liệu PC Truyền thống là các hệ thống cơ sở dữ liệu record-oriented. Các cơ sở dữ liệu SQL là các hệ thống dataset-oriented. Việc hiểu biết sự khác nhau giữa sự xử lý record-oriented và sự xử lý dataset-oriented là chìa khoá để hiểu các chương trình cơ sở dữ liệu đánh giá thế nào trong Visual Basic.
Trong các hệ thống record-oriented, bạn làm hoạt động cơ sở dữ liệu một bản ghi tại một thời điểm. Hầu hết các chương trình thông thường xay dựng trong record-oriented là lặp. Ví dụ của mã giả sau làm rõ làm thế nào để tăng trường price của một bảng kê khai trong một cơ sở dữ liệu record-oriented.
ReadLoop:

If EndOf File

Goto EndLoop

Else


Read Record

If Record.SalesRegion = `Northeast' Then

Price=Price*1.10

Write Record

End If

EndIf


Goto ReadLoop

EndLoop:


End Program
Sự xử lý trong các hệ thống record-oriented thường bao hàm việc tạo một thủ tục thông thường, đọc một bản ghi đơn, xử lý nó,và quay lại đọc bản ghi khác cho đến khi công việc được hoàn thành. Các cơ sở dữ liệu của PC sử dụng các chỉ số để tốc độ xử lý của các bản ghi định vị trong các bảng. Các chỉ số cũng giúp tăng tốc độ bằng cách chỉ rõ các cơ sở dữ liệu của PC để truy cập dữ liệu trong trật tự sắp xếp ( bởi LastName, AccountBlance, và vân2 ).
Trong các hệ thống data-oriented ví dụ như Microsoft Access, bạn làm hoạt động cơ sở dữ liệu một bộ bản ghi tại một thời điểm chứ không phải là một bản ghi tại một thời điểm Hầu hết các chương trình thông thường xây dựng trong các hệ thống set-oriented là lệnh SQL. Thay vì việc sử dụng mã chương trình để lặp hết các bản ghi đơn. Các cơ sở dữ liệu của SQL có thể làm các thao tác trên toàn bộ các bảng chỉ từ một lệnh SQL. Đoạn mã giả của ví dụ sau làm rõ làm thế nào để bạn có thể cập nhật trường price trong cùng tệp inventory trong một cơ sở dữ liệu dataset-oriented :
UPDATE Inventory SET Price=Price*1.10 WHERE Inventory.SalesRegion = `Northeast'

Lệnh UPDATE của SQL chạy với nhiều cơ sở dữ liệu của SQL như các từ khoá xử lý với các chương trình Visual Basic của bạn. Trong trường hợp này, UPDATE nói với cơ sở dữ liệu rằng nó muốn cập nhật nguyên một bảng ( bảng Inventory ). Lệnh SET của SQL thay đổi giá trị của một trường dữ liệu ( trong trường hợp này là trường Price ). Lệnh WHERE được sử dụng để làm một sự so sánh hợp lý của trường SalesRegion đến giá trị Northeast. Như bạn có thể thấy trong các cơ sở dữ liệu dataset-orented, bạn tạo một lệnh đơn mà chỉ lựa chọn các bản ghi bạn cần để làm một thao tác của cơ sở dữ liệu. Sau khi bạn nhận biết được dataset, bạn áp dụng phép toán đến tất cả các bản ghi trong tập họp. Trong các hệ thống dataset, các chỉ số được sử dụng để xác định thêm tính toàn vẹn của cơ sở dữ liệu để tăng tốc độ xác định vị trí của các bản ghi cụ thể.


Visual Basic và các đối tượng dữ liệu
Các đối tượng cơ sở dữ liệu cảu Visual Basic là dataset-oriented. Các chương trình Visual Basic thông thường làm tốt hơn khi các thao tác của dữ liệu được làm với hơn một dataset khi các thao tác của dữ liệu được làm trên các bản ghi đơn. Một vài đối tượng Visual Basic làm việc tốt khi làm các thao tác record-oriented ; còn lại hầu hết là không. Đối tượng RecordSet của Table-type Visual Basic là rất tốt tại cái sử lý của record-oriented. Các đối tượng RecordSet của kiểu Dynaset và Snapshot của Visual Basic không làm tốt trên các xử lý của record-oriented.
Một lỗi thông thường gây ra bởi những nhà lập trình cơ sở dữ liệu mới đến Visual Basic là tạo các chương trình đó mang một kiểu cơ sở dữ liệu record-oriented. Những nhà lập trình đó thường nản lòng bởi cách thực hiện chậm chạp của Visual Basic trên các bảng dữ liệu lớn và bản thân nó tính toán trả lời chậm khi đang cố gắng xác định một bản ghi cụ thể. Sự chậm chạp của Visual Basic thường do bởi sử dụng không hợp lệ các đối tượng dữ liệu Visual Basic – hầu hết thường là thế bởi vì các nhà lập trình mở toàn bộ các bảng khi mà chúng chỉ cần một tập hợp con nhỏ của dữ liệu trong thứ tự để làm các nhiệm vụ quy định.
Kích cỡ của Dataset ảnh hưởng thực thi của chương trình
Không giống các hệ thống định hướng bản ghi ( record-oriented ), kích cỡ của dataset bạn tạo các ảnh hưởng tốc độ tại bất cứ hoạt động nào của các chương trình Visual Basic Như một bảng dữ liệu được tăng lên, tốc độ xử lý chương trình của bạn có thể giảm. Trong các ứng dụng định hướng chuyển dịch nặng nề, ví như các hệ thống thanh toán, một dataset có thể tăng lên nhanh chóng và làm giảm khả năng của ứng dụng xử lý thông tin. nếu bạn đang làm việc trong môi trường mạng ở đó máy móc yêu cầu dữ liệu và lưu trữ dữ liệu là tách rời nhau. Việc gửi quá bức điện các dataset lớn có thể ảnh hưởng không chỉ ứng dụng của bạn, nhưng tất cả các ứng dụng đang chạy trên mạng. Đối với lý do này, nó quan trọng để đặt kích cỡ của dataset càng nhỏ càng hợp lý. Điều này không có nghĩa bạn phải giới hạn số các bản ghi trong các bảng dữ liệu ! Bạn có thể sử dụng các đối tượng dữ liệu của Visual Basic để lựa chọn dữ liệu bạn cần.
Cho ví dụ bạn có thể có một bảng dữ liệu chứa hàng trăm thanh toán kinh doanh. Nếu bạn muốn thay đổi các bản ghi payment trong bảng, bạn có thể tạo một đối tượng chứa tất cả các bản ghi, hoặc bạn có thể nói với Visual Basic lựa chọn các bản ghi payment đã được thêm vào hệ thống trong ba ngày cuối cùng, bạn có thể tạo một dataset nhỏ hơn : dataset nhỏ hơn, chương trình của bạn có thể xử lý dữ liệu nhanh hơn. Các đối tượng Visual Basic cho bạn sức mạnh để tạo các dataset đó là kích cỡ thích hợp cho các cái cần thiết của bạn.
Dynaset-type Recordset
Dynaset-type Recordset của Visual Basic hầu như là đối tượng thường xuyên sử dụng trong các chương trình Visual Basic. Nó được sử dụng để tăng tốc độ truy cập đến một phần hoặc cả bảng trong một cơ sở dữ liệu, do đó tên nó là Dynaset. Khi bạn đặt các thuộc tính DataName và RecordSource của một điều khiển Visual Basic, bạn thực sự đạng tạo một Dynaset-type Recordset của Visual Basic. Bạn cũng có thể tạo một Dynaset-type Recordset bằng cách sử dụng phương thức CreatDynaset đối tượng Database.
Khi bạn tạo một Dynaset-type Recordset của Visual Basic, bạn đừng tạo một bảng vật lý trong cơ sở dữ liệu. Một Dynaset tồn tại như một bảng dữ liệu ảo. Bảng ảo này thường chứa một bộ phụ của các bản ghi trong một bảng dữ liệu thực, nhưng nó có thể chứa trọn vẹn cả bộ. Bởi vì việc tạo một Dynaset không phải tạo một bảng vật lý mới, các Dynaset không làm tăng thêm kích cỡ của cơ sở dữ liệu. Tuy vậy, việc tạo các Dynaset chiếm khoảng chống của RAM trên máy. Tuỳ thuộc vào số các bản ghi trong Dynaset, khoảng chống tạm thời của ổ đĩa cũng có thể được sử dụng.
Sức mạnh của Dynaset-Type Recordset
Có một vài lý do để sử dụng Dynaset khi bạn truy cập dữ liệu. Trong cái chung, Dynaset yêu cầu ít bộ nhớ hơn các đối tượng dữ liệu khác và cung cấp hầu hết các chọn lựa cập nhật, bao gồm các khả năng tạo thêm các đối tượng dữ liệu từ các Dynaset đã có. Các Dyanaset ngầm định các đối tượng dữ liệu cho điều khiển dữ liệu của Visual Basic và chúng chỉ cập nhật các đối tượng dữ liệu, bạn có thể sử dụng các cơ sở dữ liệu để nối đến kiểu Microsoft’s Opening Database Connectivity (ODBC). Các đoạn sau cung cấp thêm các chi tiết của sức mạnh của đối tượng dữ liệu Dynaset. Các Dynaset thực sự là các bộ khoá của Visual Basic. Các Dynaset sử dụng tương đối ít bộ nhớ, ngay cả đối với các dataset lớn. Khi bạn tạo một Dynaset, Visual Basic thực thi vài bước. Đầu tiên Visual Basic lựa chọn các bản ghi bạn yêu cầu, sau đó nó tạo các chỉ mục tạm thời đến mỗi bản ghi và chuyển hoàn toàn bộ các khoá đến suốt trạm của bạn với đủ các bản ghi để làm tăng các bound control ( các điều khiển text box, grid ) đó hiện lên trên form của bạn. Xử lý này được minh hoạ trong hình 3.1
Hình 3.1 :


Chú ý : thực sự dữ liệu yêu cầu phương tiện sử dụng bởi Visual Basic được gọi là Microsoft Jet. Trong các hệ thống SQL thuần tuý, tất cả các yêu cầu thay cho kết quả dữ liệu trong một bộ các bản ghi. Các yêu cầu dữ liệu đến Microsoft Jet engine đưa đến một bộ các khoá trỏ đến các bản ghi. Bằng cách trả lại các khoá thay vì các bản ghi, Microsoft Jet engine có thể giới hạn vận chuyển của mạng và tốc độ thực thi của cơ sở dữ liệu.

Bộ các khoá được lưu trong RAM và nếu nó quá lớn nó sẽ được lưu trong RAM và trong một file tạm thời trên một ổ đĩa local. Khi bạn cuộn hết dataset. Visual Basic gọi các bản ghi hiện tại khi cần từ bản vật lý sử dụng để tạo Dynaset. nếu bạn có một text box đơn trên form, Visual Basic sẽ gọi dữ liệu từ bảng một bản ghi một lần. nếu bạn có một grid hoặc một vòng lặp ( loop ) tập hợp vài bản ghi từ bảng trong dãy, một tập hợp các bản ghi nhỏ trong dataset được gọi ra bởi Visual Basic. Visual Basic cũng lưu trữ các bản ghi tại trạm ( workstation ) để làm giảm các yêu cầu đến bảng dữ liệu vật lý.


Nếu Dynaset lớn, bạn có thể giới hạn tới ( end up ) với một bộ khoá lớn nó đòi hỏi thêm RAM và khoảng trống tạm thời của ổ đĩa hơn máy móc cục bộ có thể xử lý. Trong trường hợp đó, bạn nhận được một thông báo lỗi từ Visual Basic. Đối với lý do này, nó là quan trọng mà bạn sử dụng cẩn thận trong việc tạo cái tiêu chuẩn của bạn đối với dataset ưa chuộng. Nhỏ hơn dataset, nhỏ hơn bộ khoá. Các Dynaset là động ( Dynamic) thậm chí các Dynaset là các bảng ảo trong bộ nhớ được tạo từ các bảng vật lý. Chúng không thay đổi các bản sao của bảng dữ liệu. Sau khi bạn tạo một Dynaset, nếu người nào cũng thay đổi bảng dữ liệu cơ sở bằng cách sửa đổi ( modifying), thêm vào (adding), xoá (deleting) các bản ghi, bạn xem những thay đổi trong Dynaset của bạn ngay khi bạn làm tươi Dynaset. Việc làm tươi Dynaset có thể được làm bằng cách sử dụng phương thức Refresh Bạn cũng có thể làm tươi Dynaset bằng cách chuyển con trỏ của bản ghi bằng cách sử dụng nhưng khoá mũi tên của dữ liệu điều khiển hoặc sử dụng các phương thức MoveFirst, MoveNext, MovePrevious, MoveLast. Việc chuyển con trỏ chỉ làm tươi các bản ghi bạn đọc, không phải toàn bộ Dynaset.
Mặc dù vẻ ngoài của các Dynaset rất có hiệu lực trong việc bảo trì trong các cái nhìn mới nhất của bảng cơ sở, các Dynaset cũng có một vài các giới hạn và các hạn chế (drawback). Cho ví dụ nếu một người sử dụng khác xoá một bản ghi hiện tại có trong Dynaset của bạn và bạn cố gắng chuyển bản ghi đó, Visual Basic thông báo một lỗi.Các Dyanset có thể được tạo từ hơn một bảng, một Dynaset có thể được tạo bằng cách sử dụng hơn một bảng trong cơ sở dữ liệu. Bạn có thể tạo một single view chứa đựng các bản ghi chọn lựa từ một vài bảng, cập nhật vieew, và vì vậy cập nhật tất cả các bảng cơ sở tại mỗi thời điểm. Đây là một sức mạnh bên ngoài của một đối tượng Dynaset của Visual Basic. Việc sử dụng các Dynaset của Visual Basic bạn có thể tạo các bảng ảo điều đó làm nó dễ dàng để tạo các mẫu dữ liệu đơn giản và các đồ thị, các thông báo,nó xuất hiện thích ứng các chọn lựa của dữ liệu. Sử dụng các Dynaset để tạo các Dynaset khác hoặc các Snapshot trong các chương trình Visual Basic, bnaj cần tạo một cái cơ sở của dataset trên user input. Đối tượng Dynaset chỉ là đối tượng dữ liệu từ nó bạn có thể tạo các Dynaset khác.
Bạn có thể tạo thêm các Dynaset bằng cách sử dụng phương thức Clone hoặc CreatDynaset. Khi bạn nhái lại một Dynaset, bạn tạo một bản sao chính xác của Dynaset. Bạn có thể sử dụng bản sao này để thực hiện công việc tra cứu hoặc để sắp xếp lại các bản ghi cho một sự trình bày.Nhái lại các Dynaset mang lên khả năng không đáng kể hơn Dynaset gốc.
Chúng ta đặt một đoạn mã ngắn cùng nhau để khảo sát các Dynaset. Bạn cũng làm tất cả cái này trong đoạn mã Visual Basic, thay vì sử dụng điều khiển dữ liệu của Visual Basic.
Đầu tiên bắt đầu với một đề án Standard EXE của Visual Basic 5.0. Chắc chắn đã thêm một tham chiếu đến Microsoft DAO 3.5 Object Library trước khi bạn bắt đầu với mã hoá. Để làm được điều này, lựa chọn Project | References từ thực đơn chính ( xem hình 3.2 ).
Hình 3.2 :
Bây giờ hãy kích đúp lên form để mở cửa sổ mã đến sự kiện Form_load. Bạn viết toàn bộ ví dụ trong thủ tục này.
Khi bạn mở một Dynaset sử dụng mã Visual Basic thay vì sử dụng điều khiển dữ liệu, bạn phải tạo hai đối tượng Visual Basic : một đối tượng Database và một đối tượng Recordset. Đoạn 3.1 cho bạn xem làm thế nào để tạo các đối tượng trong mã của Visual Basic.

Đoạn 3.1 : Tạo một đối tượng Database và một đối tượng Recordset :


Private Sub Form_Load()

`

` creating Dynaset-type recordsets



`

Dim db As Database ` the database object

Dim rs As Recordset ` the recordset object

`

End Sub


Bạn phải khởi tạo các đối tượng đó với các giá trị trước khi chúng có thể truy cập dữ liệu. Việc sử lý này giống như việc thiết lập các thuộc tính của điều khiển dữ liệu. Để khởi tạo các giá trị, đầu tiên bạn phải tạo hai biến tương xứng đến thuộc tính DatabaseName và RecordSource của điều khiển dữ liệu của Visual Basic. Đoạn mã 3.2 cho bạn xem cách nó làm.


Mẹo : Đoạn mã 3.2 sử dụng từ khoá App. Path của Visual Basic. Bạn có thể sử dụng phương thức Path của đối tượng App để xác định ổ đĩa và thư mục từ chương trình bạn khởi động. Trong hầu hết các đối tượng trong suốt quyển sách này, bạn tìm các cơ sở dữ liệu là được lưu trong cùng một thư mục. Bằng cách sử dụng phương thức App.Path như một phần của tên của cơ sở dữ liệu, bạn luôn2 trỏ đến ổ đĩa và thư mục đúng cho tập tin yêu cầu.

Đoạn 3.2 :


Private Sub Form_Load()

`

` creating Dynaset-type recordsets



`

Dim db As Database ` the database object

Dim rs As Recordset ` the recordset object

`

` create local variables



Dim strDBName As String

Dim strRSName As String

`

` initialize the variables



strDBName = App.Path & "\..\data\books5.mdb"

strRSName = "Titles"

`

End Sub



Mẹo : Chú ý rằng bạn tạo hai biến xâu và tên của hai biến bắt đầu bằng ký tự “ str”. Đây là tiếp đầu ngữ của tên biến. Tiếp đầu ngữ của tên biến nói với bạn kiểu của dữ liệu được lưu trong biến. Đây là cái luyện tập lập trình thông thường.

Trước khi bạn tiếp tục lưu form này với tên DYNASETS. FRM và lưu đề án là DYNASETS.VBP.


Bây giờ bạn có thể các đối tượng dữ liệu, tạo các biến để giữ các thuộc tính cơ sở dữ liệu và khởi tạo các biến đó với các giá trị thích hợp, bạn đã sẵn sàng để thực sự mở cơ sở dữ liệu và tạo Dynaset-type Recordset. Hãy xem đoạn 3.3.
Đoạn 3.3 : Mở cơ sở dữ liệu và tạo Dynaset.
Private Sub Form_Load()

`

` creating dynaset-type recordsets



`

Dim db As Database ` the database object

Dim rs As Recordset ` the recordset object

`

` create local variables



Dim strDBName As String

Dim strRSName As String

`

` initialize the variables



strDBName = App.Path & "\..\data\books5.mdb"

strRSName = "Titles"

`

` create the objects



Set db = DBEngine.OpenDatabase(strDBName)

Set rs = db.OpenRecordset(strRSName, dbOpenDynaset)

`

End Sub
Có hai dòng được thêm và đoạn 3.3. Dòng đầu tên thêm vào là mở cơ sở dữ liệu BOOKS5..MDB và thiết lập các đối tượng cơ sở dữ liệu của Visual Basic db trỏ đến cơ sở dữ liệu. Nó đem lại chương trình Visual Basic của bạn một liên kết trực tiếp đến cơ sở dữ liệu đã lựa chọn.




Mẹo : Chú ý rằng cơ sở dữ liệu này được tạo bằng cách sử dụng phương thức OpenDatabase của đối tượng DBEngine. DBEngine được đưa ra vào ngày thứ 9.

Bây giờ bạn có thể sử dụng đối tượng dữ liệu db để miêu tả cơ sở dữ liệu mở trong tất cả các mã Visual Basic khác trong chương trình này. Dòng thứ hai tạo đối tượng Dynaset-type Recordset chứa tất cả các bản ghi trong bảng Titles. Đối tượng rs của Visual Basic được đặt để chỉ vào các bản ghi.Chú ý rằng phương thức Recordset được áp dụng đến đối tượng Database db.




Mẹo : Chú ý hai dòng cuối của đoạn mã sử dụng từ khoá Set. Từ khoá này cuả Visual Basic đwowcj sử dụng để khởi tạo tất cả các đối tượng lập trình. Bạn có thể nghĩ rằng bạn có thể thực thi các công việc tương tự sử dụng dòng mã sau.

Rs = db.OpenRecordSet(strRSName,dbOpenRecordset)

Trong Visual Basic,tất cả các đối tượng phải được tạo sử dụng từ khoá Set.


Каталог: file -> downloadfile5 -> 169
file -> CỘng hòa xã HỘi chủ nghĩa việt nam độc lập Tự do Hạnh phúc
file -> CỘng hòa xã HỘi chủ nghĩa việt nam độc lập Tự do Hạnh phúc
file -> TIÊu chuẩn quốc gia tcvn 7790-5 : 2008 iso 2859-5 : 2005
file -> Qcvn 81: 2014/bgtvt
file -> UỶ ban nhân dân cộng hòa xã HỘi chủ nghĩa việt nam
file -> VIỆn chăn nuôi trịnh hồng sơn khả NĂng sản xuất và giá trị giống của dòng lợN ĐỰc vcn03 luậN Án tiến sĩ NÔng nghiệp hà NỘI 2014
downloadfile5 -> Đề tài báo cáo Thực trạng hoạt động quản trị bán hàng và 1 số giải pháp nhằm nâng cao công tác quản trị bán hàng tại công ty A. D. A
downloadfile5 -> English 12 – Vocabulary + Grammar review cách nhận biết từ loại

tải về 0.58 Mb.

Chia sẻ với bạn bè của bạn:
1   ...   5   6   7   8   9   10   11   12   13




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương