クエリの結果をテキストボックスにリンクしたいのですが、次のエラーが発生します。コードは次のとおりです。
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("SELECT XValue, YValue,Wert FROM tb_DCM_Daten WHERE (FzgID=" & Forms!frm_fahrzeug!ID & " AND Name='" & List2.Value & "')")
Text10.Text = rst!XValue //error in this line
それはc.a20レコードを返す必要があります
なぜこのエラーが発生し、どうすれば解決できますか?
エラーの考えられる理由の1つは、Name
がAccessの予約語であるため、次を使用する必要があることです。
... & " AND [Name]='" & ...
rst.EOF
を使用する前に、rst!XValue
をテストすることもできます。つまり、クエリが少なくとも1つの行を返しているかどうかを確認するには、コードを追加します。
If rst.EOF Then
MsgBox "The Recordset is empty."
End If
.OpenRecordset
呼び出しの直後。 Recordset isが空の場合は、上記のコメントで@GregHNZが説明しているように、SQLステートメントを確認する必要があります。
これを引き起こす可能性のあるもう1つの追加点は、「予約語」フィールドを持つ結果セットのセットを返すことです。次に例を示します。
「Customers」テーブルのフィールド名は次のようになります。
Custnum | Date | Custname
Dateフィールドはほとんどのデータベースの予約語であることがわかっています
したがって、を使用してレコードを取得するとき
SELECT * FROM Customers
これにより「現在のレコードがありません」が返される可能性があるため、代わりにそのテーブルのすべてのフィールドを選択し、次のようにフィールドの選択を最小限に抑えます。
SELECT custnum, custname FROM Customers
通常、私はこれを行います。 Accessで新しいクエリを作成し、SQLビューに切り替えて、そこにコードを貼り付け、[デザイン] >> [ファイル名を指定して実行]に移動します。
SELECT XValue, YValue,Wert FROM [tb_DCM_Daten] WHERE [FzgID]=12 AND [Name]='ABC';
クエリ構文が正しい場合は結果が表示されます。そうでない場合は、エラーmssgがどこが間違っているかを示します。私は以前よりもはるかに複雑なクエリをデバッグしていましたが、これが私が行った方法です。それでもエラーが発生する場合は、試してみてください
Dim sql as String
sql = "SELECT...."
Set rst = CurrentDb.OpenRecordset(sql)
もう1つの考えられる理由は、テーブル名である可能性があります。あなたのテーブル名は正確には何ですか?テーブルに空白が含まれている場合は、この[DCMDaten]のようにする必要があります。
上記の解決策を無駄に試した後、別の解決策を見つけました:AccessテーブルのYes/NoフィールドをNullにすることはできません( allenbrowne.com/bug-14 を参照)
私の状況は少し異なりましたが、「現在の記録はありません」しか得られませんでした。 GROUPBYを使用してクエリを実行するとエラーが発生し、[はい/いいえ]フィールドを一時的に削除した後にクエリが機能しました。
しかし、私の[はい/いいえ]フィールドには、驚くべきことにNullが含まれていませんでした。しかし、トラブルシューティングの結果、クエリ結果にNull Yes/No値が実際に入力されている関連エラーが見つかりました。関連するエラーを修正すると、結果のNull Yes/No値が排除され、このエラーが排除されました。