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
我也遇到过这种情况,用了个很傻的办法!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
'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
on error方法不可取, 因为有很多错误会导致结束程序,判断表名是否存在为最好!
假设表的名字为LaborUnit,SQL语句如下 if exists (select * from sysobjects where id = object_id(N'[dbo].[LaborUnit]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)这是从脚本中抄来的,在数据库中随便找一个表,生成脚本,第一句就是判断这个表是否存在
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
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
http://www.csdn.net/expert/topic/113/113125.shtm
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
因为有很多错误会导致结束程序,判断表名是否存在为最好!
if exists (select * from sysobjects where id = object_id(N'[dbo].[LaborUnit]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)这是从脚本中抄来的,在数据库中随便找一个表,生成脚本,第一句就是判断这个表是否存在