【问题标题】:How to write a value into access database faster - VBA (excel)如何更快地将值写入访问数据库 - VBA(excel)
【发布时间】:2017-11-15 16:29:51
【问题描述】:

我正在尝试使用 vba 从 excel 将值存储在 access 数据库中。

我在 Excel 中有一个表单,我可以在其中获取用户的输入。

在 VBA 上,在 Locals 窗口中,我可以看到分配给对象的值,如下所示,

Name = Mike
Age = 23
Occupation = Student

在 Access 数据库中,我有一个名为 UserTable 的表,其中包含名为 ID, Name, Age, Occupation 的列,现在如何将值从 VBA 传递到 Access 数据库。

我希望同时更快地逐条添加值记录。

这是我得到错误的地方

strSQL = "PARAMETERS [Name] TEXT(255), [Age] INTEGER, [Occupation] TEXT(255);" _
               & " INSERT INTO UserTable([User Name], [User Age], [User Occupation]);"

请在我的学习中帮助我。

【问题讨论】:

  • @VictorK 但我的问题是如何让记录集将它们复制到数据库表中。
  • 您必须查看ADODB.ConnectionInsert Into 声明,这两个声明都有大量问题:1,2,3。你还应该检查如何使用参数化查询。
  • @VictorK 谢谢。我跟着你的链接。我在 Insert into 语句中遇到错误。我已经更新了问题,任何想法哪里出错了?
  • 实际上here is my answerInsert 的问题非常相似。还有 this is an answer 解释参数。

标签: vba excel


【解决方案1】:

创建对 ADO 记录集库的引用

创建并打开访问数据库的连接对象

 Dim Conn as new adodb.connection
  conn.connectionstring = "google for connection string here"
  conn.open

创建一个包含附加查询的字符串(注意:字段之间需要逗号,字符串周围需要 ')

Dim strSQL as string
StrSql = "INSERT INTO [Usertable] ( Name, Age, Occupation ) "
strsql = strsql & "Values('" & me.Name & "'," & me.age & ",'" & me.occupation & "')"

使用 EXECUTE 运行此字符串

conn.execute  strsql

【讨论】:

  • 上次我在这里建议了一个未参数化的查询,所以我得到了this 作为回复。我猜是合理的。
  • 如果小鲍比桌在工作环境中做到这一点,他将不会很快进入那种环境。这是 excel 和办公室访问 - 不是 wikileaks 的俄罗斯假新闻数据库
  • 这不是重点。例如,“Sarah O'Connor”之类的真实名称如果没有经过清理或参数化为 ' 将无法正常工作。
猜你喜欢
  • 1970-01-01
  • 2011-02-18
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
  • 2010-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多