列の古いレコードに番号を付けてデータシート サブフォームのアイテムを注文するコードを実行しましたが、それに依存するメイン フォームを開いたときに在庫トランザクション テーブルの列を更新した後です。クエリを実行して顧客の残高を決定し、そのクエリを実行するのに2〜3分以上かかりますが、データの古いコピーに戻すと正常に実行され、1つの列のレコードの番号を変更するだけでしたそのうちの 1 には、レコードの番号を付け直すコードが含まれていました。
Dim rst As DAO.Recordset
Dim i As Long
Dim OID As Long
Dim stringSQL as String
i = 1
stringSQL = "SELECT * FROM [Inventory Transactions] " _
& "WHERE [OrderID] > 0 Order By [OrderID],[TransactionID]"
Set rst = CurrentDb.OpenRecordset(stringSQL, dbOpenDynaset)
With rst
OID = rst!OrderID
Do Until .EOF
If OID = rst!OrderID Then
.Edit
!OrderLineNumber = i
.Update
.MoveNext
i = i + 1
Else
OID = rst!OrderID
i = 1
End If
Loop
.Close
End With
Set rst = Nothing
編集1:
今日もこれで遊んでいましたが、変更した在庫トランザクション テーブルを実際に参照する第 2 レベルのサブクエリを壊しているクエリは正常に実行されますが、サブクエリ 2 と支払いクエリの合計を参照するサブクエリ 1 にレベルが上がり、チョークしますが、合計の支払いは支払いテーブルのみを参照します。
編集2:
今日、さらにテストを行いました。サブクエリ 2 と合計支払クエリは、どちらもストップウォッチで時間を計るよりも速く実行されますが、組み合わせると約 1:45 かかります。最初の 4 つは合計で、最後はグループ化され、次に支払合計からの 1 つがグループ化されます
サブクエリ 2:
SELECT
CLng((nz([UnitsSold])*nz([UnitPrice]))*(1-nz([Discount]))*100)/100 AS [Line Total],
CLng([Line Total]*(1+nz([SalesTaxRate]))*100)/100 AS [Line Total With Tax],
[Line Total With Tax]-[Line Total] AS [Line Tax],
[Inventory Transactions].*
FROM [Inventory Transactions]
WHERE ((([Inventory Transactions].OrderID) Is Not Null));
支払合計クエリ:
SELECT DISTINCTROW Payments.OrderID,
Sum(Payments.PaymentAmount) AS [Total Payments]
FROM Payments
GROUP BY Payments.OrderID;
サブクエリ 1:
SELECT
[Balance Due By Customers Subquery2].OrderID,
Sum([Balance Due By Customers Subquery2].[Line Total]) AS [SumOfLine Total],
Sum([Balance Due By Customers Subquery2].[Line Tax]) AS [SumOfLine Tax],
Sum([Balance Due By Customers Subquery2].[Line Total With Tax]) AS [SumOfLine Total With Tax],
[Sum Of Payments Query].[Total Payments]
FROM [Balance Due By Customers Subquery2]
LEFT JOIN [Sum Of Payments Query]
ON [Balance Due By Customers Subquery2].OrderID = [Sum Of Payments Query].OrderID
GROUP BY [Balance Due By Customers Subquery2].OrderID,
[Sum Of Payments Query].[Total Payments];