将 Excel 数据添加到 Access 的 SQL 更新查询

Posted

技术标签:

【中文标题】将 Excel 数据添加到 Access 的 SQL 更新查询【英文标题】:SQL update query to add Excel Data to Access 【发布时间】:2013-09-20 18:26:36 【问题描述】:

我一直在寻找直接的解决方案,但没有找到与我在此板上尝试做的完全一样的事情。我有一个 Excel 工作表,其中包含不同公司的几个不连续的债券列表(想想一个公司的 5 个债券,3 个完全空的行,然后是另一个公司的 6 个债券的另一个列表,5 个完全空的行等) .

我正在尝试编写一个 SQL 更新查询,该查询将直接更新 .accdb 格式的 Access 表。我有与 Excel 中的列标题同名的字段,具有相同的数据。

我需要执行此逻辑:如果范围 A1 & B1 & C1 不为空,则向表中添加一条新记录,将 A1 & B1 & C1 显示为字段 [Ticker]、[Coupon]、[Maturity]。在这些单元格为空白的地方,移动到下一行。

有人可以帮助评估我的代码吗?我在指定“Set db”时收到错误 3343。

我的初步代码如下(从我在网上找到的与 Excel 和 SQL 命令的接口):

Sub UpdateDatabase()

    Dim x As Integer
    Dim strSQL As String
    Dim db As Database
    Dim dbLocation As String
    Dim objConnection As Object

        Worksheets("Bonds Clean").Activate
        Range("A6").Select

    dbLocation = "c:\Folders\Workflow Tables.accdb"

    Set objConnection = CreateObject("DAO.DBEngine.36")
    Set db = objConnection.OpenDatabase(dbLocation)


        For x = 1 To Range(Selection, Selection.End(xlDown)).Rows.Count

            If Not (Selection.Value = "") Then

                strSQL = "UPDATE tblBonds_Temp SET"
                strSQL = strSQL & "Ticker =" & Chr(34) & Selection.Offset(0, 1).Value & Chr(34) & ","
                strSQL = strSQL & "Coupon =" & Chr(34) & Selection.Offset(0, 2).Value & Chr(34) & ","
                strSQL = strSQL & "Maturity =" & Chr(34) & Selection.Offset(0, 3).Value & Chr(34) & ";"

                db.Execute strSQL

            Else
            End If

        Selection.Offset(1, 0).Select
        Next


End Sub

【问题讨论】:

完整的错误信息是什么? 你试过用谷歌搜索那个错误号吗? 是的,一个快速的 Google 建议您可能需要更新您的 DAO 驱动程序。 我认为当您在定义路径时使用space 时会出现问题,请尝试更改不带空格的文件名 dbLocation = "c:\Folders\Workflow Tables.accdb" //here Workflow Tables跨度> 我已经在不同的库之间切换,包括 2010 年最新的“Microsoft Office 14.0 Access 数据库引擎对象库”,但无济于事。 【参考方案1】:

DAO.DBEngine.36 适用于适用于 MDB 格式数据库文件的 DAO 3.6。但是,您的数据库是 ACCDB 格式,这意味着 DAO 3.6 将无法工作。您必须改用较新的 DAO。

'Set objConnection = CreateObject("DAO.DBEngine.36")
Set objConnection = CreateObject("DAO.DBEngine.120")

【讨论】:

太棒了!这清除了该错误。感谢帮助。我现在的问题是我的 UPDATE 语句似乎已关闭。我对 SQL 没有那么丰富的经验,但我基本上是从网上其他人那里抄来的。这不适合我的目标吗? (UPDATE 语句中的错误 3144 语法错误)。我实际上是在尝试为 Excel 中根据上述条件有数据的每一行添加一条新记录。 db.Execute strSQL 之前将Debug.Print strSQL 添加到您的代码中。然后运行代码并在“立即”窗口中查看失败的UPDATE 语句。您可以复制语句文本并将其粘贴到新 Access 查询的 SQL 视图中以进行测试。如果您需要进一步的帮助,请使用UPDATE SQL 和任何错误消息的全文提交问题。 刚才你说“添加一条新记录”。在这种情况下,UPDATE 是不合适的,因为它只能更改现有记录。您需要 INSERT 来添加新行。 美丽。非常感谢您的指导;我使用 INSERT INTO... VALUES... 使其工作,查询现在可以工作,并将所有相关项目从 Excel 添加到 Access。最佳答案! 不客气。抱歉,我来晚了才注意到UPDATEINSERT。嗯...我专注于 DAO 错误。 :-)

以上是关于将 Excel 数据添加到 Access 的 SQL 更新查询的主要内容,如果未能解决你的问题,请参考以下文章

通过 Excel 导入将数据添加到访问记录中

如何将Excel Web Access Web部件添加到我的sharepoint库中?

如何使用sql语句和vba将数据从MS-Access导入excel power查询?

如何使用 Excel VBA 将项目添加到 Sharepoint 列表?

从 Access 数据库获取数据到 Excel VBA 表单

如何将excel文件导入到一个oracle表中?谢谢