0

VBA を使用してフォームを開きます。それが重要な場合、フォームにはレコードソースのクロス集計クエリがあります。やっています

DoCmd.OpenForm Form_frmMyForm.Name, , , "ID = 7"

(最終的には "= 7" をより便利なものに置き換えます。これはテスト用です)

しかし、その行に到達するとエラーが発生します。

Run-time error '3070":
The Microsoft Access database engine does not recognize 'ID' as a valid field name or expression.

フィールド 'ID' がクロス集計クエリにあることを確認しました。実際、私はそのフィールドをいくつかのコントロールで問題なく使用しています。

私も試しました

 Form_frmMyForm.Recordset.FindFirst "ID = 7"
 MsgBox (Form_frmMyForm.Recordset.NoMatch)

「False」と表示され、一致したことを示しますが、フォームはそのレコードに進みません。

私が見逃している可能性のあるアイデアはありますか?

4

2 に答える 2

0

基になるデータの ID ですか、それともクロス集計によって生成された列ですか?

クロス集計列が生成される前に条件が適用されるのではないかと思います。そのため、データの取得を開始する (そして条件を適用しようとする) ときに、ID 列はまだ作成されていないため表示されません。

于 2013-07-09T12:32:41.983 に答える
0

変更してみてください:

Form_frmMyForm.Recordset.FindFirst "ID = 7"

Form_frmMyForm.Recordset.FindFirst "[ID] = 7"

レコードセットからフィールドを参照するときは、これらの角かっこが必要です。次に、変数を使用するには、次のことができます。

Form_frmMyForm.Recordset.FindFirst ("[ID] = " & Me.Whatever & "")

アップデート:

DoCmd.OpenForm Form_frmMyForm.Name, , , Form_frmMyForm.Recordset.FindFirst "[ID] = 7"
于 2013-07-09T12:26:56.730 に答える