手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>VB>列表

在VB6中用 Select 语句检索记录

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
  本文向你介绍如何不用借助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()

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!