VB5.0數據庫數據的選項錄入及選項增減與編輯

發表于:2007-07-14來源:作者:點擊數: 標簽:
摘要:在 VB 5.0數據庫編程中,應用數據綁定組合框和數據綁定網格等控件實現了數據的選項錄入、選項增減與選項編輯,提高了數據錄入效率和準確性。 關鍵詞:選項錄入 選項增減 選項編輯 數據庫 高效準確地錄入數據已成為 MI S系統急待解決的問題,也是衡量MI
  摘要:在VB5.0數據庫編程中,應用數據綁定組合框和數據綁定網格等控件實現了數據的選項錄入、選項增減與選項編輯,提高了數據錄入效率和準確性。

關鍵詞:選項錄入 選項增減 選項編輯 數據庫

高效準確地錄入數據已成為MIS系統急待解決的問題,也是衡量MIS系統成功的重要標志。本文在VB5.0數據庫編程中應用數據綁定組合框和數據綁定網格等控件實現了數據的選項錄入、選項增減與數據編輯,提高了數據錄入效率、準確性及靈活性。(

考察MIS系統涉及的數據性質、值域范圍和變化程度,可以發現在MIS系統數據錄入中往往出現下列情況

(1)連續錄入的幾條記錄中,同名字段的內容完全相同或基本相同,如省份、職稱等;用戶逐字錄入速度慢易出錯,因此應充分利用數據庫中的已有數據,設置一個復制鍵將上條記錄中的同名字段的內容復制到當前記錄的同名字段中;

(2)有些字段的值域固定,因此程序應提供一個合法的選項框供用戶選擇來提高速度;

有些字段的值域較小且相對固定,但有一定的變化,如“省市”字段增設一個省或市,撤縣設市等等,程序除提供一個合法的基本的選項框供用戶選擇外,且應允許用戶對這個基本的選項框進行增減或編輯。

1 數據庫基本錄入界面的設計

首先用VB中的數據管理器創建一個Aclearcase/" 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

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97