在VBA查询无法完成

时间:2017-07-13 07:50:51

标签: mysql vba access-vba

我想找到不同表中的记录总和,并将输出插入到新列中,当我运行代码时,它会向我显示错误:

"查询无法完成。查询结果的大小是  大于数据库的最大大小(2GB)或者还不够  磁盘上的临时存储空间,用于存储查询结果"

它突出了这一行

STD.Open sql, cnn, adOpenStatic

我的代码如下

Option Compare Database
Option Explicit

Public cnn As New ADODB.Connection
Public db As DAO.Database

Public Sub SMain()
    Set db = Access.Application.CurrentDb
    Set cnn = CurrentProject.Connection

   Get_Value

End Sub

Private Sub Get_Value()
    Dim sql As String
    Dim STD As New ADODB.Recordset
    Dim ODR As DAO.Recordset
    Set ODR = db.OpenRecordset("Total_tbl")

    Do Until ODR.EOF
    DoEvents
    sql = "SELECT SUM(MONT_VOL.tot_n* STD_tbl.factor_n)AS TOTAL_N FROM MONT_VOL " & _
    " INNER JOIN (STD_tbl INNER JOIN Total_tbl ON STD_tbl.AREA =Total_tbl.AREA_1" & _
    " AND STD_tbl.AID = Total_tbl.AID)" & _
    " ON MONT_VOL.BID = STD_tbl.BLOCK" & _
    " WHERE MONT_VOL.BDATE = Total_tbl.Adate" & _
    " GROUP BY MONT_VOL.BID"
    STD.Open sql, cnn, adOpenStatic

        If STD.RecordCount <> 0 Then
            ODR.Edit
            ODR!New_Col= STD!TOTAL_N
            ODR.Update
        End If

        STD.Close
        ODR.MoveNext
    Loop
End Sub

我做错了什么? 我是否正确地在

上调用输出
  

ODR!New_Col = STD!TOTAL_N

1 个答案:

答案 0 :(得分:1)

如果查询太大(错误消息指示),那么让我们将其拆分为更小的块。这只能在MySQL中正确使用,Access不支持 Schema::table('orders', function ($table) { $table->datetime('pay_time')->nullable()->change(); }); LIMIT,变通办法很麻烦,特别是对于总计查询

我在这里做了一些假设:

  1. 所有相关表都存储在同一个MySQL数据库中
  2. 您的表具有可用于ADO的有效连接字符串
  3. 请注意,仅在MySQL中执行查询可能足以解决此错误。

    OFFSET