• 締切済み

ACCESS2003

ACCESS2003 OS:winXPです。 アクセスのテーブルのデータが以下のようになっています。 ID  |名称|番号1|番号2|番号3|・・・・・|番号30| 100|太郎|0001|1231|4323|・・・・ 101|次郎|2333|3213|4225|・・・・ ・・・ 番号1~番号30にはIDに紐づくランダムな値が入っています。 IDによって紐づく番号が存在するだけ、30まで列に入っています。 番号30まであるものもあれば、番号1しかないものもあります。 これを以下のように変えたいと思っています。 ID  |名称|番号 | 100|太郎|0001| 100|太郎|1231| 100|太郎|4323|  ・  ・ 101|次郎|2333| 101|次郎|3213| なにかクエリ、VBAなどでいい方法はないでしょうか?

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.5

以下のようなSQLを持つクエリを作成する。 SELECT ID,名前,番号1 FROM テーブル UNION ALL SELECT ID,名前,番号2 FROM テーブル UNION ALL SELECT ID,名前,番号3 FROM テーブル 中略 UNION ALL SELECT ID,名前,番号30 FROM テーブル

全文を見る
すると、全ての回答が全文表示されます。
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

For n = 1 To 7 Step 1 ではなく、 For n = 1 To 30 Step 1 にしてください。番号が30まであるという ことなので。

全文を見る
すると、全ての回答が全文表示されます。
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

失礼しました。駄作はわすれてください。 以下で十分です。設定は同じです。 Function funcDATA1() Dim db As Database Dim rs1 As Recordset Dim rs2 As Recordset Dim x As String Dim n As Integer Set db = CurrentDb Set rs1 = db.OpenRecordset("tblT") Set rs2 = db.OpenRecordset("tblDATA") With rs1 rs1.MoveFirst Do Until rs1.EOF For n = 1 To 7 Step 1 x = "番号" & n rs2.AddNew rs2!ID = rs1!ID rs2!名称 = rs1!名称 rs2!番号 = rs1.Fields(x) rs2.Update Next n rs1.MoveNext Loop End With End Function

全文を見る
すると、全ての回答が全文表示されます。
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

何も考えずにただデータの移し変えという ことであれば、以下の方法もあります。 当初は配列変数でと思ったのですが めんどうくさいのでコピペのエイヤで どうぞ。 一応tblTがデータが入っているほうで、 tblDATAが移動先です。処理が終わったら テーブルを昇順で並び替えれば終了です。 なお、移動先のIDには主キーを設定しないように。 Function funcDATA() Dim db As Database Dim rs1 As Recordset Dim rs2 As Recordset ' Dim x(1 To 30) As String Set db = CurrentDb Set rs1 = db.OpenRecordset("tblT") Set rs2 = db.OpenRecordset("tblDATA") With rs1 rs1.MoveFirst Do Until rs1.EOF rs2.AddNew rs2!ID = rs1!ID rs2!名称 = rs1!名称 rs2!番号 = rs1!番号1 rs2.Update rs2.AddNew rs2!ID = rs1!ID rs2!名称 = rs1!名称 rs2!番号 = rs1!番号2 rs2.Update rs2.AddNew rs2!ID = rs1!ID rs2!名称 = rs1!名称 rs2!番号 = rs1!番号3 rs2.Update rs2.AddNew rs2!ID = rs1!ID rs2!名称 = rs1!名称 rs2!番号 = rs1!番号4 rs2.Update rs2.AddNew rs2!ID = rs1!ID rs2!名称 = rs1!名称 rs2!番号 = rs1!番号5 rs2.Update rs2.AddNew rs2!ID = rs1!ID rs2!名称 = rs1!名称 rs2!番号 = rs1!番号6 rs2.Update rs2.AddNew rs2!ID = rs1!ID rs2!名称 = rs1!名称 rs2!番号 = rs1!番号7 rs2.Update rs1.MoveNext Loop End With End Function 途中までしか書いていません。 rs2.AddNew rs2!ID = rs1!ID rs2!名称 = rs1!名称 rs2!番号 = rs1!番号7 rs2.Update 以下におなじものをあと17個コピペして rs1!番号7のところを順次番号を変更して ください。というより1から7までコピペ して番号を変えていったら2、3回のコピペ ですみます。あとは番号を変更。 では。

全文を見る
すると、全ての回答が全文表示されます。
  • nza49739
  • ベストアンサー率46% (29/62)
回答No.1

