VB5.0數(shù)據(jù)庫數(shù)據(jù)的選項錄入及選項增減與編輯發(fā)布時間:2008-04-03 10:37:56 來源:編程愛好者網(wǎng)站 作者:編程愛好者網(wǎng)站 點擊:221 摘要:在VB5.0數(shù)據(jù)庫編程中,應用數(shù)據(jù)綁定組合框和數(shù)據(jù)綁定網(wǎng)格等控件實現(xiàn)了數(shù)據(jù)的選項錄入、選項增減與選項編輯,提高了數(shù)據(jù)錄入效率和準確性。
關鍵詞:選項錄入 選項增減 選項編輯 數(shù)據(jù)庫 高效準確地錄入數(shù)據(jù)已成為MIS系統(tǒng)急待解決的問題,也是衡量MIS系統(tǒng)成功的重要標志。本文在VB5.0數(shù)據(jù)庫編程中應用數(shù)據(jù)綁定組合框和數(shù)據(jù)綁定網(wǎng)格等控件實現(xiàn)了數(shù)據(jù)的選項錄入、選項增減與數(shù)據(jù)編輯,提高了數(shù)據(jù)錄入效率、準確性及靈活性。( 考察MIS系統(tǒng)涉及的數(shù)據(jù)性質(zhì)、值域范圍和變化程度,可以發(fā)現(xiàn)在MIS系統(tǒng)數(shù)據(jù)錄入中往往出現(xiàn)下列情況 (1)連續(xù)錄入的幾條記錄中,同名字段的內(nèi)容完全相同或基本相同,如省份、職稱等;用戶逐字錄入速度慢易出錯,因此應充分利用數(shù)據(jù)庫中的已有數(shù)據(jù),設置一個復制鍵將上條記錄中的同名字段的內(nèi)容復制到當前記錄的同名字段中; (2)有些字段的值域固定,因此程序應提供一個合法的選項框供用戶選擇來提高速度; 有些字段的值域較小且相對固定,但有一定的變化,如“省市”字段增設一個省或市,撤縣設市等等,程序除提供一個合法的基本的選項框供用戶選擇外,且應允許用戶對這個基本的選項框進行增減或編輯。 1 數(shù)據(jù)庫基本錄入界面的設計 首先用VB中的數(shù)據(jù)管理器創(chuàng)建一個Access數(shù)據(jù)庫“c:\MY.MDB”,在表“worker”中加入一個字段“Name”,然后在VB的缺省表單中拖入一個數(shù)據(jù)控件、一個文本框、一個表簽、一個命令按鈕組,合理設計界面布局,并設置各個控件的屬性,如表1。 加入下列代碼即可得到一個數(shù)據(jù)庫基本輸入窗口: Private Sub Command1-Click(Index As Integer) Select Case Index Case0’addnew Data1.Recordset.Addnew Text1.SetFocus Case1’edit Data1.Recordset.Edit Text1.SetFocus Case2’giveup Data1.Recordset.Cance1Update Data1.Refresh Case3’save Data1.Recordset. Update Data1.Refresh Case4’delete Data1.Recordset.Delete Data1.Refresh Case5’end End End Select End Sub 表一 控件名 屬性名 屬性值 Name Data1 Data DataBaseName "c:\MY.MDB" RecordSource "worker" Name Text1 Text Text "" DataSource "Data1" DataField Name Label Caption "姓名" Name Command1 CommandButton Index 0 1 2 3 4 5 Caption "新增""編輯""放棄""保存""刪除""退出" 2 設置CTRL鍵復制前條記錄同名字段的內(nèi)容 在連續(xù)錄入的幾條記錄中,同名字段的內(nèi)容完全相同或基本相同,此時若能充分利用 數(shù)據(jù)庫中的已有數(shù)據(jù),設置一個復制鍵將上條記錄中的同名字段的內(nèi)容復制到當前記錄的同名字段中,將能大提高數(shù)據(jù)錄入速度。為了便于用戶操作,將這一功能賦予CTRL鍵,用戶在錄入新記錄或編輯原有記錄時,只要按下CTRL鍵,則上條記錄中的同名字段的內(nèi)容就復制到當前記錄的同名字段中。程序如下: Option Explicit Dim last As String Private Sub Form-Activate() Dim mark As Variant mark=Data1.Recordset.Bookmark Data1.Recordset.MoveLast last=Data1.Recordset("name") Data1.Recordset.Bookmark=mark End Sub Private Sub Text1-KeyDown (KeyCode As Integer,Shift As Integer) If Shift=2 Then ’按下CTRL-KEY復制上條記錄中的同名字段的內(nèi)容 If Data1.Recordset.EditMode=dbEditInProgress Or Data1.Recordset.EditMode=dbEditAdd Then Text1.Text=last End If End If End Sub Private Sub Command1-Click(Index As Integer) Select Case Index Case0’addnew Data1.Recordset.Addnew Text1.SetFocus Case1’edit Data1.Recordset.Edit Text1.SetFocus Case2’giveup Data1.Recordset.Cance1Update Data1.Refresh Case3’save Data1.Recordset. Update Data1.Recordset.MoveLast last=Data1.Recordset("name") ’save the text to last Data1.Refresh Case4’delete Data1.Recordset.Delete Data1.Refresh Case5’end End End Select End Sub 3 數(shù)據(jù)的選項錄入、選項增減及選項編輯 有些字段的值域較小且相對固定,但會有一定的變化,如“省市”字段會產(chǎn)生變化,如增設一個省或市,撤縣設市等等,程序除提供一個合法的基本的選項框供用戶選擇外,還應允許用戶對這個基本的選項框進行增減或編輯。下面的程序?qū)崿F(xiàn)了此功能,用戶雙擊表單則可對選項框進行增減和編輯,完成后再雙擊表單關閉編輯功能。 先建立一個數(shù)據(jù)庫“c:myrand.mdb”,其表“rank”中加入一個字段“name”;再從工具箱中拖入一個數(shù)據(jù)控件Data2,一個數(shù)據(jù)綁定組合框Dbcombol和數(shù)據(jù)綁定網(wǎng)格控件DBgrid1。屬性設置為:(1)Data2控件的:DatabaseName屬性設為“c:\myrand.mdb”,RecordSource為“Rank”;(2)Dbcombo控件的:Name設為Dbcombo1,RowSource設為Data2,ListFiele設為“Name”,DataSource設為Data1。DataField設為“Name”;(3)DBgrid控件的:Name設為DBgrid1,將AllowAddNew、AllowDelete、AllowUpdate均設為True, DataSource設為Data2。程序代碼如下: Option Explicit Dim last As String Dim dd As Boolean Private Sub Form-Activate() Dim mark As Variant mark=Data1.Recordset.Bookmark Data1.Recordset.MoveLast last=Data1.Recordset("name") Data1.Recordset.Bookmark=mark Text1.Visible=True DBCombol.Visible=False DBGrid1.Visible=False End Sub Private Sub Form-DblClick() ’雙擊表單打開或關閉選項增減和選項編輯功能 Static dd As Boolean dd=Not dd ’第一次雙擊打開編輯功能第二次雙擊關閉編輯功能 If dd Then DBGrid1.Visible=True Else DBGrid1.Visible=False Exit Sub End If End Sub Private Sub DBGrid1-DblClick() ’選擇當前項后,再雙擊刪除當前記錄選項 Data2.Recordset.Delete DBCombol.Refresh DBGrid1.Refresh End Sub Private Sub DBGrid1-LostFocus() DBCombol.Refresh ’刷新DBCombol End Sub Private Sub Command1-Click(Index As Integer) Dim i As Integer Select Case Index Case0’addnew Data1.Recordset.Addnew DBCombol.SetFocus DBCombol.Visible=True Text1.Visible=False Case1’edit Data1.Recordset.Edit Text1.SetFocus DBCombol.Visible=False Text1.Visible=True Case2’giveup Data1.Recordset.Cance1Update Data1.Refresh DBCombol.Visible=False Text1.Visible=True Case3’save Data1.Recordset. Update Data1.Recordset.MoveLast last=Data1.Recordset("name") Data1.Refresh DBCombol.Visible=False Text1.Visible=True Case4’delete Data1.Recordset.Delete Data1.Refresh Case5’end End End Select End Sub Private Sub DBCombol-KeyDown (KeyCode As Integer,Shift As Integer) If Shift=2 Then ’按下CTRL-KEY復制上條記錄中的同名字段的內(nèi)容 If Data1.Recordset.EditMode=dbEditInProgress Or Data1.Recordset.EditMode=dbEditAdd Then DBCombol.Text=last End If End If End Sub% Private Sub Text1-KeyDown(KeyCode As Integer,Shift As Integer) If Shift=2 Then ’按下CTRL-KEY復制上條記錄中的同名字段的內(nèi)容 If Data1.Recordset.EditMode=dbEditInProgress Or Data1.Recordset.EditMode=dbEditAdd Then Text1.Text=last End If End If End Sub 通過上述方法使錄入速度進一步得到提高,使用戶的功效達到事半功倍的效果。 |
|
|