如何更快地将值写入访问数据库 - 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.Connection
和Insert 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)的主要内容,如果未能解决你的问题,请参考以下文章