You are on page 1of 35

Trng H Quang Trung Khoa KT CN Lp K2 - 101

Hin nay ang tn ti kh nhiu cc k thut

lp trnh CSDL, tuy nhin nhm ch trnh by hai k thut cn bn l DAO (Data Access Objects) v ADO (ActiveX Data Objects) thng qua cc bi ton lp trnh CSDL c th nh: - Bi ton cp nhp d liu. - Cc phng php trnh by d liu. - Bi ton tm kim, t lc d liu. - Bi ton thit k in d liu.
2

I. C s d liu:
1. Cch to CSDL: C nhiu cch to CSDL nh: - To CSDL bng cch s dng Data Form Wizard. - To CSDL vi MS Access. - To CSDL vi SQL. - To CSDL vi Visual Foxpro. -
3

2. CSDL ca phn l thuyt v cc v d s c trnh by thng qua h CSDL mu trn Access nh sau:

II. K thut DAO:


DAO (Data Access Objects - Cc i

tng truy xut d liu) l tp hp bao gm lp cc i tng c th dng lp trnh truy cp v x l d liu trong cc h CSDL. y l CSDL Access, ngn ng lp trnh VB.

Cch thc lp trnh trn mt h CSDL c

m t tng qut nh sau:

Trong :

- Tng ng dng: bao gm nhng giao din ngi s dng cng nh nhng cng c n gin m ngi lp trnh c th dng x l d liu theo cc bi ton. - Tng Kt ni d liu: bao gm tp hp cc cng c, phng thc kt ni ti nhng d liu cn lm vic trong CSDL. - Tng C s d liu: bao gm cc bng, cc query trong c s d liu thc ti.

1. Lp i tng DAO:
Cu trc mt CSDL bao gm nhiu thnh phn, i

hi vic lp trnh cng cn c nhng thnh phn tng ng lm vic. Lp cc thnh phn tng ng c th lp trnh c trn ton b cu trc CSDL l lp cc i tng DAO. Cy phn cp lp cc i tng DAO sau y th hin iu :
8

Trong :

Workspaces - nh ngha tp hp cc vng lm vic. Databases - nh ngha tp hp cc CSDL Access cn lm vic trn mt d n. RecordSets- nh ngha cc tp hp bn ghi (Records) cn lm vic. QueryDefs - nh ngha tp hp cc Query lm vic. Querydefs v Recordsets l kh nng truy xut, x l d liu (Data Manipulation) ca DAO. TableDefs - nh ngha tp hp cc bng (Table) cn lm vic. Relations - nh ngha tp hp cc quan h (Relationship) cn lm vic.
9

2. i tng Database:
Database l i tng dng lm vic vi mt CSDL

(trong trng hp ny c th hiu mt CSDL nh mt tp Access .MDB). Khai bo:


Dim db As DAO.Database ' Gn db cho mt CSDL c th Set db = OpenDatabase(C:\Baitap\Quanly.mdb) Lnh ng khikhngm c iCSD L : l vi v no db.Close

10

3. i tng RecordSet:
Recordset l i tng dng miu t tp hp cc bn

ghi ca mt bng, ca mt query hoc tp cc bn ghi kt qu ca vic thi hnh mt cu lnh SQL no . Khai bo: Set rs=db.OpenRecordset(<Name>) Trong : - Set rs = db.OpenRecordset l lnh to ra tp hp cc bn ghi t CSDL db gn vo bin kiu recordset rs. - <Name> l mt xu k t ch ra ngun d liu s tr v cho Recordset. Xu ny c th l tn mt bng, mt Query hoc mt cu lnh SQL.
11

Mt s thuc tnh ca Recordset:


Thuc tnh Name: Tr v xu k t trong tham s

<name> ca lnh gi Recordset. Thuc tnh AbsolutePosition: Cho bit v tr bn ghi hin ti (c tnh t 0). Thuc tnh RecordCount: Cho bit tng s bn ghi tr v trn Recordset Thuc tnh EOF: Cho bit con tr bn ghi hin ti c nm EOF hay khng? Nu c gi tr thuc tnh ny l True, tri li l False. Thuc tnh Fields: Dng tham chiu ti cc trng (Fields) trn tp hp cc bn ghi m Recordset tr v. Vi Field ca Recordset thng thng ngi ta hay s dng thuc tnh Value.

12

V d: Hin th gi tr trng tendouong trong

Recordset rs Msgbox rs.Fields(tendouong").Value hoc Msgbox rs.Fields(tendouong")

13

Mt s phng thc ca Recordset:


Phng thc Close: ng Recordset, gii phng b

