正文

在VB6中用 Select 语句检索记录2005-09-25 07:58:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/iamben250/5266.html

分享到:

在VB6中用 Select 语句检索记录                  作者:unknown 更新时间: 2005-05-02                                                本文向你介绍如何不用借助Access,直接在程序中创建一个数据库,然后从标准的ASCII文本文件中读取数据到数据库中。原文是微软知识库中的一篇文章,但当时是针对VB3写的,所以其中的代码有点过时。例如现在DAO中已没有Table对象,代之以Recordset对象。下面是修改后的代码,在VB6中调试通过。                           首先在工程中添加对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                         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 Recordset                           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.OpenRecordset("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$ 'Retrieve empl_addr                           Line Input #1, tmp4$                           newtb("Emp_ID") = Trim$(tmp1$) 'Place in field1                           newtb("Emp_Name") = Trim$(tmp2$) 'Place in field2                           newtb("Emp_Addr") = Trim$(tmp3$) 'Place in field3                           newtb("Emp_SSN") = Trim$(tmp4$) 'Place in field4                           newtb.Update 'Save to table                           Loop                           CommitTrans                           Close #1 'Close text file                           newtb.Close 'Close DB's table                           newdb.Close 'Close DB                           screen.MousePointer = 0 'Set back to show done                           End Sub                           在Command3_Click事件中加入下面的代码                           Sub Command3_Click ()                           Dim db As Database                           Dim t As Recordset                           Dim counter%                           Set db = OpenDatabase("NEWDB.MDB")                           Set t = db.OpenRecordset("Emp_Table")                           counter% = 1 'Start counter at Row=1                           Do Until t.EOF                           grid2.Col = 1                           grid2.Row = counter%                           grid2.Text = t(0) 'Load Emp ID                           grid2.Col = 2                           grid2.Row = counter%                           grid2.Text = t(1) 'Load Emp Name                           grid2.Col = 3                           grid2.Row = counter%                           grid2.Text = t(2) 'Load Emp Addr                           grid2.Col = 4                           grid2.Row = counter%                           grid2.Text = t(3) 'Load Emp SSN                           counter% = counter% + 1                           t.MoveNext                           Loop                           t.Close                           db.Close                           End Sub

阅读(2276) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册