1數據庫基本錄入界面的設計
首先用vb中的數據管理器創建一個access數據庫“c:my.mdb”,在表“worker”中加入一個字段“name”,然後在vb的缺省表單中拖入一個數據控件、一個文本框、一個表簽、一個命令按鈕組,合理設計界面布局,並設置各個控件的屬性,如表1。
加入下列代碼即可得到一個數據庫基本輸入窗口:
privatesubcommand1-click(indexasinteger)
selectcaseindex
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
endselect
endsub
表一
在連續錄入的幾條記錄中,同名字段的內容完全相同或基本相同,此時若能充分利用數據庫中的已有數據,設置一個復制鍵將上條記錄中的同名字段的內容復制到當前記錄的同名字段中,將能大提高數據錄入速度。為了便於用戶操作,將這一功能賦予ctrl鍵,用戶在錄入新記錄或編輯原有記錄時,只要按下ctrl鍵,則上條記錄中的同名字段的內容就復制到當前記錄的同名字段中。程序如下:
OptionExplicit
DimlastAsString
PrivateSubform_Activate()
DimmarkAsVariant
mark=Data1.Recordset.Bookmark
Data1.Recordset.MoveLast
last=Data1.Recordset("Name")
Data1.Recordset.Bookmark=mark
EndSub
privatesubtext1-keydown
(keycodeasinteger,shiftasinteger)
ifshift=2then'按下ctrl-key復制上條記錄中的同名字段的內容
ifdata1.recordset.editmode=dbeditinprogress
ordata1.recordset.editmode=dbeditaddthen
text1.text=last
endif
endif
endsub
privatesubCommand1_Click(indexasinteger)
selectcaseindex
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")'savethetexttolast
data1.refresh
case4'delete
data1.recordset.delete
data1.refresh
case5'end
end
endselect
endsub
3數據的選項錄入、選項增減及選項編輯
有些字段的值域較小且相對固定,但會有一定的變化,如“省市”字段會產生變化,如增設一個省或市,撤縣設市等等,程序除提供一個合法的基本的選項框供用戶選擇外,還應允許用戶對這個基本的選項框進行增減或編輯。下面的程序實現了此功能,用戶雙擊表單則可對選項框進行增減和編輯,完成後再雙擊表單關閉編輯功能。
先建立一個數據庫“c:myrand.mdb”,其表“rank”中加入一個字段“name”;再從工具箱中拖入一個數據控件data2,一個數據綁定組合框dbcombol和數據綁定網格控件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。
程序代碼如下:
optionexplicit
dimlastasstring
dimddasboolean
privatesubform-activate()
dimmarkasvariant
mark=data1.recordset.bookmark
data1.recordset.movelast
last=data1.recordset("name")
data1.recordset.bookmark=mark
text1.visible=true
dbcombol.visible=false
dbgrid1.visible=false
endsub
privatesubform-dblclick()'雙擊表單打開或關閉選項增減和選項編輯功能
staticddasboolean
dd=notdd'第一次雙擊打開編輯功能第二次雙擊關閉編輯功能
ifddthen
dbgrid1.visible=true
else
dbgrid1.visible=false
exitsub
endif
endsub
privatesubdbgrid1-dblclick()'選擇當前項後,再雙擊刪除當前記錄選項
data2.recordset.delete
dbcombol.refresh
dbgrid1.refresh
endsub
privatesubdbgrid1-lostfocus()
dbcombol.refresh'刷新dbcombol
endsub
privatesubcommand1-click(indexasinteger)
dimiasinteger
selectcaseindex
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
endselect
endsub
privatesubdbcombol-keydown
(keycodeasinteger,shiftasinteger)
ifshift=2then'按下ctrl-key復制上條記錄中的同名字段的內容
ifdata1.recordset.editmode=dbeditinprogressor
data1.recordset.editmode=dbeditadd
then
dbcombol.text=last
endif
endif
endsubprivatesubtext1-keydown(keycodeasinteger,shiftasinteger)
ifshift=2then'按下ctrl-key復制上條記錄中的同名字段的內容
ifdata1.recordset.editmode=dbeditinprogressor
data1.recordset.editmode=dbeditadd
then
text1.text=last
endif
endif
endsub
通過上述方法使錄入速度進一步得到提高,使用戶的功效達到事半功倍的效果。