一个变通方法:使用On Error语句

解决方案 »

  1.   

    dao代码:set db=dao.dbenging.opendatabase("c:\test.mdb")
    for i=0 to db.tabdefs.count-1
        debug.print db.tabdefs(i).name
    nextado 需要引用 Adox 
    Dim k As New ADOX.Catalog
    ...
    For i = 0 To k.Tables.Count - 1
        Debug.Print k.Tables(i).Name
    Next
      

  2.   

    我也遇到过这种情况,用了个很傻的办法!Private Sub Command1_Click()
      
      Dim myDB As Database
      Dim td As TableDef
      Dim hl As Boolean
      hl = True
      
      Set myDB = Workspaces(0).OpenDatabase("d:\bank.mdb")
      
      For Each td In myDB.TableDefs
          If td.Name = "表1" Then
            '如果表1存在则
            MsgBox "表存在!"
            hl = False
          End If
      Next
      
      If hl Then
        MsgBox "表不存在!"
      End If
      
      myDB.CloseEnd Sub
      

  3.   

      其实我觉得最简单的方法也是用on error语句。可以试一下
      

  4.   

    如何知道数据库中是否存在名为k的表?
    http://www.csdn.net/expert/topic/113/113125.shtm
      

  5.   

    'ADO时
    dim sqlstr as string
    Dim conn As ADODB.Connection
    sqlstr="IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'aaa')"
    conn.Execute sqlstr
      

  6.   

    on error方法不可取,
      因为有很多错误会导致结束程序,判断表名是否存在为最好!
      

  7.   

    假设表的名字为LaborUnit,SQL语句如下
    if exists (select * from sysobjects where id = object_id(N'[dbo].[LaborUnit]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)这是从脚本中抄来的,在数据库中随便找一个表,生成脚本,第一句就是判断这个表是否存在