私も解決策を探していました。クロス集計に基づいてクエリを作成し、それを合計してユニオンクエリの下部に追加する以外は、いずれかを見つけることができませんでした。私はフォーム内からすべての SQL ステートメントを実行しようとしているので (展開がより管理しやすい)、このアプローチは好きではありません: コードから Querydef/view を作成または再入力するなどです。
フォームのサブフォームに結果を表示する場合は、次のようにします。
サブフォームの下、および 1 つのレコードのみを保持するのに十分短い別のサブフォーム。
次のように、フォーム内のコントロールを関数にバインドします。
control1 = fnADOSum(yourCrosstabfield1, yourCrosstabSQL)
Public Function fnADOSum(fldName As String, strInputSQL As String) As Double
On Error GoTo ERRHANDLER
Dim RS1 As ADODB.Recordset
Dim cnn As ADODB.Connection
Dim StrSQL As String
Dim dblRunTot As Double
Set RS1 = New ADODB.Recordset
RS1.CursorLocation = adUseServer
Set cnn = CurrentProject.Connection
dblRunTot = 0
With RS1
.Open strInputSQL, cnn, adOpenForwardOnly, adLockReadOnly
If Not .EOF And Not .BOF Then
.MoveFirst
Do Until .EOF
dblRunTot = dblRunTot + Nz(.Fields(fldName).Value, 0)
.MoveNext
Loop
End If
.Close
End With
fnADOSum = dblRunTot
'CLEAN UP:
cnn.Close
Set RS1 = Nothing
Set cnn = Nothing
EXITHANDLER:
Exit Function
ERRHANDLER:
'' your own error handling proc
'' LogError err.Number, err.Description
End Function