- ベストアンサー
削除クエリをすると、必要なレコードが消えてしまう
店のサンプル商品を発注し、返却される一連の作業をAccessで作っています。 T顧客名‥‥フィールド:「ID」「顧客」 Tサンプル品‥‥フィールド:「CD」「商品」 T発注‥‥フィールド:「ID」「CD」「発注日」「数量」←規定値1 T返却‥‥フィールド:「ID」「CD」「返却日」「数量」←規定値1 テーブルは以上です。 クエリは、 Q発注伝票‥‥フィールド 「T顧客:ID」「T顧客:顧客」「Tサンプル品:商品」「T発注:日付」「T発注:数量」 Q返却伝票‥‥フィールドは「T発注」の部分が「T返却」に変わります。 発注されたサンプル商品が返却されたら、 クエリの発注と返却を照合し、「T顧客:ID」と「Tサンプル品:商品のサンプル商品が一致した場合、 Q発注伝票のレコードだけ削除したいと思っています。 数量は規定1で、2以上発注しないので、無視でOKなのです。 削除クエリを用いましたが、なぜか、発注伝票だけでなく、返却伝票のレコードごと無くなってしまいました。 式を変えればエラーになり、また変えれば明後日の場所が消えたり‥‥。 何度やってもうまくいきません。 どのような解決策をすればよいか、煮詰まっています。 なお、クエリの更新が自動で出来れば良いとも思っていますが、出来ますでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
う~ん?・・・質問に対しての答えでは有りません ぱっと読んだ内容から、削除クエリを動作させるのは必要なんだろうか?と、疑問に思ったのですが・・・ 要するに、 SELECT T発注.* FROM T発注 WHERE [T発注]![数量]-Nz((Select 数量 From T返却 Where [T返却]![ID] = [T発注]![ID] And [T返却]![CD] = [T発注]![CD] ),0)) <> 0; と、言う感じでサブクエリを使用したクエリを介すれば、返却済みの商品は出さないと言う事が可能です いつ発注されたものが、いつ返却されたとか記録を追いかける際には、ゆくゆくは、データが必要が出てくるのでは?と思った次第です 従来であれば、発注された書類に番号を振って、その発注番号に対して返却日を記録していくほうが良いのだと思いますが・・・それほどデータを確実にしていく必要性がないのかな?
その他の回答 (1)
- x0000x
- ベストアンサー率52% (67/127)
今晩は。 >削除クエリ … 発注伝票だけでなく、返却伝票のレコードごと無くなってしまいました。 削除クエリのSQL文を開示いただかないと、正しいかどうか判断できません。 クエリデザインでコンテキストメニューから「SQLビュー」を表示し、表示されたSQL文を開示ください。 また、テーブル間でリレーションなど設定していないですよね? 参照整合性の「レコードの連鎖削除」にチェックが付いているとか? 何はともあれ、削除SQLとリレーションシップの開示か、確認してみてください。
お礼
ありがとうございました。 無事にクエリが出来上がりました。 削除クエリに関しては、いずれはどうだろうと疑問ですが、今現在は必要だと思いました。