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