
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
-
4
accessのVBAで変数名でフィールド指定は?
その他(データベース)
-
5
アクセス フィールド名に変数を付け加えて参照する
その他(データベース)
-
6
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
7
どこにもフォーカスを当てたくない
Access(アクセス)
-
8
Accessでフォームから別フォームのテキストボックスの値を設定する
Visual Basic(VBA)
-
9
VBAで変数内に保持された二次配列データをテーブルに格納
Access(アクセス)
-
10
AccessのDAO.ExecuteとDoCmd.RunSqlの違いについて
その他(データベース)
-
11
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
12
Accessでテーブル名やクエリ名一覧の抜き出し
Access(アクセス)
-
13
<ACCESS>別テーブルのレコードのテキストデータが中に含まれるレコードを抽出する方法を教えてください
Access(アクセス)
-
14
Access:クエリーにて集計後に文字列結合したい。
その他(データベース)
-
15
DAOのrs.Filter =の使い方
PowerPoint(パワーポイント)
-
16
access テキストボックスの値取得
Access(アクセス)
-
17
「データベースまたはオブジェクトは読み取り専用なので、更新できません」エラーについて
その他(データベース)
-
18
アクセスのfilter、複数条件の記述方法を教えてください。
Access(アクセス)
-
19
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
20
Access コンボボックスの値をクリアしたい。
PowerPoint(パワーポイント)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2つ目のレコードの値を取得す...
-
c言語で自分のホームディレク...
-
Access :ALTER TABLE で作成...
-
INT64対応のprintf系関数はあり...
-
フィールド名の指定でエラー
-
SQLでの日付比較
-
オートナンバー型を抽出条件に...
-
VBAでMODE関数をつくる
-
構造体配列内の文字列検索のよ...
-
【ExcelVBA】値を変更しながら...
-
アクセス ステータスバーの文...
-
C#,繰り返し処理での最大値の取...
-
「テーブルに主キーがありませ...
-
他のMDBのテーブルに追加したい
-
VBからID3タグをいじる方法
-
レコードセットの中身を配列に...
-
COBOLのコーディングについて
-
エクセル・グラフの 横軸に値を...
-
DataGridの全行編集状態での行追加
-
VBA 変数名に変数を使用したい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
INT64対応のprintf系関数はあり...
-
accessでフィールド追加のあと...
-
Accessのフィールド名に半角括...
-
2つ目のレコードの値を取得す...
-
クリスタルレポートで文字列の...
-
クリスタルレポート(8.5)の書式...
-
DataTableに特定のフィールドが...
-
日付と文字列を条件としてDLook...
-
Access 2010で実行時エラー3061
-
AccessのDAOでフィールド名を配...
-
ADOでNullフィールドの抽出
-
NULLを含む文字列の結合で...
-
Access VBA 添付型フィールド
-
ACCESSで視覚的タイムテーブル...
-
クリスタルレポートの式フィー...
-
ACCESSデータベースにV...
-
テーブルのデータ型の変更がで...
-
criteria の読み方
-
Access クエリで変数を参照する...
-
ACCESSで日別集計をする場合
おすすめ情報