本文歡迎非商業(yè)用途的轉(zhuǎn)載,但需要注明出自“編程入門網(wǎng)”及相應(yīng)的網(wǎng)址鏈接。
我用的是Access 2003,因為需要講解的僅僅是數(shù)據(jù)的添加、修改及刪除,因此單數(shù)據(jù)庫、單表就夠了。如果以后您要編寫更復(fù)雜一些的信息管理系統(tǒng)而涉及到多表操作,則您還需要補充一些關(guān)系數(shù)據(jù)庫方面的知識,比如實體、一對一聯(lián)系、一對多聯(lián)系等等;此外,對sql語言也需要有所了解。具體您可以參考:數(shù)據(jù)庫基礎(chǔ)知識ABC。
首先,在“我的電腦”的e盤新建一個名為vb文件夾,先打開Access,新建一個名為Access_db的數(shù)據(jù)庫(Access數(shù)據(jù)庫文件的擴(kuò)展名是.mdb(2007不是)),保存到剛才建立的文件夾中,則以后在程序中調(diào)用數(shù)據(jù)源的位置為E:\vb\Access_db.mdb。
然后在Access_db.mdb中建立一個名為wzdz的表(wzdz是“網(wǎng)站地址”的首字母縮寫), 然后在wzdz表中添加網(wǎng)站名稱、網(wǎng)站地址及網(wǎng)站描述三個字段,三個字段的屬性是相同的,如下:
▲數(shù)據(jù)類型:文本。
▲字段大小:50
▲有效性規(guī)則:無。
▲必填字段:否
▲允許空字符串:否
▲索引:無
“編號”這個字段使用的是Access的自動編號,并將其作為主鍵。也就是說,您在表中設(shè)置以上三個字段即可,設(shè)置完畢保存表時,按Access的提示添加主鍵,Access會自動為您搞定。具體操作您可以參考:vb神童教程(續(xù))--vb連接Access數(shù)據(jù)庫實例
這樣在建立了數(shù)據(jù)庫及表結(jié)構(gòu)之后,即使是調(diào)用沒有記錄的空庫,系統(tǒng)也可以無差錯運行,可以在運行時通過“添加記錄”按鈕向數(shù)據(jù)庫中添加記錄。不過由于數(shù)據(jù)庫是空的,系統(tǒng)第一次運行時數(shù)據(jù)顯示控件沒有數(shù)據(jù)可顯示,顯得空蕩蕩的,不太美觀哦。為了方便起見,我們在Access中給wzdz表中預(yù)先添加兩條初始記錄:
二、設(shè)計界面
本系統(tǒng)是一個很簡單的數(shù)據(jù)庫操作實例,能夠?qū)?shù)據(jù)庫的添加、修改及刪除記錄這幾個基本的操作。系統(tǒng)使用數(shù)據(jù)顯示控件MSHFlexGrid顯示數(shù)據(jù)庫中的記錄,使用數(shù)據(jù)鏈接控件Adodc鏈接數(shù)據(jù)庫作為MSHFlexGrid的數(shù)據(jù)源,使用文本框來接收系統(tǒng)運行時用戶輸入的數(shù)據(jù)。
步驟如下:
一、啟動vb6,新建一個標(biāo)準(zhǔn)exe工程,并將工程中的form1的caption屬性設(shè)置為“編程入門網(wǎng)網(wǎng)址管理系統(tǒng)”,width屬性值設(shè)為7950,height屬性值設(shè)為4620。
二、向窗體中添加一個Adodc控件。如果在工具箱中找不到Adodc控件,可以右擊工具箱,選擇“部件...”菜單項,然后在“部件”窗口的“控件”選項卡中選中“Microsoft ADO Data Control6.0(OLEDB)”。(ADODC)
) 在VB的屬性窗口我們對Adodc控件的三個個屬性值進(jìn)行編輯,其余屬性值使用默認(rèn)的即可:
1、ConnectionString屬性值設(shè)為:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\vb\Access_db.mdb;Persist Security Info=False
這個屬性設(shè)置了連接Access_db.mdb這個數(shù)據(jù)庫。
2、RecordSourc屬性值設(shè)為:select * from wzdz
這個屬性值中的sql語句的作用是查詢出wzdz表中的所有記錄。
3、Visible屬性值設(shè)為False,作用是使其在運行時不可見。
三、向窗體添加一個MSHFlexGrid控件,(延伸)如果工具箱中沒有MSHFlexGrid控件,可以右擊工具箱,選擇“部件...”菜單項,然后在“部件”窗口的“控件”選項卡中選中“Microsoft Hierarchical FlexGrid Control 6.0 ”。然后在vb的屬性窗口中將MSHFlexGrid控件的名稱修改為MS1,如下圖:
然后對MSHFlexGrid控件進(jìn)行如下設(shè)置:
1、DataSource屬性:在vb的屬性窗口中將其值設(shè)為Adodc1,即使用Adodc控件作為MSHFlexGrid控件數(shù)據(jù)源。
2、BackColorBkg屬性:在vb的屬性窗口中將其值設(shè)為&H00FFE0E0&,這是設(shè)置的MSHFlexGrid控件的底色。
3、BackColorFixed屬性:在vb的屬性窗口中將其值設(shè)為&H00C0FFFF&,這是設(shè)置的MSHFlexGrid控件的顯示標(biāo)題的底色。
4、width屬性:在vb的屬性窗口中將其值設(shè)為7695.
5、Height屬性:在vb的屬性窗口中將其值設(shè)為2175.
6、右擊MSHFlexGrid控件,在彈出的菜單中選“屬性”,在彈出的“屬性頁”對話框的在“通用”選項卡中修改行為4,修改列為4,修改固定行為0,修改固定列為0。如果數(shù)據(jù)鏈接正常,在“屬性頁”對話框的“帶區(qū)”選項卡中可以看到列標(biāo)題和列名稱已經(jīng)設(shè)置了,這里注意應(yīng)該將“帶區(qū)”選項卡中的“列標(biāo)頭”選項勾選上,否則運行時無法顯示列標(biāo)題,如下圖。“屬性頁”對話框的其它部分使用默認(rèn)值即可。
四、向窗體中添加4個Label控件(標(biāo)簽),在vb的屬性窗口為它們設(shè)置以下屬性:
1、caption屬性:分別設(shè)置為網(wǎng)站名稱、網(wǎng)站地址、網(wǎng)站描述及編號。
2、Alignment屬性:均設(shè)為“2-Center”。
3、AutoSize屬性:均設(shè)為True。
五、向窗體中添加4個TextBox控件(文本框),并調(diào)整它們的位置成一排與4個標(biāo)簽相對應(yīng),即:網(wǎng)站名稱→Text1,網(wǎng)站地址→Text2,網(wǎng)站描述→Text3,編號→Text4。
六、向窗體中添加4個CommandButton控件(命令按鈕),將它們的caption屬性分別設(shè)置為“添加記錄”、“修改記錄”、“刪除記錄”和“退出系統(tǒng)”,并調(diào)整它們的位置成一排,放在文本框的下方。
七、在兩排文本框和命令按鈕中間,添加一個Line控件,適當(dāng)拖動其兩端的控制點將長短調(diào)整至適當(dāng),并將其BorderColor屬性性設(shè)為&H00C00000&,作用是把文本框和命令按鈕隔開,這樣在視覺上似乎能好看些。
八、所有控件設(shè)置完畢后,界面如下圖所示:
三、為對象添加事件代碼。
一、form1的load事件代碼:
Private Sub Form_Load()
Form1.MS1.ColWidth(0) = 600 ' 控件名.ColWidth(I) 控件的第(I+1)列寬
Form1.MS1.ColWidth(1) = 1000 Form1.MS1.ColWidth(2) = 2300 Form1.MS1.ColWidth(3) = 4000 Form1.Text1.Text = "" Form1.Text2.Text = "" Form1.Text3.Text = "" Form1.Text4.Text = "" End Sub 主要是在系統(tǒng)初始化時設(shè)置MSHFlexGrid控件的列寬,并將文本框置空。
二、“添加記錄”按鈕(command1)的click事件代碼:
Private Sub Command1_Click()
Dim sc As Integer
If Text1.Text = "" Or Text2.Text = "" Or Text3.Text = "" Then
'即網(wǎng)站名稱、網(wǎng)站地址和網(wǎng)站描述的內(nèi)容必須填全了才打開數(shù)據(jù)庫連接寫入數(shù)據(jù)
'由于系統(tǒng)數(shù)據(jù)庫設(shè)計為“編號”字段采用的是Access的自動編號 '因此在添加記錄時不接收編號的數(shù)據(jù),由Access自動加編號 MsgBox ("請輸入完整的網(wǎng)站信息")
Else
sc = MsgBox("確實要添加這條記錄嗎?", vbOKCancel, "提示信息")
If sc = 1 Then '運行時如果用戶點擊的是MsgBox提示框的“確定”按鈕,返回值是1 /*定義ADODB的二個屬性*/
Dim conn As New ADODB.Connection /*為什么不是ADODC?而是ADODB?*/ Dim rs As New ADODB.Recordset
/*下面是定義connection屬性*/
Dim Str1 As String Dim Str2 As String Dim Str3 As String Str1 = "Provider=Microsoft.Jet.OLEDB.4.0;" Str2 = "Data Source=E:\vb\Access_db.mdb;" Str3 = "Jet OLEDB:Database Password=" ‘帶密碼的庫寫法 conn.Open Str1 & Str2 & Str3 /*用打開方法打開數(shù)據(jù)庫*/
strSQL = "select * from wzdz"
rs.Open strSQL, conn, 3, 3 /*寫法格式*/3行,3列?
rs.AddNew
rs!網(wǎng)站名稱 = Text1.Text /*!*/
rs!網(wǎng)站地址 = Text2.Text rs!網(wǎng)站描述 = Text3.Text rs.Update rs.Close conn.Close MsgBox ("添加記錄成功!")
Adodc1.Refresh
'刷新數(shù)據(jù)源,MSHFlexGrid控件會實時刷新顯示數(shù)據(jù) End If
'以下四條語句的作用是在操作完成后將文本框置空 Text1.Text = ""
Text2.Text = "" Text3.Text = "" Text4.Text = "" End If
End Sub
三、“修改記錄”按鈕(command2)的click事件代碼:
Private Sub Command2_Click()
If Not IsNumeric(Text4.Text) Or Val(Text4.Text) = 0 Then
'編號字段是Access的自動編號,為自然數(shù)
'因此對text4的內(nèi)容進(jìn)行校驗,如果不是數(shù)值或為0則跳出sub過程 MsgBox "記錄號是大于0的自然數(shù),請輸入正確的編號!"
Exit Sub
End If
If Text1.Text = "" Or Text2.Text = "" Or Text3.Text = "" Then
'對三個文本框的內(nèi)容進(jìn)行校驗,不接收空值
MsgBox "請輸入完整的網(wǎng)站信息!"
Exit Sub
End If
Dim sc As Integer
sc = MsgBox("確實修改這條記錄嗎?", vbOKCancel, "提示信息") If sc = 1 Then
'運行時如果用戶點擊的是MsgBox提示框的“確定”按鈕,返回值是1
Dim conn As New ADODB.Connection Dim rs As New ADODB.Recordset
Dim Str1 As String
Dim Str2 As String Dim Str3 As String Str1 = "Provider=Microsoft.Jet.OLEDB.4.0;" Str2 = "Data Source=E:\vb\Access_db.mdb;" Str3 = "Jet OLEDB:Database Password=" conn.Open Str1 & Str2 & Str3
strSQL = "select * from wzdz where 編號=" & Val(Text4.Text) & "" rs.Open strSQL, conn, 3, 3
If rs!編號 = Val(Text4.Text) Then
'由于系統(tǒng)數(shù)據(jù)庫使用的是自動編號作為主鍵 '因此以編號字段的內(nèi)容作為判斷的依據(jù) '如果rs!編號 = Val(Text4.Text)說明數(shù)據(jù)庫中有此記錄, '才會修改其它三個字段的內(nèi)容 '否則給出“不存在此記錄”的提示信息并關(guān)閉數(shù)據(jù)連接 rs!網(wǎng)站名稱 = Text1.Text
rs!網(wǎng)站地址 = Text2.Text rs!網(wǎng)站描述 = Text3.Text rs.Update
rs.Close
conn.Close
MsgBox ("修改記錄成功!")
Adodc1.Refresh '刷新數(shù)據(jù)源,MSHFlexGrid控件會實時刷新顯示數(shù)據(jù)
Else
MsgBox ("不存在此記錄!") Text1.Text = "" Text2.Text = "" Text3.Text = "" Text4.Text = ""
rs.Close
conn.Close
Exit Sub
End If
End If
'以下四條語句的作用是在操作完成后將文本框置空
Text1.Text = ""
Text2.Text = "" Text3.Text = "" Text4.Text = "" End Sub
四、“刪除記錄”按鈕(command3)的click事件代碼:
Private Sub Command3_Click()
If Not IsNumeric(Text4.Text) Or Val(Text4.Text) = 0 Then
'編號字段是Access的自動編號,為自然數(shù)
'因此對text4的內(nèi)容進(jìn)行校驗,如果不是數(shù)值或為0則跳出sub過程 MsgBox "編號是大于0的自然數(shù),請輸入正確的編號!" Exit Sub
End If
Dim sc As Integer
sc = MsgBox("確實要刪除這個記錄嗎?", vbOKCancel, "刪除確認(rèn)!")
If sc = 1 Then
'運行時如果用戶點擊的是MsgBox提示框的“確定”按鈕,返回值是1
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim Str1 As String
Dim Str2 As String Dim Str3 As String Str1 = "Provider=Microsoft.Jet.OLEDB.4.0;" Str2 = "Data Source=E:\vb\Access_db.mdb;" Str3 = "Jet OLEDB:Database Password=" conn.Open Str1 & Str2 & Str3
strSQL = "select * from wzdz where 編號=" & Val(Text4.Text) & ""
rs.Open strSQL, conn, 3, 3
If rs!編號 = Val(Text4.Text) Then
'由于系統(tǒng)數(shù)據(jù)庫使用的是自動編號作為主鍵 '因此以編號字段的內(nèi)容作為判斷的依據(jù) '如果rs!編號 = Val(Text4.Text)說明數(shù)據(jù)庫中有此記錄并進(jìn)行刪除操作 '否則給“不存在此記錄”的提示信息并關(guān)閉數(shù)據(jù)連接 rs.Delete rs.Close
conn.Close
MsgBox ("刪除記錄成功!")
Adodc1.Refresh '刷新數(shù)據(jù)源,MSHFlexGrid控件會實時刷新顯示數(shù)據(jù)
Else
MsgBox ("不存在此記錄!")
Text4.Text = ""
rs.Close
conn.Close
Exit Sub
End If
End If
'以下四條語句的作用是在操作完成后將文本框置空 Text1.Text = "" Text2.Text = "" Text3.Text = "" Text4.Text = "" End Sub 五、“退出系統(tǒng)”按鈕(command4)的click事件代碼:
Private Sub Command4_Click()
Dim sc As Integer
sc = MsgBox("確實要退出系統(tǒng)嗎?", vbOKCancel, "提示信息")
If sc = 1 Then
'運行時如果用戶點擊的是MsgBox提示框的“確定”按鈕,返回值是1
End
End If End Sub 六、添加完事件代碼之后,我們這個實例至此完成,運行一下吧! |
|