【问题标题】:How do I transfer multiple lines of excel data into an access table如何将多行excel数据传输到访问表中
【发布时间】:2013-04-03 22:01:28
【问题描述】:

现在,我正在遍历 Excel 电子表格中的每一行,并使用插入查询将每一行插入到我的 Access 表中。它有效,但速度很慢。如何进行一次查询以一次添加所有记录?

这是我当前的代码

Sub Insert()

Dim rs As ADODB.Recordset, strSQL As String, minPrem As Double, i As Long, datetime As Date

datetime = Now()

Call DB.ConnectToDB 'Connect to the database
Set rs = New ADODB.Recordset

i = 7 'first row of data

Do While (Cells(i, 1) <> "")

    If (IsNumeric(Cells(i, 6))) Then
        minPrem = Cells(i, 6)
    Else
        minPrem = 0
    End If

    strSQL = "INSERT INTO Rates (EffectiveDate, State, Company, ClassCode, Rate, MinPremium, TimeOfEntry) VALUES " _
    & "(#" & Cells(i, 1) & "#,'" & Cells(i, 2) & "','" & Cells(i, 3) & "','" & Cells(i, 4).Text & "'," & Cells(i, 5) & "," & minPrem & ", #" & datetime & "#)"
    rs.Open strSQL, Cn

    i = i + 1
Loop

End Sub

【问题讨论】:

    标签: sql excel vba ms-access insert


    【解决方案1】:

    在一个事务中包装多个INSERT 操作通常可以加快处理速度,因为单个 INSERT 被缓存,然后一次全部写入(提交)到数据库。尝试在进入循环之前添加cn.BeginTrans 语句,然后在退出循环后执行cn.CommitTrans,看看是否有帮助。

    另外,如果您只是在执行 INSERT 操作,那么您不需要处理单独的 Recordset 对象;你可以做cn.Execute strSQL

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-26
      • 1970-01-01
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 2016-05-28
      相关资源
      最近更新 更多