VB5.0數據庫數據的選項錄入及選項增減與編輯
發表于:2007-07-14來源:作者:點擊數:
標簽:
摘要:在 VB 5.0數據庫編程中,應用數據綁定組合框和數據綁定網格等控件實現了數據的選項錄入、選項增減與選項編輯,提高了數據錄入效率和準確性。 關鍵詞:選項錄入 選項增減 選項編輯 數據庫 高效準確地錄入數據已成為 MI S系統急待解決的問題,也是衡量MI
摘要:在
VB5.0數據庫編程中,應用數據綁定組合框和數據綁定網格等控件實現了數據的選項錄入、選項增減與選項編輯,提高了數據錄入效率和準確性。
關鍵詞:選項錄入 選項增減 選項編輯 數據庫
高效準確地錄入數據已成為
MIS系統急待解決的問題,也是衡量MIS系統成功的重要標志。本文在VB5.0數據庫編程中應用數據綁定組合框和數據綁定網格等控件實現了數據的選項錄入、選項增減與數據編輯,提高了數據錄入效率、準確性及靈活性。(
考察MIS系統涉及的數據性質、值域范圍和變化程度,可以發現在MIS系統數據錄入中往往出現下列情況
(1)連續錄入的幾條記錄中,同名字段的內容完全相同或基本相同,如省份、職稱等;用戶逐字錄入速度慢易出錯,因此應充分利用數據庫中的已有數據,設置一個復制鍵將上條記錄中的同名字段的內容復制到當前記錄的同名字段中;
(2)有些字段的值域固定,因此程序應提供一個合法的選項框供用戶選擇來提高速度;
有些字段的值域較小且相對固定,但有一定的變化,如“省市”字段增設一個省或市,撤縣設市等等,程序除提供一個合法的基本的選項框供用戶選擇外,且應允許用戶對這個基本的選項框進行增減或編輯。
1 數據庫基本錄入界面的設計
首先用VB中的數據管理器創建一個A
clearcase/" target="_blank" >ccess數據庫“c:\MY.MDB”,在表“worker”中加入一個字段“Name”,然后在VB的缺省表單中拖入一個數據控件、一個文本框、一個表簽、一個命令按鈕組,合理設計界面布局,并設置各個控件的屬性,如表1。
加入下列代碼即可得到一個數據庫基本輸入窗口:
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鍵復制前條記錄同名字段的內容
在連續錄入的幾條記錄中,同名字段的內容完全相同或基本相同,此時若能充分利用 數據庫中的已有數據,設置一個復制鍵將上條記錄中的同名字段的內容復制到當前記錄的同名字段中,將能大提高數據錄入速度。為了便于用戶操作,將這一功能賦予CTRL鍵,用戶在錄入新記錄或編輯原有記錄時,只要按下CTRL鍵,則上條記錄中的同名字段的內容就復制到當前記錄的同名字段中。程序如下:
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復制上條記錄中的同名字段的內容
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 數據的選項錄入、選項增減及選項編輯
有些字段的值域較小且相對固定,但會有一定的變化,如“省市”字段會產生變化,如增設一個省或市,撤縣設市等等,程序除提供一個合法的基本的選項框供用戶選擇外,還應允許用戶對這個基本的選項框進行增減或編輯。下面的程序實現了此功能,用戶雙擊表單則可對選項框進行增減和編輯,完成后再雙擊表單關閉編輯功能。
先建立一個數據庫“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。程序代碼如下:
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復制上條記錄中的同名字段的內容
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復制上條記錄中的同名字段的內容
If Data1.Recordset.EditMode=dbEditInProgress Or
Data1.Recordset.EditMode=dbEditAdd
Then
Text1.Text=last
End If
End If
End Sub
通過上述方法使錄入速度進一步得到提高,使用戶的功效達到事半功倍的效果。
原文轉自:http://www.anti-gravitydesign.com