首页 > 数据库 > Access > 正文

如何将文本文件转换为ACCESS数据库

2020-03-24 17:41:40
字体:
来源:转载
供稿:网友
本文向你介绍如何不用借助Access,直接在程序中创建一个数据库,然后从标准的ASCII文本文件中读取数据到数据库中。原文是微软知识库中的一篇文章,但当时是针对VB3写的,所以其中的代码有点过时。例如现在DAO中已没有Table对象,代之以Recordset对象。下面是修改后的代码,在VB6中调试通过。首先在工程中添加对Microsoft DAO 3.51 Library引用。在窗体中添加三个命令按钮和两个MSFlexGrid. 按照下表设置和控件的属性: 控件 属性 值--------------------------------------------------------------------Command1 Caption "建立文本文件并显示在网格中"Command2 Caption "传输入数据并新建一个数据库"Command3 Caption "显示新数据库中的数据"Grid1 Cols 5Grid1 Rows 35Grid2 Cols 5Grid2 Rows 35将下面的代码添加到窗体的声明部分 Dim nums(30) As LongDim names(30) As String * 20Dim addresses(30) As String * 25Dim ss_nums(30) As String * 12Const DB_LONG = 4Const DB_TEXT = 10Const DB_LANG_GENERAL = ";LANGID=0x0809;CP=1252;COUNTRY=0"将下面的代码添加到窗体的Load事件中 Sub Form_Load ()Showgrid1.ColWidth(1) = 1000 'For Emp IDgrid1.ColWidth(2) = 2000 'For Emp Namegrid1.ColWidth(3) = 3000 'For Emp Addrgrid1.ColWidth(4) = 2000 'For Emp SSNgrid1.Col = 1grid1.Row = 0grid1.Text = "Emp ID" 'Header for Emp ID from text filegrid1.Col = 2grid1.Row = 0grid1.Text = "Emp Name" 'Header for Emp Name from text filegrid1.Col = 3grid1.Row = 0grid1.Text = "Emp Addr" 'Header for Emp Addr from text filegrid1.Col = 4grid1.Row = 0grid1.Text = "Emp SSN" 'Header for Emp SSN from text filegrid2.ColWidth(1) = 1000 'For Emp IDgrid2.ColWidth(2) = 2000 'For Emp Namegrid2.ColWidth(3) = 3000 'For Emp Addrgrid2.ColWidth(4) = 2000 'For Emp SSNgrid2.Col = 1grid2.Row = 0grid2.Text = "Employee ID" 'Header for Emp ID from DBgrid2.Col = 2grid2.Row = 0grid2.Text = "Employee Name" 'Header for Emp Name from DBgrid2.Col = 3grid2.Row = 0grid2.Text = "Employee Addr" 'Header for Emp ID from DBgrid2.Col = 4grid2.Row = 0grid2.Text = "Employee SSN" 'Header for Emp Name from DBEnd Sub 在Command1_Click事件中加入下面的代码 Sub Command1_Click ()For i% = 1 To 30nums(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 IfNext i%Open "Testdata.DAT" For Output As #1For j% = 1 To 30Print #1, nums(j%)Print #1, names(j%)Print #1, addresses(j%)Print #1, ss_nums(j%)Next j%Close #1For i% = 1 To 30 'Display results from text filegrid1.Col = 1grid1.Row = i%grid1.Text = nums(i%) 'Load Emp IDsgrid1.Col = 2grid1.Row = i%grid1.Text = names(i%) 'Load Emp Namesgrid1.Col = 3grid1.Row = i%grid1.Text = addresses(i%) 'Load Emp Addrsgrid1.Col = 4grid1.Row = i%grid1.Text = ss_nums(i%) 'Load Emp SSNsNext i%End Sub在Command2_Click事件中加入下面的代码 Sub Command2_Click ()Dim newdb As DatabaseDim newtb As TableDim newtd As New tabledefDim newidx As New IndexDim field1 As New field 'For Emp numsDim field2 As New field 'For Emp namesDim field3 As New field 'For Emp addressesDim field4 As New field 'For Emp ss_numsscreen.MousePointer = 11 'Display the time to buildSet newdb = CreateDatabase("NEWDB.MDB", DB_LANG_GENERAL)newtd.Name = "Emp_Table" '* New table namefield1.Name = "Emp_ID" '* Holds Employee ID nums()field1.Type = DB_LONGnewtd.Fields.Append field1field2.Name = "Emp_Name" '* Holds Emp names()field2.Type = DB_TEXTfield2.Size = 20newtd.Fields.Append field2field3.Name = "Emp_Addr" '* Holds Employee addr()field3.Type = DB_TEXTfield3.Size = 25newtd.Fields.Append field3field4.Name = "Emp_SSN" '* Holds emp ss_nums()field4.Type = DB_TEXTfield4.Size = 12newtd.Fields.Append field4newidx.Name = "Emp_ID_IDX" '* You have to have an indexnewidx.Fields = "Emp_ID"newidx.Primary = Truenewtd.Indexes.Append newidxnewdb.TableDefs.Append newtdSet newtb = newdb.OpenTable("Emp_Table")Open "Testdata.dat" For Input As #1BeginTransDo While Not (EOF(1))newtb.AddNewLine Input #1, tmp1$ 'Retrieve empl_idLine Input #1, tmp2$ 'Retrieve empl_nameLine Input #1, tmp3$ 'Re
本文作者:html教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表