プロが教える店舗&オフィスのセキュリティ対策術

ACCESS2000で更新クエリの質問です。
先日同様の質問をさせていただきましたが、その後うまくできないところがあったので再度質問させていただきました。
内容は、フィールドの値のカウントを集計し、更新クエリを使用してデータを更新するという内容です。
前回の質問でDCount関数を用いて下記のとおり実行するとできるとのことでしたが、条件が複数ある場合どのように記述すれば
いいのかを教えて下さい。
条件は、
(1)年月 =Aテーブル.年月
(2)コード=Aテーブル.コード
(3)区分 =Aテーブル.区分

<こんな感じで実行しようとしたのですがうまく動きません>
UPDATE Bテーブル SET"
カウント数1
= DCount('区分','Aテーブル','[A年月]=[B年月] And [Aコード]=[Bコード] And [A区分]='001'')
カウント数2
= DCount('区分','Aテーブル','[A年月]=[B年月] And [Aコード]=[Bコード] And [A区分]='002'')

やりたいことは下記のとおりです。Aテーブルを集計しBテーブルの個数にAテーブルの個数の合計値を更新する。

<Aテーブル>
A年月  Aコード A区分     
200807  9991   001
200807  9991   001
200807  9991   001
200807  9991   002
200807  9991   002

<Bテーブル>
B年月  Bコード Bカウント数1  Bカウント数2
200807  9991        0       0

↓↓↓更新後

<結果:Bテーブル>  
B年月  Bコード Bカウント数1  Bカウント数2
200807  9991        3       2
             ↑       ↑
   (Aテーブルの区分='001'  (Aテーブルの区分='002'
    を集計した結果)       を集計した結果)

A 回答 (2件)

> ちなみに条件の年月、コード、区分全てテキスト型です。


多分、そう思って・・・「数値の前提」って、注意書きしたのよ^^;;;

UPDATE Bテーブル SET
Bカウント数1 = DCount('*','Aテーブル','[A年月] = ''' & [B年月] & ''' And [Aコード] = ''' & [Bコード] & ''' And [A区分]=''001'''),
Bカウント数2 = DCount('*','Aテーブル','[A年月] = ''' & [B年月] & ''' And [Aコード] = ''' & [Bコード] & ''' And [A区分]=''002''');

と、言う話・・・
''で、文字列の中に'を1つ挿入可能
だから、'''とシングルクオートが3つのところが、かなり増えた状況ね
    • good
    • 0
この回答へのお礼

できましした!!!
ありがとうございます。すごく助かりました。

お礼日時:2008/07/03 13:28

とりあえず、B年月、Bコードが数値の前提で、SQL文



UPDATE Bテーブル SET
Bカウント数1 = DCount('*','Aテーブル','[A年月] = ' & [B年月] & ' And [Aコード] = ' & [Bコード] & ' And [A区分]=''001'''),
Bカウント数2 = DCount('*','Aテーブル','[A年月] = ' & [B年月] & ' And [Aコード] = ' & [Bコード] & ' And [A区分]=''002''');

と、言う感じ
'の関係がおかしいのと、SQL上のWhere条件を入れられないから、DCountに更新条件を追加

この回答への補足

やってみたのですが、「更新クエリですべてのレコードを更新できません。」1個のフィールドで型変換エラー、0件のレコードでキー違反、0件のレコードでロック違反、0件のレコードで入力規則違反が発生したため、レコードを更新できませんでした。とエラーがでました。
SELECT文にしても#エラーと表示されます。
もう少し教えてください。ちなみに条件の年月、コード、区分全てテキスト型です。

補足日時:2008/07/03 11:38
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す