TT. Visual Basic
Trang 61
Hình IV.5: Khóa (lock) Textbox
CH ĐỊNH V TRÍ CƠ S D LIU LÚC CHY CHƯƠNG TRÌNH
Bước 7: Cách ch định tên cơ s d liu trong giai đon thiết kế (at design time) ta đã
dùng trước đây tuy tin li nhưng hơi nguy him, vì khi ta cài chương trình ny lên
máy tính khác, chưa chc tp tin cơ s d liu y nm trong mt thư mc có cùng tên.
Ví d trên máy tính này thì cơ s d liu nm trong thư mc E:\Program
Files\Microsoft Visual Studio\VB98, nhưng trên máy tính khác thì cơ s d liu nm
trong thư mc D:\Basic\Bt4-1 chng hn. Do đó, khi chương trình khi động ta nên
xác định li v trí ca cơ s d liu. Chng hn ta mun để cơ s d liu trong cùng
mt thư mc vi chương trình đang chy, ta có th dùng thuc tính Path ca
Application Object App.
Khai báo mt biến tên duongdan trong phn [General]\[Declaration] ca
Form1:
Dim duongdan As String
Bước 8: Ta x lý s kin Form_Load như sau:
Private Sub Form_Load()
duongdan = App.Path
If Right(duongdan, 1) <> "\" Then duongdan = duongdan & "\"
Data1.DatabaseName = duongdan & "BIBLIO.MDB"
End Sub
THÊM BT CÁC RECORDS
Bước 9: Chương trình đến đây tm n, nhưng nó không cho ta công c để thêm (add),
bt (delete) các records. Bây gi hãy đặt vào Form 5 buttons tên: cmdEdit, cmdNew,
cmdDelete, cmdUpdatecmdCancel.
TT. Visual Basic
Bước 10: Lúc chương trình mi khi động, người s dng đang xem thông tin các
records thì hai buttons UpdateCancel không cn phi làm vic. Do đó ta s Lock
(khóa) các textboxes và disable hai buttons ny vì không cn dùng chúng.
Bước 11: Trong Sub SetControls dưới đây, ta dùng mt tham s gi là Editing vi tr
s False hay True tùy theo người dùng đang xem (browse) hay sa đổi (Edit), ta gi là
Browse modeEdit mode. Trong Edit mode, các Textboxes được unlocked (m
khóa) và các nút cmdNew, cmdDeletecmdEdit tr nên vô hiu lc:
Sub SetControls(ByVal Editing As Boolean)
' Lock/Unlock textboxes
txtTitle.Locked = Not Editing
txtYearPublished.Locked = Not Editing
txtISBN.Locked = Not Editing
txtPublisherID.Locked = Not Editing
' Enable/Disable buttons
CmdUpdate.Enabled = Editing
CmdCancel.Enabled = Editing
CmdDelete.Enabled = Not Editing
cmdNew.Enabled = Not Editing
CmdEdit.Enabled = Not Editing
End Sub
Trong Browse mode, Form có dng như sau:
Hình IV.7: Kết qu thc thi
Bước 12: Th tc SetControls được gi trong Sub Form_Load khi chương trình khi
động và s kin CmdEdit_Click đưc x lý như sau:
Private Sub Form_Load()
duongdan = App.Path
If Right(duongdan, 1) <> "\" Then duongdan = duongdan & "\"
Data1.DatabaseName = duongdan & "BIBLIO.MDB"
SetControls (False)
End Sub
Private Sub CmdEdit_Click()
Trang 62
TT. Visual Basic
Trang 63
SetControls (True)
End Sub
Bước 13: Khi ta xóa mt record trong recordset, v trí ca record hin ti (current
record) vn không thay đổi. Do đó, sau khi xóa mt record ta phi MoveNext. Tuy
nhiên, nếu ta va xóa record cui ca Recordset thì sau khi MoveNext, thuc tính
EOF ca Recordset s thành True. Thành ra ta phi kim tra điu đó, nếu đúng vy thì
li phi MoveLast để hin th record cui ca Recordset như trong đon mã ca Sub
cmdDelete_Click dưới đây:
Private Sub CmdDelete_Click()
On Error GoTo DeleteErr
With Data1.Recordset
' Xoa record
.Delete
' Nhay den record ke
.MoveNext
If .EOF Then .MoveLast
Exit Sub
End With
DeleteErr:
MsgBox Err.Description
Exit Sub
End Sub
Bước 14: Ta có th Update (cp nht) mt record trong Recordset bng hàm Update.
Nhưng ta ch có th gi hàm Update ca mt Recordset khi Recordset đang trong
Edit hay AddNew mode. Ta đặt mt Recordset vào Edit mode bng cách gi hàm
Edit ca Recordset, thí d như Data1.Recordset.Edit. Tương t như vy, ta đặt mt
Recordset vào AddNew mode bng cách gi hàm AddNew ca Recordset, thí d như
Data1.Recordset.AddNew.
Private Sub cmdNew_Click()
Data1.Recordset.AddNew
SetControls (True)
End Sub
Private Sub cmdUpdate_Click()
Data1.Recordset.Edit
Data1.Recordset.Update
SetControls (False)
End Sub
Bước 15: Lưu d án và chy chương trình.
TT. Visual Basic
Bài tp 4-2
CÁC ĐỐI TƯỢNG CƠ BN CA DAO
Bước 1: To thư mc Basic\Bt4-2. To giao din cho chương trình như sau:
Hình IV.8: Giao din ban đầu
Các tên ca thành phn menu ln lượt là: mnuFile, mnuOpen, mnuExit.
Sau đó vào Project\References…, đánh du vào Microsoft DAO 3.51 Object
Library; chn OK.
Bước 2: Thêm mt Common Dialog vào Form1, tên là dlgDatabase.
Bước 3: Thêm mt DBGrid vào form bng cách chn: Project\Components…, đánh
du Microsoft Data Bound Grid Control 5.0 (SP3); ri chn DBGrid trên ToolBox.
Sau đó thêm mt TextBox và mt Data Control vào form1. Ta có các tên ca điu
khin là: DBGrid1, Text1, Data1 vi các thuc tính như sau:
Item 1: TextBox
Name: Text1
Multiline: True
ScrollBars = 3
Item 2: DBGrid
Name: DBGrid1
DataSource = Data1
Ta được hình dng ca form1 như sau:
Trang 64
TT. Visual Basic
Trang 65
Hình IV.9: Giao din
đầy đủ
Sau đó, thêm đon mã sau trong th tc x lý s kin mnuOpen_Click:
CommonDialog1.FileName = "*.mdb"
CommonDialog1.Filter = "Access DBs (*.mdb)|*.mdb"
CommonDialog1.ShowOpen
Data1.DatabaseName = CommonDialog1.FileName
Bước 4: Thêm mt nút nhn (Button) như hình trên, Caption là Run query. Nút này có
mc đích là thc thi câu lnh SQL mà người dùng nhp vào ô Text1. Để thc thi được
lnh SQL này, ta phi gán thuc tính Recordsource ca Data Control Data1 như trong
th tc x lý s kin Command1_Click:
Private Sub Command1_Click()
Data1.RecordSource = Text1.Text
Data1.Refresh
End Sub
Bước 5: Trong hàm x lý s kin mnuExit_Click thêm dòng mã sau:
End
Chy chương trình, trong mc File\Open ca menu chn tp tin C:\Program
Files\Microsoft Visual Studio\VB98\Biblio.mdb. Sau đó ta gõ câu lnh SQL sau vào
Text Box:
Select * from Publishers
Nhp chut vào nút nhn Run query. Quan sát kết qu hin th.
Ta đã to mt chương trình cho phép người s dng để m mt CSDL và chy
câu SQL trên CSDL đó. Bây gi, đối vi CSDL được m trên, tìm xem các bng ca
nó là gì nhm mc đích xây dng các câu truy vn cho phù hp.
Bước 6: Thêm đon mã sau vào phn khai báo ca Form1:
Private db As DAO.Database
Private td As DAO.TableDef
Private qd As DAO.QueryDef
Private fld As DAO.Field