« Home « Kết quả tìm kiếm

Chương Mười Bốn - Dùng Control Data


Tóm tắt Xem thử

- Ch ươ ng M ườ i B n - Dùng Control Data ố.
- Control Data.
- Nó r t d dùng, hi u năng và ti n, nh ng b gi i ớ ấ ễ ệ ệ ư ị ớ h n trong ph m vi MS Access.
- Đi u n y c t ố ớ ủ ạ ỉ ộ ấ ề ầ ấ b t gánh n ng cho l p trình viên, đ ch c n h c m t k thu t l p trình duy nh t ớ ặ ậ ể ỉ ầ ọ ộ ỹ ậ ậ ấ mà có th làm vi c v i b t c lo i database nào.
- Khi dùng ODBC chung v i DAO, ta có th cho ự ử ổ ề ấ ớ ể Access Database n i v i các databases khác.
- RDO (Remote Data Object): M t trong nh ng lý do chính đ RDO đ ộ ữ ể ượ c thi t k là gi i quy t khó khăn v s r c r i c a ODBC.
- Cách l p trình v i RDO ế ế ả ế ề ự ắ ố ủ ậ ớ đ n gi n nh DAO, nh ng th t ra nó dùng ODBC nên cho phép users n i v i ơ ả ư ư ậ ố ớ nhi u databases.
- Trong m t bài t i ộ ớ ta s h c v ADO v i nh ng u đi m c a nó.
- Tuy nhiên, vì DAO r t đ n gi n và ẽ ọ ề ớ ữ ư ể ủ ấ ơ ả hi u năng nên ta v n có th ti p t c dùng nó r t h u hi u trong h u h t các áp d ng.
- ệ ẫ ể ế ụ ấ ữ ệ ầ ế ụ Do đó bài n y và bài k s t p trung vào nh ng k thu t l p trình ph bi n v i ầ ế ẽ ậ ữ ỹ ậ ậ ổ ế ớ DAO..
- Cách dùng gi n ti n c a control Data là đ t nó lên m t Form r i làm vi c v i nh ng ả ệ ủ ặ ộ ồ ệ ớ ữ Properties c a nó.
- đây ta ch n ể ọ ộ ừ ạ Ở ọ E:\Program Files\Microsoft Visual Studio\VB98\BIBLIO.MDB , trong computer c a b n có th ủ ạ ể nó n m trên disk ằ C hay D..
- Trong ch ươ ng trình n y ta mu n làm vi c v i ầ ố ệ ớ table Titles c a database ủ.
- Recordset là m t ộ ộ Set of records, nó có th ch a m t s records hay ể ứ ộ ố không có record nào c .
- M t record trong Recordset có th là m t record l y t m t ả ộ ể ộ ấ ừ ộ Table.
- Trong tr ườ ng h p y có th ta l y v t t c records trong table hay ch nh ng ợ ấ ể ấ ề ấ ả ỉ ữ records th a đúng m t đi u ki n, thí d nh ta ch mu n l y các records c a nh ng ỏ ộ ề ệ ụ ư ỉ ố ấ ủ ữ sách xu t b n tr ấ ả ướ c năm 1990 (Year Published <.
- M t Record trong Recordset cũng có th là t p h p các c t (columns) t hai (hay ba) ộ ể ậ ợ ộ ừ tables qua các m i liên h one-to-one và one-to-many.
- Trong tr ườ ng h p y ta có th xem nh có m t ợ ấ ể ư ộ virtual ( o) table ả là t p h p c a hai ậ ợ ủ tables Titles và Publishers..
- K đó cho thêm 4 textboxes t ế ươ ng ng và đ t tên chúng là ứ ặ txtTitle, txtYearPublished, txtISBN và txtPublisherID..
- T i đây, m c d u ch a vi t m t hàng code, ta có th ch y ch ớ ặ ầ ư ế ộ ể ạ ươ ng trình đ ượ ồ c r i..
- Nó s hi n th chi ti t c a record đ u tiên trong table Titles nh d ẽ ể ị ế ủ ầ ư ướ i đây:.
- B n có th b m các nút di chuy n ạ ể ấ ể Navigator Buttons đ đi đ n các record ể ế đ u ầ (first), tr ướ c (previous), k (next) ế và cu i (last) ố .
- M i l n b n di chuy n đ n ỗ ầ ạ ể ế m t record m i là chi ti t c a record y s hi n th .
- N u không dùng các ộ ớ ế ủ ấ ẽ ể ị ế Navigator Buttons, ta cũng có th code đ làm công tác t ể ể ươ ng đ ong b ng cách ư ằ g i các Recordset ọ methods MoveFirst, MovePrevious, MoveNext và.
- Khi record cu i c a Recordset đang hi n th , n u ta g i method MoveLast thì ố ủ ể ị ế ọ property EOF (End-Of-File) c a Recordset tr thành True.
- T ủ ở ươ ng t nh v y, ự ư ậ khi record th nh t c a Recordset đang hi n th , n u ta g i method ứ ấ ủ ể ị ế ọ.
- Đ c tính hi n th d li u trong các textboxex theo đúng record hi n th i ặ ể ị ữ ệ ệ ờ.
- Khi record đ u tiên đang hi n th , n u b n edit ầ ể ị ế ạ Year Published đ đ i t 1985 ể ổ ừ thành 1983 r i click Navigator button Next đ hi n th record th nhì, k đó ồ ể ể ị ứ ế click Navigator button Previous đ hi n th l i record đ u tiên thì b n s th y là ể ể ị ạ ầ ạ ẽ ấ field Year Published c a record đ u tiên đã th t s đ ủ ầ ậ ự ượ c thay đ i (updated) ổ thành 1983..
- Ch a ch c là b n mu n đi u n y, do đó, n u b n không mu n ể ư ắ ạ ố ề ầ ế ạ ố user tình c edit m t record thì b n có th set ờ ộ ạ ể property Locked c a các ủ.
- Ch đ nh v trí Database lúc ch y ch ỉ ị ị ạ ươ ng trình.
- Cách ch đ nh tên DatabaseName trong giai đo n thi t k (at design time) ta đã dùng ỉ ị ạ ế ế tr ướ c đây tuy ti n l i nh ng h i nguy hi m, vì khi ta cài ch ệ ợ ư ơ ể ươ ng trình n y lên ầ.
- ủ ư ắ ấ ằ ộ Thí d trên computer mình thì database n m trong folder E:\Program Files\Microsoft ụ ằ Visual Studio\VB98, nh ng trên computer c a khách thì database n m trong folder C:\ ư ủ ằ VB6\DataControl ch ng h n.
- Do đó, khi ch ẳ ạ ươ ng trình kh i đ ng ta nên xác đ nh l i ở ộ ị ạ v trí c a database.
- Gi d ta mu n đ database trong cùng m t folder v i ch ị ủ ả ụ ố ể ộ ớ ươ ng trình đang ch y, ta có th dùng ạ ể property Path c a Application Object ủ App nh sau: ư.
- Data1.DatabaseName = AppFolder &.
- V i cách code nói trên ta s đ m b o ch ớ ẽ ả ả ươ ng trình tìm th y file database đúng ch , ấ ỗ không c n bi t ng ầ ế ườ i ta cài ch ươ ng trình b n đâu trong hard disk c a computer ạ ở ủ khách..
- Ch ươ ng trình trên dùng cũng t m đ ạ ựợ c, nh ng nó không cho ta ph ư ươ ng ti n đ thêm ệ ể (add), b t (delete) các records.
- M c d u b n không th y, nh ng th t ra Control Data ặ ầ ạ ấ ư ậ Data1 có m t ộ property Recordset và khi ta dùng Navigator buttons là di chuy n t record n y đ n record ể ừ ầ ế khác trong Recordset y.
- Ta có th nói đ n nó b ng Notation (cách vi t) ấ ể ế ằ ế.
- Data1.Recordset, và m i l n mu n l y Recordset m i nh t t database ta dùng ỗ ầ ố ấ ớ ấ ừ method Refresh nh ư Data1.Recordset.Refresh..
- Lúc chu ng trình m i kh i đ ng, user đang xem (browsing) các records thì hai buttons ơ ớ ở ộ Update và Cancel không c n ph i làm vi c.
- Sub SetControls đ ượ c g i trong ọ Sub Form_Load khi ch ươ ng trình kh i đ ng và ở ộ trong Sub CmdEdit khi user click nút Edit nh sau: ư.
- Thành ra ta ph i ki m tra đi u đó, n u đúng v y thì l i ph i ẽ ả ể ề ế ậ ạ ả MoveLast đ hi n th record cu i c a Recordset nh trong code c a ể ể ị ố ủ ư ủ Sub.
- Private Sub CmdDelete_Click() On Error GoTo DeleteErr With Data1.Recordset ' Delete new record .Delete.
- Nh ng ta ch có th g i method Update c a m t Recordset khi Recordset ư ỉ ể ọ ủ ộ đang trong ở Edit hay AddNew mode.
- Ta đ t m t Recordset vào Edit mode b ng ặ ộ ằ cách g i ọ method Edit c a Recordset, thí d nh ủ ụ ư Data1.Recordset.Edit.
- T ươ ng t ự nh v y, ta đ t m t Recordset vào AddNew mode b ng cách g i ư ậ ặ ộ ằ ọ method AddNew c a Recordset, thí d nh ủ ụ ư Data1.Recordset.AddNew..
- Place Recordset into Recordset AddNew mode Data1.Recordset.AddNew.
- Ta cũng có th t thoát ra kh i AddNew hay Edit modes, hay nói cho ể ự ỏ đúng h n là h y b m i pending (đang ch đ i) Update b ng cách g i ơ ủ ỏ ọ ờ ợ ằ ọ method CancelUpdate, thí d nh ụ ư Data1.Recordset.CancelUpdate..
- Trong ch ươ ng trình hi n t i ta ch hi n th lý l ch nhà xu t b n (PubID) c a Title, ệ ạ ỉ ể ị ị ấ ả ủ ch không có thêm chi ti t.
- Ph i chi m c d u ch ớ ế ả ặ ầ ươ ng trình l u tr ư ữ PubID, nh ng ư hi n th đ ể ị ượ c Company Name c a nhà xu t b n cho ta làm vi c đ kh i ph i nh ủ ấ ả ệ ể ỏ ả ớ các con s thì hay quá.
- Ta có th th c hi n đi u đó b ng cách dùng Control ố ể ự ệ ề ằ.
- Cái m c đích c a chúng ta khi dùng DBCombo1 là hi n th Company Name c a nhà ụ ủ ể ị ủ xu t b n, nh ng đ ng sau l ng thì không có gì thay đ i, t c là ta v n làm vi c v i ấ ả ư ằ ư ổ ứ ẫ ệ ớ PubID cho các record Title c a Data1.
- Khi user click lên DBCombo1 đ ch n m t nhà ủ ể ọ ộ xu t b n, thì ta theo Company Name đó mà ch a PubID t ấ ả ứ ươ ng ng trong record Title ứ c a Data1.
- Listfield Company Name.
- Khi RowSource phía trên đã đ ượ c ch n r i, Combo c a ọ ồ ủ property Listfield n y s hi n th các fields c a table ầ ẽ ể ị ủ Publishers.
- Company Name là field c a RowSource mà ta ủ mu n hi n th trên DBCombo1.
- Khi trong Edit mode user ch n m t Company Name khác trong DBCombo1 r i click ọ ộ ồ nút Update b n s th y Textbox txtPublisherID cũng đ i theo và hi n th con s lý ạ ẽ ấ ổ ể ị ố l ch PubID m i.
- N u tr ị ớ ế ướ c khi Update b n mu n th y PubID m i hi n th trong ạ ố ấ ớ ể ị Textbox txtPublisherID thì b n có th dùng Event Click c a DBCombo1 nh sau: ạ ể ủ ư.
- Property BoundText c a DBCombo1 là tr s c a BoundColumn mà ta có th truy ủ ị ố ủ ể c p (vi t hay đ c) đ ậ ế ọ ượ c.
- B n ứ ạ có th assign tr s 324 vào property BoundText c a DBCombo1 trong Sub ể ị ố ủ

Xem thử không khả dụng, vui lòng xem tại trang nguồn
hoặc xem Tóm tắt