私が開発しているアクセスデータベースのフォームを開く際に問題が発生しています。クエリは停止せずに実行されています。私はそれを手動で停止する必要があります(以下のアクションは実行されません)。フォームを開くと、コードのこの部分を実行すべきで :ものがフィールド1表1のフィールド1と一致しているフィールド3 = 0及びこれらのレコード間を、記録する言い換えるアクセスデータベースのフォームを開く際のsqlクエリ
Private Sub Form_Load()
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE Table1 SET Field1 = Null WHERE EXISTS(SELECT * FROM Query2 WHERE Query2.Field2 = Table1.Field2 AND Query2.Field3 = 0 AND Query2.Field1 = Table1.Field1)"
DoCmd.SetWarnings True
End sub
を、iはQUERY2に確認する必要がありField2はTable1のField2に一致します。これらのレコードが特定されると、Table1のField1のレコードの値をNullに設定します。
For example (i put in "code" aspect to have this part more readable, but it's not code, only an example)
Table1.Field1 | Table1.Field2
ABC 12345
DEF 67891
Query2.Field1 | Query2.Field2 | Query2.Field3
ABC 12345 5 --> this record is not selected
DEF 12345 0 --> this record is not selected
DEF 67891 0 --> this record is selected and value of DEF in Table1 is deleted (Null)
エラーが発生しましたか?あなたはそれを行う方法がありますか?私はSQLについて多くのことを知っていません。 私は
おかげで、 ダイアン
これらのテーブルにはどのくらいの行がありますか(おおよそ)? –
これはパフォーマンス上の問題のようです。少量の行を持つテーブルに対しても同じことを試してください。すべてのクエリで 'WHERE'と' JOIN'で使用されているすべてのテーブルフィールドがインデックスされているかどうかをチェックします。 –
ご返信ありがとうございます。私はそれぞれ2000レコードが好きです。インデックスを確認しましたが、1つのフィールドがインデックスに登録されていませんでした。私はいくつかのレコードで試してみました、それは動作します。これを行うより良い方法はありますか? – Diane