如何更快地将值写入访问数据库 - VBA(excel)

Posted

技术标签:

【中文标题】如何更快地将值写入访问数据库 - VBA(excel)【英文标题】:How to write a value into access database faster - 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]);"

请在我的学习中帮助我。

【问题讨论】:

Using Excel VBA to run SQL query的可能重复 @VictorK 但我的问题是如何让记录集将它们复制到数据库表中。 您必须查看ADODB.ConnectionInsert Into 声明,这两个声明都有大量问题:1,2,3。你还应该检查如何使用参数化查询。 @VictorK 谢谢。我跟着你的链接。我在 Insert into 语句中遇到错误。我已经更新了问题,任何想法哪里出错了? 实际上here is my answer 与Insert 的问题非常相似。还有 this is an answer 解释参数。 【参考方案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”之类的真实名称如果没有经过清理或参数化为 ' 将无法正常工作。

以上是关于如何更快地将值写入访问数据库 - VBA(excel)的主要内容,如果未能解决你的问题,请参考以下文章

访问 VBA 如何将新工作表添加到 Excel?

如何循环遍历熊猫数据框,并有条件地将值分配给变量的一行?

如何不确定地将值置于状态中?

如何在猫鼬中动态地将值推入对象的属性?

如何正确地将值分配给数组(结构类型)元素?

如何正确地将值从 pyqt 返回到 JavaScript?