本文向你介紹如何不用借助Access,直接在程序中創(chuàng)建一個數(shù)據(jù)庫,然后從標準的ASCII文本文件中讀取數(shù)據(jù)到數(shù)據(jù)庫中。原文是微軟知識庫中的一篇文章,但當時是針對VB3寫的,所以其中的代碼有點過時。例如現(xiàn)在DAO中已沒有Table對象,代之以Recordset對象。下面是修改后的代碼,在VB6中調(diào)試通過。
首先在工程中添加對Microsoft DAO 3.51 Library引用。
在窗體中添加三個命令按鈕和兩個MSFlexGrid.
按照下表設置和控件的屬性:
控件 屬性 值
--------------------------------------------------------------------
Command1 Caption "建立文本文件并顯示在網(wǎng)格中"
Command2 Caption "傳輸入數(shù)據(jù)并新建一個數(shù)據(jù)庫"
Command3 Caption "顯示新數(shù)據(jù)庫中的數(shù)據(jù)"
Grid1 Cols 5
Grid1 Rows 35
Grid2 Cols 5
Grid2 Rows 35
將下面的代碼添加到窗體的聲明部分
Dim nums(30) As Long
Dim names(30) As String * 20
Dim addresses(30) As String * 25
Dim ss_nums(30) As String * 12
Const DB_LONG = 4
Const DB_TEXT = 10
Const DB_LANG_GENERAL = ";LANGID=0x0809;CP=1252;COUNTRY=0"
將下面的代碼添加到窗體的Load事件中
Sub Form_Load ()
Show
grid1.ColWidth(1) = 1000 'For Emp ID
grid1.ColWidth(2) = 2000 'For Emp Name
grid1.ColWidth(3) = 3000 'For Emp Addr
grid1.ColWidth(4) = 2000 'For Emp SSN
grid1.Col = 1
grid1.Row = 0
grid1.Text = "Emp ID" 'Header for Emp ID from text file
grid1.Col = 2
grid1.Row = 0
grid1.Text = "Emp Name" 'Header for Emp Name from text file
grid1.Col = 3
grid1.Row = 0
grid1.Text = "Emp Addr" 'Header for Emp Addr from text file
grid1.Col = 4
grid1.Row = 0
grid1.Text = "Emp SSN" 'Header for Emp SSN from text file
grid2.ColWidth(1) = 1000 'For Emp ID
grid2.ColWidth(2) = 2000 'For Emp Name
grid2.ColWidth(3) = 3000 'For Emp Addr
grid2.ColWidth(4) = 2000 'For Emp SSN
grid2.Col = 1
grid2.Row = 0
grid2.Text = "Employee ID" 'Header for Emp ID from DB
grid2.Col = 2
grid2.Row = 0
grid2.Text = "Employee Name" 'Header for Emp Name from DB
grid2.Col = 3
grid2.Row = 0
grid2.Text = "Employee Addr" 'Header for Emp ID from DB
grid2.Col = 4
grid2.Row = 0
grid2.Text = "Employee SSN" 'Header for Emp Name from DB
End Sub
在Command1_Click事件中加入下面的代碼
Sub Command1_Click ()
For i% = 1 To 30
nums(i%) = i%
names(i%) = "John Doe # " + Str$(i%)
addresses(i%) = Str$(i%) + " Mocking Bird Lane"
If i% < 9 Then
'* Enter the following four lines as one, single line:
ss_nums(i%) = Trim$(Str$(i%) + Trim$(Str$(i%))
+ Trim$(Str$(i%)) + "-" + Trim$(Str$(i% + 1))
+ Trim$(Str$(i% + 1)) + "-" + Trim$(Str$(i%))
+ Trim$(Str$(i%)) + Trim$(Str$(i%)) + Trim$(Str$(i%)))
Else
'* Enter the following two lines as one, single line:
ss_nums(i%) = Trim$(Trim$(Str$(999)) + "-" + Trim$(Str$(88))
+ "-" + Trim$(Str$(7777)))
End If
Next i%
Open "Testdata.DAT" For Output As #1
For j% = 1 To 30
Print #1, nums(j%)
Print #1, names(j%)
Print #1, addresses(j%)
Print #1, ss_nums(j%)
Next j%
Close #1
For i% = 1 To 30 'Display results from text file
grid1.Col = 1
grid1.Row = i%
grid1.Text = nums(i%) 'Load Emp IDs
grid1.Col = 2
grid1.Row = i%
grid1.Text = names(i%) 'Load Emp Names
grid1.Col = 3
grid1.Row = i%
grid1.Text = addresses(i%) 'Load Emp Addrs
grid1.Col = 4
grid1.Row = i%
grid1.Text = ss_nums(i%) 'Load Emp SSNs
Next i%
End Sub
在Command2_Click事件中加入下面的代碼
Sub Command2_Click ()
Dim newdb As Database
Dim newtb As Table
Dim newtd As New tabledef
Dim newidx As New Index
Dim field1 As New field 'For Emp nums
Dim field2 As New field 'For Emp names
Dim field3 As New field 'For Emp addresses
Dim field4 As New field 'For Emp ss_nums
screen.MousePointer = 11 'Display the time to build
Set newdb = CreateDatabase("NEWDB.MDB", DB_LANG_GENERAL)
newtd.Name = "Emp_Table" '* New table name
field1.Name = "Emp_ID" '* Holds Employee ID nums()
field1.Type = DB_LONG
newtd.Fields.Append field1
field2.Name = "Emp_Name" '* Holds Emp names()
field2.Type = DB_TEXT
field2.Size = 20
newtd.Fields.Append field2
field3.Name = "Emp_Addr" '* Holds Employee addr()
field3.Type = DB_TEXT
field3.Size = 25
newtd.Fields.Append field3
field4.Name = "Emp_SSN" '* Holds emp ss_nums()
field4.Type = DB_TEXT
field4.Size = 12
newtd.Fields.Append field4
newidx.Name = "Emp_ID_IDX" '* You have to have an index
newidx.Fields = "Emp_ID"
newidx.Primary = True
newtd.Indexes.Append newidx
newdb.TableDefs.Append newtd
Set newtb = newdb.OpenTable("Emp_Table")
Open "Testdata.dat" For Input As #1
BeginTrans
Do While Not (EOF(1))
newtb.AddNew
Line Input #1, tmp1$ 'Retrieve empl_id
Line Input #1, tmp2$ 'Retrieve empl_name
Line Input #1, tmp3$ 'Re
新聞熱點
疑難解答
圖片精選