みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

レコードセットに新規追加する

Access2013 VBAで
■テーブルa
・id
・名前
・id2
とあり

このテーブルのレコードセットを以下のように作ります。
dim Rec = dao.Recordset

Set Db = CurrentDB
set Rec = Db.OpenRecordset("Select * from [テーブルa] where id2 = " & 2, dbOpenDynaset)

この時、このテーブルにid2=2のレコードが何もない場合、この生成したRecで、
Rec.AddNew
Rec.Fields("名前").value = "名前"
Rec.Update
と出来ますでしょうか?


よろしくお願いします。

投稿日時 - 2014-12-20 12:16:13

QNo.8864452

すぐに回答ほしいです

質問者が選んだベストアンサー

開示されたレコード定義が列名のみなのでなんとも。
制約はどうしていますか?

Null、空文字を受け入れるなら、
レコード追加できますが、値を代入していない列はNullでしょうね。

投稿日時 - 2014-12-20 13:56:37

補足

ご回答ありがとうございます。
すみません、説明不足でした。

1. テーブルA
・IDa
・名前A

2. テーブルB
・IDb
・IDa
・名前B
とあって、1がメインフォーム、2がサブフォームのレコードソースの場合

2のレコードセットを
SQL="Select * from テーブルB where IDa = 2"
として
Set Rec = db.OpenRecordset(SQL, dbOpenDynaset)
をした場合に
もし、IDa = 2のレコードが、テーブルBに全然ない場合

Rec.AddNew
Rec.Fields("IDb").value = 3 (←ID番号3を事前に取得したとして)
Rec.Fields("ida").value = 2
Rec.Fields("名前").value = "名前"
Rec.Update

とすることができるかという質問でした。
お答えから察すると、取得したRecにレコードが何もない場合でも、AddNewで新規レコードを追加できるということでよろしいでしょうか?

投稿日時 - 2014-12-20 16:08:22

お礼

ご回答ありがとうございました。

もう少し勉強しないといけませんね・・・と

投稿日時 - 2014-12-24 13:06:26

このQ&Aは役に立ちましたか?

8人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

Db と Rec は正しく宣言されているものとして。

少なくとも、id2 は値をセットしてあげないと。
Rec.AddNew
Rec.Fields("id2").value = 2
Rec.Fields("名前").value = "名前"
Rec.Update

投稿日時 - 2014-12-20 13:23:14

あなたにオススメの質問