Access2000のDAOで下記のようなコードで複写元テーブルから複写先テーブルにデータを追加するとします。
Set Rs1 = Db.OpenRecordset("複写元", dbOpenTable)
Set Rs2 = Db.OpenRecordset("複写先", dbOpenTable)
Do Until Rs1.EOF
Rs2.AddNew
Rs2!FL1 = Rs1!名前
Rs2!FL2= Rs1!性別
Rs2!FL3= Rs1!郵便番号
Rs2!FL4= Rs1!住所
・
・
Rs2! FL50= Rs1! 50番目
Rs2.Update
Rs1.MoveNext
Loop
複写元のフィールドが50フィールドもあると、いちいちRs1!名前とかRs1!性別とか記述するのが大変ですし、ものすごく長いコードになります。そこで、配列にしてやったらどうだろうかとこんなことをしてみましたがだめでした。
Dim I
Dim FieldsName
FieldsName=Array("名前","性別",・・・"50番目")
・
・
Do Until Rs1.EOF
Rs2.AddNew
For I=0 To 49
Rs2!フィールド(I) = Rs1!FieldsName(I)
Next
Rs2.Update
Rs1.MoveNext
Loop
じゃあTebleDifのTd.Fields().Nameを使って・・・・やっぱり失敗しました。
For I=0 To 49
Rs2!フィールド(I) = Rs1!Td.Fields(I).Name
Next
やりたいこと分かっていただけますでしょうか?要するにフィールド名を配列の様なもので格納しておいて、レコードの追加時に50回ループさせてRS2のフィールドにいれたいのです。何か良い方法は無いでしょうか。
No.3ベストアンサー
- 回答日時:
#2です。
一応自分なりにコードを作ってみました。
Dim I As Integer, Db As Database, Rs1 As Recordset, Rs2 As Recordset
Set Db = CurrentDb
Set Rs1 = Db.OpenRecordset("複写元")
Set Rs2 = Db.OpenRecordset("複写先")
Do Until Rs1.EOF
Rs2.AddNew
For I = 0 To 49
Rs2.Fields(I).Value = Rs1.Fields(I).Value
Next
Rs2.Update
Rs1.MoveNext
Loop
Rs2.Close
Rs1.Close
Set Rs2 = Nothing
Set Rs1 = Nothing
Set Db = Nothing
でいいと思います。ただし、前提条件として、テーブル「複写先」を作っていないとできませんが。
ご参考までに。
No.2
- 回答日時:
こんにちわ。
Dim I As Integr
Set Rs1 = Db.OpenRecordset("複写元")
Set Rs2 = Db.OpenRecordset("複写先")
For I=0 To 49
Rs2.Fields(I).Value= Rs1.Fields(I).Value
Next
でいいはずです。ちなみに、Dbは、
Set Db = CurrentDb
ってしてます(・・?
No.1
- 回答日時:
こんにちは。
maruru01です。Rs2.Fields(FieldsName(I)) = Rs1.Fields(FieldsName(I))
でどうですか。
maruru01さん、いつもお世話になります。
やってみましたが、エラーになりFieldsNameが青色に、プロシージャ名の行が黄色になり、SubまたはFunctionが無いとのたまいよります。多分私のコーディングのどこかがおかしいのでしょう。#2の答えでうまく動きましたので、とりあえずそちらでやります。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- 工学 エミッタ接地増幅回路 電流利得Ai=30倍、低生遮断周波数fL=300Hz、負荷抵抗RL=600Ωに 2 2023/04/19 09:25
- 国産車 ホンダフィット2代GE6に乗っていますが RSというのはスポーティーですか 1 2023/06/01 15:09
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
Accessのテーブルデータを一気にVBAで追加したい・・
その他(データベース)
-
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
-
4
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
5
Accessでテーブルの値をテキストボックスに代入するには?
Access(アクセス)
-
6
accessのVBAで変数名でフィールド指定は?
その他(データベース)
-
7
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
8
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
9
VBAで変数内に保持された二次配列データをテーブルに格納
Access(アクセス)
-
10
Access2003 クエリで、空の列は作れますか?
Access(アクセス)
-
11
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
-
12
access vbaにてテンポラリーテーブルが作りたいです。
Access(アクセス)
-
13
Access VBAでタブコントロールで選択するタブをしていするには。
Access(アクセス)
-
14
アクセス フィールド名に変数を付け加えて参照する
その他(データベース)
-
15
カレントレコードが無い事を判定させる方法
Visual Basic(VBA)
-
16
Access コンボボックスの値をクリアしたい。
PowerPoint(パワーポイント)
-
17
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
18
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
19
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
20
サブフォームの新規レコードに移動したい アクセス
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クリスタルレポートで困ってい...
-
Access VBA 添付型フィールド
-
criteria の読み方
-
Accessの画像挿入のVBAコード
-
2つ目のレコードの値を取得す...
-
Accessのフィールド名に半角括...
-
Access 2010で実行時エラー3061
-
ASP(VBScript)からACCESSデータ...
-
accessでフィールド追加のあと...
-
VB2005のBindingSourceのFilter...
-
FTPサーバーから受信したファイ...
-
アクセス 横スクロールの分割
-
ACCESSで日別集計をする場合
-
VBA 変数名に変数を使用したい。
-
【VB】コンボボックスにデータ...
-
WORD VBA プログラム修正をお願...
-
Excel VBAでグループ毎に集計す...
-
Dir関数で読み取り順を操作でき...
-
VBとアクセスでSQL文に変...
-
エクセルデータをVBで検索でき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのフィールド名に半角括...
-
DataTableに特定のフィールドが...
-
accessでフィールド追加のあと...
-
INT64対応のprintf系関数はあり...
-
2つ目のレコードの値を取得す...
-
Access 2010で実行時エラー3061
-
日付と文字列を条件としてDLook...
-
AccessのDAOでフィールド名を配...
-
SQLで複数のテーブルと結合した...
-
テーブルのデータ型の変更がで...
-
フィールド名をループの添え字...
-
クリスタルレポート(8.5)の書式...
-
AccessVBAで他テーブルのデータ...
-
アクセスでADO 並べ替えが適用...
-
Accessの画像挿入のVBAコード
-
NULLを含む文字列の結合で...
-
クリスタルレポートで文字列の...
-
ACCESSデータベースにV...
-
ノーツ:ユーザ名から別名を取...
-
Access クエリで変数を参照する...
おすすめ情報