程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> VB數據庫數據的選項錄入及選項增減與編輯

VB數據庫數據的選項錄入及選項增減與編輯

編輯:VB綜合教程
在VisualBasic數據庫編程中,應用數據綁定組合框和數據綁定網格等控件實現了數據的選項錄入、選項增減與選項編輯,提高了數據錄入效率和准確性。
  
  高效准確地錄入數據已成為mis系統急待解決的問題,也是衡量mis系統成功的重要標志。本文在VisualBasic數據庫編程中應用數據綁定組合框和數據綁定網格等控件實現了數據的選項錄入、選項增減與數據編輯,提高了數據錄入效率、准確性及靈活性。(
  
  考察mis系統涉及的數據性質、值域范圍和變化程度,可以發現在mis系統數據錄入中往往出現下列情況
  
  (1)連續錄入的幾條記錄中,同名字段的內容完全相同或基本相同,如省份、職稱等;用戶逐字錄入速度慢易出錯,因此應充分利用數據庫中的已有數據,設置一個復制鍵將上條記錄中的同名字段的內容復制到當前記錄的同名字段中;
  
  (2)有些字段的值域固定,因此程序應提供一個合法的選項框供用戶選擇來提高速度;
  
  有些字段的值域較小且相對固定,但有一定的變化,如“省市”字段增設一個省或市,撤縣設市等等,程序除提供一個合法的基本的選項框供用戶選擇外,且應允許用戶對這個基本的選項框進行增減或編輯。
  通過上述方法使錄入速度進一步得到提高,使用戶的功效達到事半功倍的效果。

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
  
  表一

-align="middle"width="33">控件名->-align="middle"width="33">屬性名->-align="middle"width="34">屬性值->-width="33">Data->-width="33">Data1->-width="34">DatabaseName=c:my.mdb
  RecordSource="worker"->-width="33">Text->-width="33">Text1->-width="34">Text=""
  RecordSource="Data1"
  DataField="Name"->-width="33">Label->-width="33">Label1->-width="34">Caption="姓名"->-width="33">CommandButton->-width="33">Command1->-width="34">Index=0
  Caption="新增"->-width="33">CommandButton->-width="33">Command1->-width="34">Index=1
  Caption="編輯"->-width="33">CommandButton->-width="33">Command1->-width="34">Index=2
  Caption="放棄"->-width="33">CommandButton->-width="33">Command1->-width="34">Index=3
  Caption="保存"->-width="33">CommandButton->-width="33">Command1->-width="34">Index=4
  Caption="刪除"->-width="33">CommandButton->-width="33">Command1->-width="34">Index=5
  Caption="退出"->

  在連續錄入的幾條記錄中,同名字段的內容完全相同或基本相同,此時若能充分利用數據庫中的已有數據,設置一個復制鍵將上條記錄中的同名字段的內容復制到當前記錄的同名字段中,將能大提高數據錄入速度。為了便於用戶操作,將這一功能賦予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
  
  通過上述方法使錄入速度進一步得到提高,使用戶的功效達到事半功倍的效果。

->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved