你的那个MyStr$是在哪儿定义的?如果是数据库名,那参数FileName是拿来干嘛的呀?

解决方案 »

  1.   

    对了,那是我调试时忘了改回来
    应为:Public Function CreateUserTable(ByVal UserTblName As String, ByVal FileName As String, ByVal DatabasePassword As String) As Boolean
    Dim cat As New ADOX.Catalog
    Dim tabCreate As ADOX.Table
    Dim idxCreate As ADOX.Index
    Dim conn As New ADODB.Connection
    Dim cmd As New ADODB.Command
    Dim rs As New ADODB.Recordset'Debug.Print MyStr$conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FileName & ";Jet OLEDB:Database Password=000"
    Set cmd.ActiveConnection = conn
    rs.CursorLocation = adUseClient
    Set tabCreate = New ADOX.Table
    tabCreate.Name = txtTable.text
      With tabCreate.Columns
            .Append "ID", , 20              
            .Append "Name", , 80
            .Append "Password", , 100
            .Append "email", , 120
            tabCreate.Columns("email").Attributes = adColNullable
      End With'****************************************************************
    '此处高亮
    '错误提示为:
    '          实时错误'3420'
    '          对象不再有效cat.Tables.Append tabCreate      '此处过不了呀
    '****************************************************************Set tabCreate = Nothing
        With cat.Tables(UserTblName)
            Set idxCreate = New ADOX.Index
            idxCreate.Name = "ID索引"
            idxCreate.Columns.Append "ID"
            idxCreate.PrimaryKey = True
            idxCreate.Unique = True
            .Indexes.Append idxCreate
        End With
        
      
    CreateUserTable = True
    Set cat = NothingEnd Function
      

  2.   

    别用adox,直接用
    conn.execute("create table ......")吧。
    SQL文比较烦,我就不写了。