Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

在VBA中,如何判断一个表或查询是否存在?

冯先生  发表于:2008-06-19 10:00:21  
复制

请问,1.在当前数据库中,如何用VBA代码判断一个表或查询是否存在?

2.如果把一个表导出到另一个Access数据库中,判断另一个数据库是否有同名的表或查询?

谢谢!

 

Top
十段 发表于:2008-06-19 10:13:39
请参阅:《使用DAO判断ACCESS的一个表/查询等对象是否存在 》 http://www.accessoft.com/article-show.asp?id=605

pc高手 发表于:2008-06-19 10:33:27

我提供你三个函数,都好使。 随你意愿使用。 直接粘贴到 模块里即可, 不需变动任何东西。

 

函数1:

Function tblA(strTableName As String) As Integer    ''' 表对象是否存在  tblA("表1")  返回值 -1 ,0
    Dim db As Database
    Dim I As Integer
    Set db = DBEngine.Workspaces(0).Databases(0)
    tblA = False
    db.TableDefs.Refresh
    For I = 0 To db.TableDefs.Count - 1
        If strTableName = db.TableDefs(I).Name Then
            'Table Exists
            tblA = True
            Exit For
        End If
    Next I
    Set db = Nothing
End Function

 

函数2:

Function tblB(strTableName As String) As Boolean    ''' 表对象是否存在  tblB("表1")  返回值 true , false
    tblB = Nz(DLookup("[Id]", "[MSysObjects]", "[Type]=1 AND [Name]='" & strTableName & "'"))
End Function

 

函数3:

Function tblC(strTableName As String) As Boolean     ''' 表对象是否存在  tblC("表1")  返回值 true , false
    On Error Resume Next
    tblC = IsObject(CurrentDb.TableDefs(strTableName))
End Function



樟树 发表于:2008-06-19 10:54:17

Function TheTableIsExists(strDBName As String, strTableName As String) As Boolean
'本函数用于判断strDBName指定的数据库中,是否存在strTableName为表名的表
'返回结果:存在返回true 不存在返回 false

    Dim CN As ADODB.Connection
    Set CN = New ADODB.Connection
    CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CurrentProject.Path & strDBName
    Set RS = CN.OpenSchema(adSchemaTables)    
    Do Until RS.EOF
        If RS("TABLE_TYPE") = "TABLE" And RS("TABLE_NAME") = strTableName Then
            TheTableIsExists = True
            Exit Function
        End If
        RS.MoveNext
    Loop
    RS.Close
    TheTableIsExists = False   
End Function



冯先生 发表于:2008-06-21 11:22:28

zhangyjllf 您好!

 

TheTableIsExists函数对有密码的数据库不能测试,对Aeecss2007版.accdb数据库不能测试表是否存在,应该如何处理?



总记录:4篇  页次:1/1 9 1 :