以下の手順で作成します。 1 番号1、番号2・・・番号30のみそれぞれのみ選択するクエリーを用意します。番号がないものは、もちろん番号が設定されているものに限定するようにします。 2 1で作成したクエリーをまとめます。まとめるにはクエリーを新規作成し、右クリックのメニューの中の"SQL"の中の"ユニオン"を選択することで作成できるようになります。そして、"Select * from クエリー名1 Union Select * from クエリー名2 "でまとめます。 しかし、データが多いとこの方法では遅くなりますので、作業用のテーブルに1で作成したクエリーデータを挿入するほうが賢明です。

参考URL:
http://makotowatana.ld.infoseek.co.jp/access/achowCombineDataInFieldsTwoMoreTablesUnionQueryS.htm
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 2つのテーブルをひとつのテーブルとして表示

    お世話になります ■概要 Accessで2つのテーブルを1つにして表示させるにはどうしたらいいでしょう? ■詳細 サンプル1とサンプル2のテーブルが2つあるとします (サンプル内の列名はすべて同じです) それをひとつのクエリで表示させたいのですが(よに表示ではなく同じ列に表示させたいです サンプル1 ID|名前|年|  1|太郎|4 | 2|次郎|6 | サンプル2 ID|名前|年|  1|五郎|2 | 2|三郎|1 | 結果クエリ1 名前|年| 太郎|4 | 次郎|6 | 五郎|2 | 三郎|1 | わかる方ご教授願います

  • Access #エラーについて

    Access初心者です。 よろしくお願いいたします。 [前提]  テーブルA のIDに紐づけてクエリBの数値をクエリCで反映させたい。  〈詳細データ〉   ・テーブルA    [ID] [名称]       1   あ     2   い     3   う     4   え     5   お   ・クエリB    [ID] [数値]     2   10     3   20     5   40   ・クエリC    [ID]  [名称] [数値]     1    あ  #エラー     2    い   10     3    う    20     4    え  #エラー     5    お   40   ・”テーブルAの[ID]”の全レコードと”クエリBの[ID]”の同じ結合フィールドだけを含めてリレーションを行っている。    ・クエリCの算式: IIf(IsError([クエリB].[数値]),0,[クエリB].[数値])  [質問]    ・クエリCの『#エラー』部分を0にしたいのですが、何か良い方法はございませんでしょうか。   ・そもそも上記のロジックは無理がありますでしょうか。    アクセスはあまりいじったことがございません。ご回答いただけますと幸いです。   よろしくお願いいたします。

  • Accessのテーブルの値を更新したい

    お世話になります。 Access2000のVBAで、教えて頂ければと思います。 下記の「テーブルA」がある状態で、 「ID=1」の「フィールド:名前」の値を「名称なし」に更新したいのですが、 どのようにVBAで記載したらよいでしょうか? ------テーブルA------- ID  名前 1 やまだ ----------------------- お手数ですが何卒宜しくお願いします。

  • access2007

    アクセス初心者です。 アクセスのテーブルからクエリを作っていますがわからないので教えてください。 下記の様なテーブルがあり ID番号    氏名    名称     枝番  10000     大山   作業場     2 10000     大山   事務所     1 10000     大山   作業場     4 10000     大山   自宅       3 10005     片山   作業場     2 10005     片山   事務所     1 10005     片山   作業場     4 10005     片山   自宅       3 10005     片山   作業場     5 クエリで以下の様に枝番の最大値を見て枝番が最大値の「名称」だけを抽出したい ID番号    氏名    名称     枝番  10000     大山   作業場     4 10005     片山   作業場     5 枝番は最新の情報が大きな数字です。 実行後には枝番は表示させず、ID番号と氏名、名称だけ表示させます。 抽出条件の部分にselect MAX(枝番) from テーブル名; と記載しましたが、 「サブクエリの指定が正しくありません。サブクエリはかっこで囲んで指定してください」 というエラーメッセージが出ます。 どこをどう触ればいいかわからないのでご教授ください。

  • Accessで相続関係図を作りたい

    Accessで相続関係図を作りたいと思っております。 例えば、以下のようにテーブルにデータが入力されたら、 被相続人   相続人   続柄 ○○太郎   ○○花子  妻 ○○太郎   ○○一郎  子 ○○太郎   ○○次郎  子 次のようにレポートが表示されるようにしたいと思います。    ○○花子 ━┳━ ○○太郎          ┃      ┏━━━┻━━━┓    ○○一郎     ○○次郎 これが子供が3人だった場合には、以下のレポートに自動的に切り替わるようにしたいと思います。    ○○花子 ━┳━ ○○太郎          ┃      ┏━━━╋━━━┓    ○○一郎 △△良子 ○○次郎 レポートについては、子が2人用、3人用・・と、様々なパターンのテンプレートを用意しておき、そこに情報が格納されるようにしておこうと思っておりますが、○○太郎の相続情報をレポートで表示したいと操作すると、自動的に適切な形式のレポートが表示されるようにしたいと思っております。 レポートのソースをパラメータクエリにして、何とかならないかと悪戦苦闘しておりますが、なかなかうまくいきません。 上記について、こうすればうまくいくのでは?など、ご助言いただけないでしょうか。 よろしくお願いします。

  • 2つのフィールドの文字列の組み合わせ

    Access2013 vba あるテーブルの構成が以下のようになっていますが □テーブル構成 ・ID(Long) ・建物NO(外部キー/Long) ・部屋番号(文字列) この時、建物NOと部屋番号の組み合わせで、一意の値にしたい場合、どのようにしたら良いでしょうか。 よろしくお願いします。

  • アクセスのテーブル更新について

    アクセスのテーブル更新について ------------------ テーブル1 性  名   フラグ 地域 佐藤 太郎 1 鈴木 次郎 9 高橋 三郎 3 ------------------ テーブル2 地域 フラグ 関東 1 関西 2 海外 3 ------------------ テーブル3 性  名   フラグ 地域 田中 四郎 2    関西 ------------------ アクセス初心者です。エクセルはファイル操作のVBAをモタモタしながら組める程度です。 上記1から3のテーブル(以下T)がある場合の、以下2つの処理を行う方法が分からず困っています。 処理1 T1の地域とT2の地域の内容が異なった場合、T1の地域にT2の地域の内容を書き込む 処理2(処理1実行後) T1のフラグが9以外のレコードをT3に追加し、追加したレコードをT1から削除する 上記処理は追加クエリや更新クエリで実行出来る内容でしょうか? VBAの記述が必要な内容でしょうか?そこからして分かっていません。 具体的な処理方法という形で教えて頂けたらと思います。 どうか宜しくお願いします。

  • VBA ACCESS 更新 追加 find ADO テーブル

    いつもお世話になっております。 ACCESSのフォームに作成したコマンドボタンを実行すると 元テーブルから対象テーブルへIDを元に値を更新するようなプログラムを 作りたいと思います。 また、注意点として元テーブルでは「ID」、対象テーブルでは「管理番号」の異なる名称によりデータの管理を行っております。 アドバイスお願いします。 VBAの中でADO関数やFind関数を使ったら出来ると考えております。

  • AccessのVBAでパラメータクエリー設定

    お世話になります。 AccessのVBAで質問させてください。 「クエリーA」に設定している「ID1」のパラメータを 「テーブルA」の「IDX」の値を設定したいと思っております。 「ID1」にパラメータ2を設定する方法は分かったのですが、 下記の2つの方法がわかりませんでした。 ・「ID1」のパラメータを「テーブルA」の「IDX」の値を設定する方法 ・「テーブルA」は複数レコードあるので、その数だけfor文的なループで回したい お手数で申し訳ございませんが、 「クエリーA」に設定している「ID1」のパラメータを 「テーブルA」の「IDX」の値を設定する方法VBAコードを 教えて頂ければと思います。 本当に勝手いいますが、コードを記載して頂ければと思います。 宜しくお願い致します。 -----「ID1」にパラメータ2を設定する方法----- Set qdf = dbs.QueryDefs("クエリーA") With qdf .Parameters("ID") = 2 Set rst = .OpenRecordset End With

  • ACCESSのテーブルでこういう表示は可能でしょうか?

    お願いします 下記のように名前・電話番号・年齢フィールドあるテーブルがあり同一の番号が存在した場合には年齢が一番上の人が代表者となりそれ以外の人は同一のレコードの家族フィールドに表示させたいと思います。 そのようなクエリを組むことは可能でしょうか? 名前 電話番号             年齢 ==================================================== 山田太郎 00-0000-0000  50 山田花子 00-0000-0000  45 山田一郎 00-0000-0000  20 田中次郎 11-1111-1111  55 ↓ 代表者 電話番号            家族1  家族2 ==================================================== 山田太郎 00-0000-0000  山田花子 山田一郎 田中次郎 11-1111-1111 以上よろしく願いします。