性格悪い人が優勝

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
と出来ますでしょうか?


よろしくお願いします。

A 回答 (2件)

開示されたレコード定義が列名のみなのでなんとも。


制約はどうしていますか?

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

この回答への補足

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

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
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2014/12/24 13:06

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



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

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