一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

access+ado+flexgrid實例

 悟靜 2009-06-11
本文歡迎非商業(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  六、添加完事件代碼之后,我們這個實例至此完成,運行一下吧!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美人妻少妇精品久久性色| 国产自拍欧美日韩在线观看| 91麻豆精品欧美一区| 国产内射一级二级三级| 欧洲偷拍视频中文字幕| 国产精品美女午夜视频| 高潮日韩福利在线观看| 午夜精品国产精品久久久| 日韩精品一级片免费看| 国产又猛又大又长又粗| 成人精品一级特黄大片| 亚洲一区二区三区四区性色av| 国产一区二区三区香蕉av| 国语久精品在视频在线观看| 日本成人三级在线播放| 国产精品日韩欧美第一页| 日本一本在线免费福利| 日本婷婷色大香蕉视频在线观看| 亚洲精品福利视频你懂的| 午夜视频成人在线观看| 精品国模一区二区三区欧美| 夫妻性生活动态图视频| 亚洲中文字幕熟女丝袜久久| 日本加勒比中文在线观看| 精品国模一区二区三区欧美| 中文字字幕在线中文乱码二区| 国产一区二区熟女精品免费| 九九热精品视频免费在线播放| 亚洲欧美日韩中文字幕二欧美 | 爱在午夜降临前在线观看| 大尺度激情福利视频在线观看| 欧美六区视频在线观看| 国产又大又硬又粗又湿| 大香蕉精品视频一区二区| 国产精品亚洲一区二区| 日本高清中文精品在线不卡| 欧美日韩国产欧美日韩| 99久热只有精品视频免费看| 国产人妻精品区一区二区三区| 亚洲国产成人爱av在线播放下载 | 日韩在线一区中文字幕|