Office中国论坛/Access中国论坛

标题: 请教!可以在 DoCmd.DeleteObject acTable, "ABCD"中使用通配符吗? [打印本页]

作者: sxgaobo    时间: 2007-8-11 09:59
标题: 请教!可以在 DoCmd.DeleteObject acTable, "ABCD"中使用通配符吗?
我想批量删除不用的表,有什么办法可以实现啊?如批量删除表名称第一个字符不是“A”的表!
作者: t小宝    时间: 2007-8-11 11:44
用通配符是不行的,下面是用dao的方法:

Sub 用DAO遍历表()
    Dim tdf As DAO.TableDef
    Dim dbs As DAO.Database
    Set dbs = CurrentDb
   
    For Each tdf In dbs.TableDefs
        If Left(tdf.Name, 1) = "A" Then
            DoCmd.DeleteObject acTable, tdf.Name
        End If
    Next tdf
   
End Sub
作者: sxgaobo    时间: 2007-8-11 14:35
谢谢t小宝!!!
我想做的是删除表名称第一个字符不是“A”的表!
我将If Left(tdf.Name, 1) = "A" Then改成了If Left(tdf.Name, 1) <> "A" Then,却提示要删除系统文件,如何可以不删除系统文件啊!?
作者: andymark    时间: 2007-8-11 14:48
系统的表都是MSys开头的
if  left(tdf.name,4)<>"MSys" then
     If Left(tdf.Name, 1) <> "A" then
        DoCmd.DeleteObject acTable, tdf.Name
     end if
end if
作者: sxgaobo    时间: 2007-8-11 14:53
谢谢版主,有没有不删除隐含表的办法?
作者: andymark    时间: 2007-8-11 15:06
用GetHiddenAttribute属性判断,
另一种方法,凡是要隐藏的表加一个统一的前缀,按上面的方法判断即可
作者: sxgaobo    时间: 2007-8-11 18:58
谢谢版主!
程序都做好了,改表名称会带来混乱的啊,能告诉我GetHiddenAttribute属性怎么用吗?
作者: sxgaobo    时间: 2007-8-12 17:25
请各位大侠帮忙啊~~~!!!
作者: andymark    时间: 2007-8-12 18:26
Dim tdf As DAO.TableDef
    Dim dbs As DAO.Database
    Set dbs = CurrentDb
   
    For Each tdf In dbs.TableDefs
      If Application.GetHiddenAttribute(acTable, tdf.Name) = False Then
         
          If Left(tdf.Name, 1) <> "A" Then
              DoCmd.DeleteObject acTable, tdf.Name
         End If
        End If
    Next tdf
作者: sxgaobo    时间: 2007-8-13 10:57
谢谢版主!!!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3