nh. Ch thc hin hnh ng ny khi khng lm vic vi Recordset no . * Cc phng thc di chuyn bn ghi ca Recorset: Phng thc MoveFirts: chuyn con tr v bn ghi u tin. Phng thc MoveLast: di chuyn con tr v bn ghi cui cng. Phng thc MoveNext: Dch n bn ghi k sau. Phng thc Moverevious: Dch n bn ghi k trc.

14

V d 3: Duyt v hin th ton b Tendouong ca bng

Thucdon: Dim rs As DAO.Recordset Set rs = db.OpenRecordset(Thucdon") If rs.RecordCount > 0 Then rs.MoveFirst While rs.EOF = False MsgBox rs.Fields(Tendouong").Value rs.MoveNext Wend End If

15

Phng thc AddNew, Update: thm mi mt bn

ghi vo Recordset. Qui trnh thm mt bn ghi mi nh sau: 1. Ra lnh Addnew 2. Gn gi tr cho cc trng ca bn ghi mi 3. Ra lnh Update. V d: Thm mi mt ung vo bng Thucdon.
Dim rs As DAO.Recordset Set rs = db.OpenRecordset(Thucdon") rs.AddNew rs.Fields(Maloai") = B" rs.Fields(Madouong") = B10" rs.Fields(Tendouong") = Sting rs.Fields(Giatien") = 8000 rs.Update

16

Phng thc Edit, Update: sa d liu mt bn ghi

no trn recordset. Qui trnh sa mt bn ghi nh sau: 1. nh v ti bn ghi cn s trn recordset 2. Ra lnh Edit 3. Gn gi tr mi cho cc trng cn sa 4. Ra lnh Update. V d: Sa tn ung c m B10:
Dim rs As DAO.Recordset Set rs = db.OpenRecordset(SELECT * FROM Thucdon WHERE Madouong=B10 ) If rs.RecordCount > 0 Then rs.MoveFirst rs.Edit rs.Fields(Tendouong") = Number One" rs.Update

17

Phng thc Delete: xo bn ghi hin ti ra khi

Recordset. Khi bn ghi hin ti s b xo b khi CSDL. V d: Private Sub cmDelete_Click() Dim tbao
tbao = MsgBox(Da chac chan xoa chua?", vbYesNo + vbCritical)

If tbao = vbYes Then rs.Delete rs.MoveNext End If End Sub


18

4. i tng QueryDef.
i tng Querydef dng tham chiu ti cc Query

c sn (Buil-in) trn CSDL Access, hoc cng c th lp trnh to cc Query t cc cu lnh SQL. C php: - To mt Query mi: Set qr = db.CreateQueryDef(<tn query>) - Gn chui lnh SQL vo thuc tnh SQL ca query qr.SQL = Cu lnh SQL Trong : - Lnh Set qr = db.CreatQueryDef(<tn query>) to mt query mi ln CSDL. - Lnh qr.SQL=<cu lnh SQL> gn lnh SQL cn thc thi vo Query.
19

5. i tng TableDef:
i tng TableDef c dng tham chiu ti cc

bng d liu (Table) trn CSDL. Thng qua i tng ny c th thit k, chnh sa c cu trc cc bng d liu trong ch Run-time ca VB nh trn ch thit k bng Design View trn Access.

Mt s thuc tnh ca Recordset:


Thuc tnh Name: Cho bit tn bng c gn vo bin

kiu TableDef. Thuc tnh RecordCount: Cho bit tng s bn ghi hin c trn bng c gn bi bin TableDef. Thuc tnh DateCreated: Cho bit thi gian to ra bng c gn vo bin kiu TableDef.
20

Thuc tnh Fields: tham chiu ti cc trng ca

bng. V d: Hin th tn ca tt c cc trng trong mt bng Thucdon. Sub LietKeTenTruong(Thucdon As String) Dim tbl As DAO.TableDef Set tbl = db.TableDefs(Thucdon) For i = 0 To tbl.Fields.Count - 1 MsgBox tbl.Fields(i).Name Next End Sub

21

Mt s phng thc ca TableDef:


Phng thc CreateTableDef: to ra mt bng mi

t VB. C php: Set tbl = db.CreateTableDef(<Tn bng mi>) - Lnh ghi cu trc trn bng ang khai bo trn CSDL ch nh. db.TableDefs.Append tbl Phng thc CreateField: to ra cc trng cho mt bng kiu TableDef no . C php:
tbl.Fields.Append tbl.CreateField(<tn trng>,<KiuDL>,<ln>
22

6. i tng Relation:
i tng Relation dng to kt ni (RelationShip)

gia 2 bng trong CSDL. V d: to kt ni gia 2 bng Thucdon v Loai trong CSDL. Sub CreatRelationShip() Dim rls As DAO.Relation Set rls = db.CreateRelation("TaoQuanHe", Thucdon", Loai", dbRelationUpdateCascade) rls.Fields.Append rls.CreateField(Maloai") rls.Fields(Maloai").ForeignName = Maloai" db.Relations.Append rls End Sub
23

III. K thut ADO:


ADO (ActiveX Data Objects)

l cng ngh mi hn, khc phc c mt s cc nhc im ca DAO v thch nghi trn nhiu h CSDL. Kin trc ADO: Nh vy, c th s dng VB lp trnh CSDL s dng cng ngh ADO ta cn qua 2 lp: ADO v OLE DB.
- ADO cung cp tp hp cc i tng, cng c c th lp trnh x l h CSDL; - Trong khi , OLE DB l mt trnh cung cp cc dch v gip iu khin cc yu cu x l d liu t ADO. 24

1. i tng Connection.
i tng Connection dng kt ni ti ngun d liu

vt l cn lm vic. thit lp mt Connection cn phi khai bo mt bin c kiu ADODB.Connection; Cc thuc tnh kt ni ti CSDL c th hin qua mt chui kt ni (thng gi chui ny l Connection String). Trn chui ny c ch nh cc thuc tnh nh: + Provider - tn trnh cung cp dch v truy cp CSDL. y dng Microsoft.JET.OLEDB.3.51; + Data Source - ch nh ngun d liu truy cp. y ch nh ng dn ti tp CSDL Access cn lm vic. V d: C:\Project\QLTV\Data\Quanly.mdb
25

2. i tng Command.
i tng Command trong ADO thng dng thc thi

mt cu lnh truy vn SQL no . V d nh: vic xa, thm, cp nht cc bn ghi trong CSDL. Cch s dng i tng ny nh sau: - Bc 1: Khai bo mt bin i tng Command nh sau: Dim cmd As New ADODB.Command - Bc 2: Thit lp chui kt ni cho Command ny thng qua thuc tnh ActiveConnection. Chui ny ht nh chui s dng khi to Connection.
cmd.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.3.51; & "Data Source= " + App.Path + "\Quanly.mdb"

Hoc c th s dng thng qua Connection khi to nh

26

Bc 3: Gn cu lnh SQL cn thc thi thng qua thuc

tnh CommandText ca i tng Command. Gi s mun chn thm mt bn ghi mi ln bng NXB c gi tr (Maloai= B', Madouong=B11', Tendouong=Pepsi, Giatien=8000): cmd.CommandText = "INSERT INTO Thucdon (Maloai, Madouong, Tendouong, Giatien) & "VALUES (B', B11', Pepsi, 8000)" Bc 4: Ra lnh thc thi Command bi phng thc Excute. cmd.Execute V c bn, i tng Command trong ADO gn ging vi i tng QueryDef trong DAO!
27

3. i tng RecordSet.
i tng Recordset trong ADO cng gn ging nh

trong DAO, tc l c th trch lc d liu t CSDL. im khc bit ch yu gia Recorset trong ADO v DAO l: Recordset trong ADO ch c kh nng ch c, khng th cp nht c d liu. Nh vy nhng phng thc nh Delete, Addnew hay Update l khng c trn i tng recorset trong ADO. Bc 1: Khai bo mt bin i tng RecordSet nh sau: Dim rs As New ADODB.RecorSet Bc 2: Ra lnh thc thi cu lnh la chn SQL v gn tp hp cc bn ghi tr v vo bin Recordset ny.

28

S dng Data Form Wizard


To form:

29

Giao din form:

30

Bi ton cp nht d liu:


Thit k giao din:

31

M lnh ca cc nt lnh:
Private Sub cmdadd_Click(Index As Integer) Data1.Recordset.AddNew Text1.SetFocus End Sub -------------------------------------------Private Sub cmdclose_Click(Index As Integer) Unload Me End Sub ------------------------------------------------Private Sub cmddelete_Click(Index As Integer) Dim tbao tbao = MsgBox("da chac chan xoa chua?", vbYesNo) If tbao = vbYes Then Data1.Recordset.Delete End If End Sub

32

S dng DbGrid:

33

M lnh ca cc nt lnh:
Private Sub cmddelete_Click() Dim tbao tbao = MsgBox("Da chac chan xoa chua? ", vbYesNo) If thongbao = vbYes Then Data1.Recordset.Delete End If End Sub -------------------------------------------------Private Sub cmdclose_Click() Unload Me End Sub

34

Bi ton tm v lc d liu:
Thit k giao din:

35

You might also like