在VB6中如何用代码生成ACESS2003表中的各种类型的字段。比如:日期型的字段,附加属性是:1、格式:常规日期 2、必填字段:否  3、默认值:2010-1-3资料越全越好。谢谢大家。

解决方案 »

  1.   

    用dao    Dim db As Database
        Dim td As TableDef
        Dim f As Field
        Set db = DBEngine.CreateDatabase(App.Path & "\aa.mdb", dbLangGeneral)
        numPrg = 10
        DoEvents
        '建表Person
        Set td = New TableDef
        Set f = td.CreateField("SN", dbLong)
        td.Fields.Append f
        Set f = td.CreateField("NAME", dbText, 10)
        td.Fields.Append f
        Set f = td.CreateField("RQ", dbDate)
        td.Fields.Append f
        ......
        td.Name = "Person"
        db.TableDefs.Append td
      

  2.   

    Sub CreateAutoIncrColumn()      Dim cat     As New ADOX.Catalog
          Dim tbl     As New ADOX.Table
          Dim col     As New ADOX.Column   ' 打开目录
       cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=C:\Program Files\Microsoft Office\" & _
          "Office\Samples\Northwind.mdb;"   With tbl
          .Name = "MyContacts"
          Set .ParentCatalog = cat
          ' 创建字段并将它们追加到新的 Table 对象中。
          .Columns.Append "ContactId", adInteger
          ' 产生 ContactId 列和自动递加列
          .Columns("ContactId").Properties("AutoIncrement") = True
          .Columns.Append "CustomerID", adVarWChar
          .Columns.Append "FirstName", adVarWChar
          .Columns.Append "LastName", adVarWChar
          .Columns.Append "Phone", adVarWChar, 20
          .Columns.Append "Notes", adLongVarWChar
       End With   cat.Tables.Append tbl   Set cat = NothingEnd Sub
      

  3.   

    adTinyInt 精确的数字值,精度为小数点后 3 位。关于该类型的详细资料,请参阅“OLE DB 程序员参考”。 
    AdSmallInt 精确数字值,精度为小数点后 5 位。关于该类型的详细资料,请参阅“OLE DB 程序员参考”。 
    AdInteger 精确数字值,精度为小数点后 10 位。关于该类型的详细资料,请参阅“OLE DB 程序员参考”。 
    AdBigInt 精确数字值,精度为小数点后 19 位。关于该类型的详细资料,请参阅“OLE DB 程序员参考”。 
    AdUnsignedTinyInt 无符号的 adTinyInt。 
    AdUnsignedSmallInt 无符号的 adSmallInt。 
    AdUnsignedInt 无符号的 adInteger。 
    AdUnsignedBigInt 无符号的 adBigInt。 
    AdSingle 单精度浮点数。 
    AdDouble 双精度浮点数。 
    AdCurrency 货币类型。关于该类型的详细资料,请参阅“OLE DB 程序员参考”。 
    AdDecimal 变体型十进制类型。关于该类型的详细资料,请参阅“OLE DB 程序员参考”。 
    AdNumeric 数值类型。关于该类型的详细资料,请参阅“OLE DB 程序员参考”。 
    AdBoolean 变体布尔类型。0 为假而 ~0 为真。 
    AdUserDefined 用户定义的变量长度数据类型。关于该类型的详细资料,请参阅“OLE DB 程序员参考”。 
    AdVariant 自动变体型。关于该类型的详细资料,请参阅“OLE DB 程序员参考”。 
    AdGuid 全域唯一标识符。关于该类型的详细资料,请参阅“OLE DB 程序员参考”。 
    AdDate 自动日期。关于该类型的详细资料,请参阅“OLE DB 程序员参考”。 
    AdDBDate 数据库日期数据结构。关于该类型的详细资料,请参阅“OLE DB 程序员参考”。 
    AdDBTime 数据库时间数据结构。关于该类型的详细资料,请参阅“OLE DB 程序员参考”。 
    AdDBTimestamp 数据库时间戳结构。关于该类型的详细资料,请参阅“OLE DB 程序员参考”。 
    AdBSTR BSTR 的指针。关于该类型的详细资料,请参阅“OLE DB 程序员参考”。 
    AdChar 定长字符串。 
    AdVarChar 变长字符串。 
    AdLongVarChar 长变长字符串。 
    AdWChar 宽定长字符串。 
    AdVarWChar 宽变长字符串。 
    AdLongVarWChar 长、宽变长字符串。 
    AdBinary 定长二进制数据。 
    AdVarBinary 变长二进制数据。 
    AdLongVarBinary 长变长二进制数据。 
      

  4.   

    Private Sub Command2_Click()
    '需引用Microsoft ADO Ext.2.6 (ADOX)
        Dim tbl As New Table
        Dim cat As New ADOX.Catalog
        cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb;Jet OLEDB:Database Password=123456"
        tbl.ParentCatalog = cat
        tbl.Name = "入库表"
        
        tbl.Columns.Append "Id", adInteger '整数列
        tbl.Columns("Id").Properties("AutoIncrement") = True    '改为自动递加
        tbl.Columns.Append "材料名称", adVarWChar, 50 '文本列
        tbl.Columns.Append "库存数量", adSingle '单精度列
        tbl.Columns.Append "入库日期", adDate '日期列
        tbl.Columns.Append "备注", adLongVarWChar '备注列
      
        cat.Tables.Append tbl
    End Sub
      

  5.   

    在程序运行过程中建立一个数据库,数据库的名称由用户输入。然后在数据库中建立一个名为"MyTable"的数据表,数据表中有三个字段,它们分别是:"编号"(整数型)、 "姓名"(字符型,宽度为8)、"住址" (字符型,宽度为50),接着在数据表中添加一条记录,最后在DataGrid控件中把记录的内容显示出来,并且让用户在DataGrid控件中任意修改、添加记录。  首先在VB中新建一个窗体,然后在"工程"菜单中引用对象库"Microsoft ActiveX Data Objects 2.5 Library"和"Microsoft ADO Ext 2.1. For DDL Security"。接着定义三个窗体级的对象变量和一个窗体级的字符串变量,它们的具体定义是:Dim cat As New ADOX.Catalog '不用cat用另外一个名字也可以
    Dim conn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim pstr As String '定义该变量是为了后面的书写方便
      为了更灵活地创建数据库,我们可以在窗体中加入一个通用对话框、一个DataGrid控件,三个命令按钮,它们的标题分别是:创建数据库和表、查看、更新。通用对话框的作用是给用户输入数据库文件名和决定数据库的存放位置。 "创建数据库和表"命令按钮对应的代码是:Private Sub Command1_Click()
     Dim fm As String 'fm变量用来获取用户输入的文件名
     CommonDialog1.Filter = "MDB文件(*.mdb)|*.mdb|AllFiles(*.*)|*.*|"
     CommonDialog1.FilterIndex = 1
     CommonDialog1.InitDir = "D:\Jthpaper"
     CommonDialog1.Flags = 6
     CommonDialog1.Action = 2
     If CommonDialog1.FileName = "" Then
      MsgBox "你必须输入一个文件名,请重新保存一次!"
      Exit Sub
     Else
      fm = CommonDialog1.FileName
     End If
     pstr = "Provider=Microsoft.Jet.OLEDB.4.0;" '不能把这里的4.0改为3.51
     pstr = pstr & "Data Source=" & fm
     cat.Create pstr '创建数据库
     Dim tbl As New Table
     cat.ActiveConnection = pstr 
     tbl.Name = "MyTable" '表的名称 
     tbl.Columns.Append "编号", adInteger '表的第一个字段
     tbl.Columns.Append "姓名", adVarWChar, 8 '表的第二个字段
     tbl.Columns.Append "住址", adVarWChar, 50 '表的第三个字段
     cat.Tables.Append tbl '建立数据表
     conn.Open pstr
     rs.CursorLocation = adUseClient
     rs.Open "MyTable", conn, adOpenKeyset, adLockPessimistic
     rs.AddNew '往表中添加新记录
     rs.Fields(0).Value = 9801
     rs.Fields(1).Value = "孙悟空"
     rs.Fields(2).Value = "广州市花果山"
     rs.Update
    End Sub
      上面程序中有一个需要说明的地方,这就是语句:pstr = "Provider=Microsoft.Jet.OLEDB.4.0;",这个语句表示Microsoft Jet OLEDB驱动程序的版本是4.0,这是目前最新的版本,利用它你可以用VB中的ADO对象访问Access2000及其以下版本所建立的数据库。你不能把这里的"4.0"改为"3.51",否则程序不能正常运行;在VB6中,3.51版本的Microsoft Jet OLEDB驱动程序对应的是Access97数据库。换而言之,用这种方法建立的数据库和表跟用Access2000所建立的数据库和表是同一类型的,你只能直接用Access2000来打开,虽然你可以用VB6来访问这种数据库和其中的数据表,但你不能用Access97或VB6中的"可视化数据管理器"来直接打开。  在程序运行时只要用户单击该命令按钮就可以创建自己所需的数据库。"查看"命令按钮对应的代码是:Private Sub Command3_Click()
     Set DataGrid1.DataSource = rs
    End Sub
    "更新"命令按钮对应的代码是:
    Private Sub Command4_Click()
     rs.UpdateBatch
    End Sub