我想找到不同表中的记录总和,并将输出插入到新列中,当我运行代码时,它会向我显示错误:
"查询无法完成。查询结果的大小是 大于数据库的最大大小(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
答案 0 :(得分:1)
如果查询太大(错误消息指示),那么让我们将其拆分为更小的块。这只能在MySQL中正确使用,Access不支持 Schema::table('orders', function ($table) {
$table->datetime('pay_time')->nullable()->change();
});
或LIMIT
,变通办法很麻烦,特别是对于总计查询
我在这里做了一些假设:
请注意,仅在MySQL中执行查询可能足以解决此错误。
OFFSET