1\我要建立一个表 要有个ID项能随着我插入数据自动增加(ID作为主关键字)  这样的表该怎么建立
2\如果没办法建立以上表 有什么办法让我没插入一条记录就在ID中加一呢谢谢

解决方案 »

  1.   

    create table aaa ( a_id Numeric  IDENTITY PRIMARY KEY,
                       bbb varchar(20),
    ) ON [PRIMARY]
      

  2.   

    我是用以下代码做的  不知道在 以下代码中有什么办法 把myid改为自动编号的主关键字呢
    Dim pstr As String  '定义该变量是为了后面的书写方便
    Dim DataBaseName As String  'DataBaseName变量用来获取用户输入的文件名
    DataBaseName = "D:\file\" & nian & ".mdb"
    pstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DataBaseName  '不能把这里的4.0改为3.51
    If PathFileExists("d:\file\" + CStr(nian) + ".mdb") = 0 Then
        Dim cat As New ADOX.Catalog
        cat.Create pstr  '创建数据库
        Dim tbl(1 To 12) As New Table
        cat.ActiveConnection = pstr    For nummonth = 1 To 12
           If nummonth < 10 Then
                tbl(nummonth).Name = "0" + CStr(nummonth) '表的名称
           Else
                tbl(nummonth).Name = CStr(nummonth)  '表的名称
           End If
           
           tbl(nummonth).Columns.Append "MyID", adInteger
           tbl(nummonth).Columns.Append "Sent", adBoolean
           tbl(nummonth).Columns.Append "JCD_Num", adInteger    '表的第一个字段
           tbl(nummonth).Columns.Append "ttime", adVarWChar, 14  '表的第二个字段
           tbl(nummonth).Columns.Append "freq", adInteger  '表的第三个字段
           tbl(nummonth).Columns.Append "Cq", adSingle, 2  '表的第三个字段
           tbl(nummonth).Columns.Append "flag_cq", adBoolean '表的第三个字段
           tbl(nummonth).Columns.Append "v5", adSingle, 2   '表的第三个字段
           tbl(nummonth).Columns.Append "flag_v5", adBoolean '表的第三个字段
           tbl(nummonth).Columns.Append "modulation", adSingle, 2    '表的第三个字段
           tbl(nummonth).Columns.Append "flag_mod", adBoolean  '表的第三个字段
           tbl(nummonth).Columns.Append "temp", adSingle, 2   '表的第三个字段
            cat.Tables.Append tbl(nummonth)      '建立数据表
            Dim kyForeign As New ADOX.Key
            kyForeign.Name = "MyID"
            kyForeign.Type = adKeyPrimary
            kyForeign.Columns.Append "MyID"
            cat.Tables(tbl(nummonth).Name).Keys.Append kyForeign
            Set kyForeign = Nothing
            Set tbl(nummonth) = Nothing
        Next nummonth
        Set cat = Nothing
    End If
      

  3.   

    在各大论坛,出现这个问题的比率还是比较多的,今天在一朋友的提问下,特写下这个类。同时也希望有人参与进来与我一起写,把这个类完善得更好。TCreateDataBase.cls''''欢迎你下载使用本代码,本份代码由程序太平洋提供下载学习之用
    ''''声明:
    ''''1.本站所有代码的版权归原作者所有,如果你使用了在本站下载的源代码
    ''''  引起的一切纠纷(后果)与本站无关,请您尊重原作者的劳动成果!
    ''''2.若本站在代码上有侵权之处请您与站长联系,站长会及时更正。
    ''''网站:http://www.dapha.net
    ''''论坛:http://www.5ivb.net
    ''''Email:[email protected]
    ''''CopyRight 2001-2005 By dapha.net
    ''''整理时间:2004-7-31 22:10:30Option Explicit
    Public Enum DataBaseVer
        ACCESS97 = 1
        ACCESS2000 = 2
    End Enum
    Private obj_Cat As ADOX.Catalog
    Private obj_table As ADOX.Table
    Dim obj_col As Column
    Private m_DBName As String                                 ''''数据库名称
    Private m_DBVer As DataBaseVer                             ''''数据库版本
    Private strConnection As String                            ''''数据库连接驱动
    Public Property Let DataBaseName(ByVal value As String)
        m_DBName = value
    End Property
    Public Property Let SetDataBaseVer(ByVal value As DataBaseVer)
        m_DBVer = value
    End Property
    Public Function CreateDataBase(Optional DataBaseName As String = "", Optional p_DBVer As DataBaseVer, Optional OverWrite As Boolean = False) As Boolean
        ''''DataBaseName 数据库名称
        ''''数据库版本 1.ACCESS97 2.ACCESS2000
        ''''OverWrite 是否重写原有的数据库 False 不需要 True 需要
        On Error GoTo errorhand
        If p_DBVer > 0 Then m_DBVer = p_DBVer
        If Len(Trim(DataBaseName)) > 0 Then m_DBName = DataBaseName
        Select Case m_DBVer
            Case 1
                strConnection = GetDBConnection
            Case 2
                strConnection = GetDBConnection(True)
            Case Else
                Err.Raise 30001, "TCreateDataBase", "数据库选择参数未选"
        End Select
        If Len(Trim(m_DBName)) = 0 Then
            Err.Raise 30002, "TCreateDataBase", "文件名错误---空的文件名"
        End If
        obj_Cat.Create strConnection
        CreateDataBase = True
        Exit Function
    errorhand:
        If OverWrite Then
            Kill m_DBName
            Resume                                             ''''返回错误发生处
        Else
            Err.Raise 30006, "TCreateDataBase", "数据库己存在"
        End If
        CreateDataBase = False
    End Function
    Public Function CrateTable(ByVal TableName As String, Optional OverWrite As Boolean = False)
        On Error GoTo errhand:
        If obj_Cat Is Nothing Then
            Err.Raise 30003, "TCreateDataBase----CreateTable", "对象不存在"
            Exit Function
        End If
        Set obj_table = New Table
        obj_table.Name = TableName
        obj_Cat.Tables.Append obj_table    Exit Function
    errhand:End Function
    Private Function GetDBConnection(Optional ByVal value As Boolean = False) As String
        If value Then
            GetDBConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                    "Data Source=" & m_DBName & ";"
        Else
            GetDBConnection = "Provider=Microsoft.Jet.OLEDB.3.51;" & _
                    "Data Source=" & m_DBName & ";"
        End If
    End Function
    Private Sub Class_Initialize()
        Set obj_Cat = New ADOX.CatalogEnd Sub
    Public Function CreateColumn(ByVal ColName As String, ByVal pType As DataTypeEnum, _
        Optional ByVal Size As Integer = 255, Optional ByVal AutoInc As Integer = 0, _
        Optional ByVal Nullable As Integer = 0, _
        Optional ByVal Defaultvalue As Variant = vbEmpty) As Boolean
        ''''ColName 列名
        ''''pType 数据类型
        ''''Size 类型大小
        ''''AutoInc 如果是int型,是否设置为自动增长
        ''''Nullable是否允许为空 0,默认(必填项) 1 允许为空
        ''''Defaultvalue 默认值 由于时间原因,只能这样应付着了 需要和类型配合否则有可能出错
        ''''如:.CreateColumn "Age", adInteger, , , , 4 Integer型,默认值 4
        ''''   .CreateColumn "UserName", adVarWChar, 20, , , "wangfeng" 文本型,默认值 wangfeng
        On Error GoTo CreateColumn_Error
        Set obj_col = New ADOX.Column
        With obj_col
            .Name = ColName
            .Type = pType
            If .Type >= adVarChar Then .DefinedSize = Size
            Set .ParentCatalog = obj_Cat
            If .Type = adInteger Then .Properties("Autoincrement") = (AutoInc = 1)
            .Properties("Nullable") = (Nullable = 1)
            If Defaultvalue <> vbEmpty Then
                .Properties("Default").value = Defaultvalue
            End If
        End With
        obj_table.Columns.Append obj_col
        CreateColumn = True
        Exit Function
    CreateColumn_Error:
        CreateColumn = False
        ''''    Err.Raise 30004, "TCreateDataBase----CreateColumn", "未知错误"
    End Function
    Private Sub Class_Terminate()
        Set obj_col = Nothing
        Set obj_table = Nothing
        Set obj_Cat = Nothing
    End Sub
    使用此类,需要引ADOX对象