Microsoft Access 掲示板

同一テーブルの新規レコードに、選択したフィールドの値だけをコピーしたい。

6 コメント
views
4 フォロー

お世話になります。ACCSESS 超初心者です。
どなたかご教授下さい。

帳票フォーム上でボタンを押すと、現在選択しているレコード内の特定のフィールドだけをコピーし、新規レコードに貼り付けたいのですが、VBAで記述したいのですがどうすればよいかわかりません。

テーブルA内に、主キー、フィールドA、フィールドB、フィールドCがあります。
その中のフィールドAとフィールドCの値だけを取得し、同じテーブルAの新規レコードに貼り付けたいのです。

ZANNEN
作成: 2021/02/24 (水) 09:36:37
通報 ...
1
hiroton 2021/02/24 (水) 10:07:07 83be0@f966d

厳密にはコピーではないですが、「新規レコードのフィールドに最初から入っている値」は規定値プロパティで指定できます

Access Study | Vol.13 フォーム&コントロール プロパティ活用辞典(T'sWareさん)

Sub ボタン_Click()
    Me!テキストA.DefaultValue = Me!テキストA
    Me!テキストC.DefaultValue = Me!テキストC

    DoCmd.GoToRecord , , acNewRec
End Sub

リンク先に解説がありますが、フィールドAやフィールドCのデータによって記述の仕方が変わるので注意してください

2
ZANNEN 2021/02/24 (水) 13:30:02 e48ae@6eb0c

早々のご回答ありがとうございます。
やってみましたが、実行時エラー94 Nullの使い方が不正です。とでます。
コピー元のテキストCの値が空白(NULL)の場合、このエラーが出るようです。
差し支えなければ回避策ご教授下さい。

3
hiroton 2021/02/24 (水) 13:35:39 83be0@f966d

Nullの場合があるなら空白に置き換えればいいかな

Me!テキストA.DefaultValue = Nz(Me!テキストA, "")
Me!テキストC.DefaultValue = Nz(Me!テキストC, "")
4

ありがとうございます!
何度もすみません。。。
データ型が短いテキストの場合、#Name となってしまいます。規定値のプロパティを見ると、その文字列の前に『="』と後に『"』をつけないといけないようなんですが、どうすればいいかわかりません。

貼り付けて頂いたリンクを読みましたが正直よく理解できていません。。。
ほんとに初心者の質問ですみません。

5
hiroton 2021/02/24 (水) 14:41:22 83be0@f966d

テキスト型なら

Me!テキストA.DefaultValue = """" & Me!テキストA & """"
Me!テキストC.DefaultValue = """" & Me!テキストC & """"

参考:ダブルコーテーションの表示(Office TANAKAさん)

なお、この使い方の場合はNullを気にする必要はありません

Me!テキストA.DefaultValue = Null '=>エラーになるので対処が必要
Me!テキストA.DefaultValue = """" & Null & """" '=>「""」として処理されるのでNullはそのままで使える
6
ZANNEN 2021/02/24 (水) 15:40:24 e48ae@6eb0c

できました!!!
ありがとうございます!!!