ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

vba在access中创建表的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-7-31 10:54 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Public Sub 例28_1()
  2.     Dim cnn As New ADODB.Connection
  3.     Dim cmd As New ADODB.Command
  4.     Dim rs As New ADODB.Recordset
  5.     Dim myData As String
  6.     Dim myTable As String
  7.     Dim SQL As String
  8.     '设置数据库名称(包括完整路径)
  9.     myData = ThisWorkbook.Path & "\工资管理.mdb"
  10.     '设置要创建的数据表名称
  11.     myTable = "奖金表"
  12.     '建立与建数据库的连接
  13.     cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
  14.         & "Data Source=" & myData
  15.     cnn.Open
  16.     '判断数据库中是否已经存在同名的数据表
  17.     Set rs = cnn.OpenSchema(adSchemaTables)
  18.     Do While Not rs.EOF
  19.         If LCase(rs!TABLE_NAME) = LCase(myTable) Then
  20.             MsgBox "数据表已经存在!", vbCritical, "警告"
  21.             Exit Sub
  22.         End If
  23.         rs.MoveNext
  24.     Loop
  25.     Set cmd.ActiveConnection = cnn
  26.     '设置创建数据表的SQL语句
  27.     SQL = "CREATE TABLE " & myTable _
  28.         & "(职工编号 text(5) not null primary key," _
  29.         & "姓名 text(6) not null,性别 text(1) not null," _
  30.         & "奖金额 currency not null,发放日期 date not null,备注 text(50))"
  31.     '利用Execute方法创建数据表
  32.     With cmd
  33.         .CommandText = SQL
  34.         .Execute , , adCmdText
  35.     End With
  36.     '释放变量
  37.     cnn.Close
  38.     Set rs = Nothing
  39.     Set cmd = Nothing
  40.     Set cnn = Nothing
  41.     '弹出信息
  42.     MsgBox "数据表<" & myTable & ">创建成功!", vbInformation, "创建数据表"
  43. End Sub
复制代码
我想通过vbaaccess中新建表,代码可以实现,但是我想要新建的表名字中会含有-或者/,这个程序就实现不了了。比如说我的myTable = "奖金表-1" 就抱错!!!
如果手动把access中表名字改为含有-短横线的名字是可以实现的。说明access的表名是可以包含短横线的或者斜杠的。
书各位大神帮我用代码实现。不知为啥传不了附件...


TA的精华主题

TA的得分主题

 楼主| 发表于 2017-7-31 10:56 | 显示全部楼层
添加上附件了,   望大神帮忙

help.zip

25.4 KB, 下载次数: 54

TA的精华主题

TA的得分主题

发表于 2017-7-31 13:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
把表名用"[]"括起来

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-7-31 13:39 | 显示全部楼层
marco 发表于 2017-7-31 13:16
把表名用"[]"括起来

赞了!!真是高手,  非常感谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-2 15:40 | 显示全部楼层
本帖最后由 lei122612 于 2017-8-2 15:51 编辑
marco 发表于 2017-7-31 13:16
把表名用"[]"括起来

你好,还是类似之前的问题, 现在是往access中写数据,  如下代码,如果mytable中含有-或者/  运行就抱错! ,  没有的话就是好的, 麻烦再帮解决下, 谢谢了

  1. Private Sub CommandButton5_Click()
  2.     Dim a, b, c, d, e As String
  3.    
  4.     Dim cnn As New ADODB.Connection
  5.     Dim rs As New ADODB.Recordset
  6.     Dim myData As String, myTable As String
  7.     Dim myFields As Variant, myValue As Variant
  8.    
  9.     On Error Resume Next
  10.     myData = ThisWorkbook.Path & "\lsdata.mdb"    '指定数据库
  11.     myTable = Trim(TextBox1.Text)    '指定数据表名称
  12.    
  13.     Cells(7, 1) = myTable
  14.     With cnn    '建立与数据库的连接
  15.         .Provider = "microsoft.jet.oledb.4.0"
  16.         .Open myData
  17.     End With
  18.     '创建指定数据表的记录集
  19.     rs.Open myTable, cnn, adOpenKeyset, adLockOptimistic
  20.     '开始添加新记录
  21.    
  22.     a = DTPicker2.Value
  23.     b = ComboBox4
  24.     c = TextBox12
  25.     d = TextBox10
  26.     e = Now
  27.     myFields = Array("检验日期", "状态", "记录编号", "备注", "创建时间")
  28.     myValues = Array(a, b, c, d, e)
  29.     With rs
  30.         .AddNew myFields, myValues
  31.         .Update
  32.     End With
  33.     MsgBox "数据添加完毕!", vbInformation
  34.     '关闭记录集和数据库连接,释放变量
  35.     rs.Close
  36.     cnn.Close
  37.     Set rs = Nothing
  38.     Set cnn = Nothing


  39. Call showlist

  40. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 20:50 , Processed in 0.029594 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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