如下,顺序进行,即:建库、建表、追加记录、填充记录,OK!
但如果跳过  '创建新库-表:
  'Dim tmp_CA        As New ADOX.Catalog
  Dim pStr          As String
  Dim dbName        As String
  
  pStr = ""
  dbName = App.Path & "\Test.mdb"
  pStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbName
'-------------------------------------------------------------------------
  tmp_CA.Create pStr            '创建数据库
  tmp_CA.ActiveConnection = pStr
  
  Dim NewTbl As New Table
  NewTbl.Name = "测试表"
  NewTbl.Columns.Append "序号", adInteger      '表的第一个字段
  NewTbl.Columns.Append "学号", adVarWChar, 8  '表的第二个字段
  NewTbl.Columns.Append "姓名", adVarWChar, 8  '表的第三个字段
  tmp_CA.Tables.Append NewTbl '建立数据表
  Set tmp_CA = Nothing
'-------------------------------------------------------------------------
'注意:跳过上面两虚线内的代码,如下两行直接打开一个已经建好的库,可以!但...
  tmp_CN.Open pStr
  tmp_RS.CursorLocation = adUseClient
'紧接着想打开这个已经建好的表就不行了,报:"无效的SQL语句;期待'delete'、'insert'...."
  tmp_RS.Open "测试表", tmp_CN, adOpenKeyset, adLockPessimistic
  
  tmp_RS.AddNew '往表中添加新记录
  tmp_RS.Fields(0).Value = 9801
  tmp_RS.Fields(1).Value = "007"
  tmp_RS.Fields(2).Value = "孙悟空"
  tmp_RS.Update
  
  tmp_RS.Close
  tmp_CN.Close
  
  Set tmp_RS = Nothing
  Set tmp_CN = Nothing

解决方案 »

  1.   

    if tmp_rs.state<>adstateclosed then tmp_rs.close
    tmp_RS.Open "select * from 测试表", tmp_CN, adOpenKeyset, adLockPessimistic 
      

  2.   

    谢谢!
    1,加了开关状态检测(事实上表是关着的)
    2,改了 Open 命令字符串,提示:FROM 子句语法错误。
      

  3.   

    1.如果CursorLocation为 adUseClient,将不支持 adLockPessimistic。但设置不支持的值不会产生错误,因为此时将使用支持的最接近的 LockType 的值。
    2.试试 tmp_RS.Open "测试表", tmp_CN, , , adCmdTable
    3.如果报语法错误之类,还有可能是表名用了数据库关键字...
      

  4.   

    确实还报“FROM 子句语法错误”。
    我的表名是:"05-秋"。
      

  5.   

    表名不规范,不能用-号吧?只能用下钱线...
    如果一定要用-号,试试:tmp_RS.Open "[05-秋]", tmp_CN, adOpenKeyset, adLockPessimistic 
      

  6.   

    JET_SQL和T-SQL语法中,中括号的作用是防止不规范的字段名称,比如你的情况,还有和sql以及数据库保留字关键字冲突的情况