2

MS Access コントロールで参照されるクエリ (QueryB) を作成しようとしています。ソース式の構文が正しいことはわかっています。QueryA と非常によく似た作業コントロールがあります。

フィールド名とクエリ名のみを変更しました。ただし#Name?、QueryB で悪名高いエラーが発生し続けます。QueryA と QueryB の違いは SQL コードです。QueryA にはGROUP BYandがありSUM()、QueryB には のみがありDATEDIFF()ます。GROUP BYQueryB に を追加しようとしましたが、[...execute query には集計関数の一部として指定された式が含まれていません] が表示され続けました。

クエリ B:

SELECT IIF(DATEDIFF("d",Date_X,Date_Y)>100),
ROUND(IIF(DATEDIFF("d",Date_X,Date_Y)/30,2),
DATEDIFF("d",Date_X,Date_Y) 
AS DATEDIFF_X_Y
FROM LAB_DATES GROUP BY LAB_DATES.ID;

これは MS Access SQL にあります。

MS Access で QueryB を参照する ControlB ソース:

=DLookUp("[DATE_DIFF_X_Y]",
         "[QueryB]",
         "[LAB_DATES.ID] = " & [Forms]![Lab Results Form]![Textbox_DATE_ID])

を取り出すとGROUP BY、このクエリは正常に実行され#Name?ますが、コントロールでエラーが発生します。すべてのデータは ODBC MySQL からのものです。アクセスはフロントエンドです。

編集:私はちょうどドロップすることができますGROUP BY. しかし、私は#Name?エラーが発生します。私の目標は、Date_X と Date_Y の日付の差を表示することです。

4

2 に答える 2

0

[...実行クエリには、集計関数の一部として指定された式が含まれていません]

このエラー メッセージは、GROUP BY を使用しても集計関数が機能しないことを既に示しています。

DATEDIFF()は集計関数であり、 では機能しませんGROUP BY

その理由はGROUP BY、dataresult を削減し、使用している列の異なるエントリごとに 1 行のみを表示するためです。

とにかく、そのクエリの目的は何ですか? その問題には別の解決策があると確信しています。主キーは定義ごとに一意であるため、効果のない主キーをGROUP BY DATE.ID作成しているように聞こえます。GROUP BY

于 2013-07-26T15:29:34.977 に答える