用ado建库和所需要的表,在用io函数或者file system object读出文本数据插入数据库中。

解决方案 »

  1.   

    首先在工程中添加对Microsoft DAO 3.51 Library引用。
    在窗体中添加三个命令按钮和两个MSFlexGrid. 
    按照下表设置和控件的属性: 
    控件 属性 值
    --------------------------------------------------------------------
    Command1 Caption "建立文本文件并显示在网格中"
    Command2 Caption "传输入数据并新建一个数据库"
    Command3 Caption "显示新数据库中的数据"
    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 filegrid2.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