Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1547 / 2272 ツリー ←次へ | 前へ→

【6624】Findのエラー 山田 05/10/27(木) 10:14 質問[未読]
【6625】Re:Findのエラー たん 05/10/27(木) 10:55 回答[未読]
【6626】空の場合にAddNewするには? 山田 05/10/27(木) 11:42 質問[未読]
【6628】Re:空の場合にAddNewするには? たん 05/10/27(木) 12:16 回答[未読]
【6634】Re:空の場合にAddNewするには? 山田 05/10/27(木) 15:26 お礼[未読]

【6624】Findのエラー
質問  山田  - 05/10/27(木) 10:14 -

引用なし
パスワード
   WinXP
Access2002です。
下のモジュールで
rsWAにひとつでもレコードがあれば期待通りに動くのですが、
rsWAに全くレコードが存在しない場合にはエラーになります。
rsWAに全くレコードが存在しない場合での処理を可能にしたいのですが、
解決法が分かる方がいらしたら教えて下さい。

Do Until rsG.EOF
rsWA.Find "出張所CD='" & rsG!集計コード & "'"
If rsWA.EOF Then
 rsWA.AddNew
   rsWA![出張所CD] = rsG![集計コード]
   rsWA![受注1] = rsG![受注1の合計]
   rsWA![受注2] = rsG![受注2の合計]
   rsWA![受注3] = rsG![受注3の合計]
   rsWA![受注4] = rsG![受注4の合計]
   rsWA![完成1] = rsG![完成1の合計]
   rsWA![完成2] = rsG![完成2の合計]
   rsWA![完成3] = rsG![完成3の合計]
   rsWA![完成4] = rsG![完成4の合計]
   rsWA![利益1] = rsG![利益1の合計]
   rsWA![利益2] = rsG![利益2の合計]
   rsWA![利益3] = rsG![利益3の合計]
   rsWA![利益4] = rsG![利益4の合計]
   rsWA![受注初1] = rsG![受注1の合計]
   rsWA![受注初2] = rsG![受注2の合計]
   rsWA![受注初3] = rsG![受注3の合計]
   rsWA![受注初4] = rsG![受注4の合計]
   rsWA![完成初1] = rsG![完成1の合計]
   rsWA![完成初2] = rsG![完成2の合計]
   rsWA![完成初3] = rsG![完成3の合計]
   rsWA![完成初4] = rsG![完成4の合計]
   rsWA![利益初1] = rsG![利益1の合計]
   rsWA![利益初2] = rsG![利益2の合計]
   rsWA![利益初3] = rsG![利益3の合計]
   rsWA![利益初4] = rsG![利益4の合計]
   rsWA.Update
End If
rsG.MoveNext
Loop

【6625】Re:Findのエラー
回答  たん  - 05/10/27(木) 10:55 -

引用なし
パスワード
   >rsWAに全くレコードが存在しない場合にはエラーになります。
>rsWAに全くレコードが存在しない場合での処理を可能にしたいのですが、
>解決法が分かる方がいらしたら教えて下さい。

当然では。だって、rsWAが空かどうかの判定の前にFindしてるんだから。

>Do Until rsG.EOF
>rsWA.Find "出張所CD='" & rsG!集計コード & "'"
>If rsWA.EOF Then

【6626】空の場合にAddNewするには?
質問  山田  - 05/10/27(木) 11:42 -

引用なし
パスワード
   rsWAが空の場合にAddNewするにはどのように書いたらいいのでしょうか?



【6628】Re:空の場合にAddNewするには?
回答  たん  - 05/10/27(木) 12:16 -

引用なし
パスワード
   ▼山田 さん:
>rsWAが空の場合にAddNewするにはどのように書いたらいいのでしょうか?

ええとね、頭使いましょう。

最初にrsWAが空かどうかを確認。(EOFチェックなり、レコード数チェックなり)
で、空かどうかのフラグを立てる。

> Do Until rsG.EOF

フラグが成立すれば、Findを実行する。

> rsWA.Find "出張所CD='" & rsG!集計コード & "'"
> If rsWA.EOF Then

というかそれ以前に、Findなんかしないで、
Set rsWA = db.OpenRecordSet("SELECT 〜〜〜 WHERE 出張所CD='" & _
 rsG!集計コード & "'")
IF rsWA.EOF = TRUE THEN
 rsWA.AddNEW
 (以下略)
END IF
rsWA.Close

の方がマシだと思うけどなぁ。

【6634】Re:空の場合にAddNewするには?
お礼  山田  - 05/10/27(木) 15:26 -

引用なし
パスワード
   ではそっちの方向でやってみます。

1547 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078229
(SS)C-BOARD v3.8 is Free