ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 870|回复: 2

[求助] 我使用access vba在当前数据库新增数据表 然后插入数据时提示数据表不存在

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-12-25 16:21 | 显示全部楼层 |阅读模式

    我在 test 方法中调用新增数据表的方法

结果提示user表不存在 但是我在access中刷新一下列表之后 user表出来了  
究竟是 Application.RefreshDatabaseWindow 这个方法无效还是什么问题??
代码如下:
Function test()
    ’调用方法
    creatTbl
    '刷新
    Application.RefreshDatabaseWindow
   
    Debug.Print TableIsIn("user")
    '插入数据
    CurrentDb.Execute ("insert into user(ID,userName) values('1','didi')")
End Function

'判断表是否已存在
Function TableIsIn(TableName As String) As Boolean
    '刷新数据库
    Application.RefreshDatabaseWindow
    TableIsIn = True
    On Error Resume Next
    Dim strSQL As String
    strSQL = "select * from " & TableName
    CurrentDb.Execute strSQL
    If Err.Number = 3078 Then
        TableIsIn = False
    End If
   
End Function
'新建表
Sub creatTbl()
    Dim objCatalog
    Set objCatalog = VBA.CreateObject("ADOX.Catalog")
    Dim sConStr As String
    Dim oTable
    Dim oColumn
    Dim tColumn
    Set oTable = VBA.CreateObject("ADOX.Table")
    Set oColumn = VBA.CreateObject("ADOX.Column")
    Set tColumn = VBA.CreateObject("ADOX.Column")

    Dim flag As Boolean
    '刷新
    Application.RefreshDatabaseWindow
    flag = True
    On Error Resume Next
    Dim strSQL As String
    strSQL = "select * from user"
    CurrentDb.Execute strSQL
    If Err.Number = 3078 Then
        flag = False
    End If
   
    Debug.Print "是否存在" & flag
    '如果存在user表 则删除
    If flag Then
        '关闭user表
        DoCmd.close acTable, "user"
        '删除
        DoCmd.DeleteObject acTable, "user"
    End If
   
      '新建一个表
    With oTable
       '表名
      .Name = "user"
         '新建字段
         With oColumn
              .Name = "ID"
              
          End With
          '新建字段
          With tColumn
              .Name = "userName"
          End With
      .Columns.Append oColumn
      .Columns.Append tColumn
    End With
    With objCatalog
         sConStr = "Provider='Microsoft.ACE.OLEDB.12.0';Data Source=" & CurrentDb.Name
         .ActiveConnection = sConStr
         '添加新建的表
         .Tables.Append oTable
    End With
    '刷新
    Application.RefreshDatabaseWindow
   
End Sub



TA的精华主题

TA的得分主题

 楼主| 发表于 2019-12-25 16:22 | 显示全部楼层
百度查了很久没找到原因 来个大佬吧

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-12-26 09:00 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-18 20:49 , Processed in 0.035054 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表