- ベストアンサー
AccessのDataTableの行を列にしたい
よろしくお願いします。 Vb.NetとAccess2000を利用しています。 プログラム上でDataTableを生成しているのですが、 そのテーブルの行を列に表示したいと思っています。 氏名コード 項目1 項目2 項目3 1/1 1/2 1/3 00001 1 2 1 01 02 04 00002 2 3 4 02 03 04 ↑上記のようなテーブルです。1/1~1/3は日付なので、 列の数がかわります。これを 氏名コード 列1 列2 00001 項目1 1 00001 項目2 2 00001 項目3 1 00001 1/1 01 00001 1/2 02 00001 1/3 04 00002 項目1 2 00002 項目2 3 00002 項目3 4 00002 1/1 02 00002 1/2 03 00002 1/3 04 ↑このようなテーブルにしたいのですが、 どのような方法をとれば良いのでしょうか? 勉強不足で申し訳ございませんがご存知の方おられましたら ご教示よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 このコードはVBAです。Access2000でテーブル作ってモジュールに貼り付けてテストしてみました。 あいにく.Netの環境はないので確認出来ませんが、基本的には同じだと思います。
その他の回答 (2)
- SRL311
- ベストアンサー率100% (2/2)
元データテーブル(氏名コード 項目1 項目2 項目3 1/1 1/2 1/3)を「テーブル1」とし、 生成するテーブル(氏名コード 列1 列2)を「テーブル2」と仮定し、以下のロジックで可能だと思います。 テーブル2の全フィールドのデータ型はテキスト型で作成してあります。 お試し下さい。 Function MakeTable() Dim SQL As String Dim RS1 As Recordset Dim i As Long SQL = "SELECT テーブル1.* FROM テーブル1;" Set RS1 = CurrentDb.OpenRecordset(SQL, dbOpenSnapshot) With RS1 Do Until .EOF For i = 1 To RS1.Fields.Count - 1 SQL = "insert into テーブル2 (" SQL = SQL & " 氏名コード" SQL = SQL & ", 列1" SQL = SQL & ", 列2" SQL = SQL & " ) Values (" SQL = SQL & " '" & RS1.Fields(0) & "'" SQL = SQL & ", '" & RS1.Fields(i).Name & "'" SQL = SQL & ", '" & RS1.Fields(i) & "'" SQL = SQL & " )" CurrentDb.Execute SQL Next i .MoveNext Loop .Close End With End Function
お礼
こんにちは、回答ありがとうございます。 教えていただいたコードで試そうと思ったのですが、 このコードはVBAになるのでしょうか? 現在、プログラミング初挑戦でVB2005を勉強中のため わからないところがあったので聞いてみました。 .Netでもコードの読み替え等で使えると思って良いのでしょうか?
- CHRONOS_0
- ベストアンサー率54% (457/838)
Access(データベース)のフィールドには同種のものしか入れられません そうしないとデータベースとして意味のないものになってしまうからです またフィールドにはデータ型というものがあります 日付のフィールドには日付だけ 数値のフィールドには数値しか入れられません 初歩の入門書をお読みになったほうがいいみたいですね このままじゃどうしようもないですよ
お礼
回答ありがとうございました。 テーブルの設計時には、データ型を決めて、フィールドサイズを決めて と、手順を追って作成し、データを蓄積していきますが、 印刷の関係で、どうしても行を列にしなくては対応できないので 投稿させていただきました。Vb.Netのプログラム上で一時的にDataTableを生成しようと思っているので何とか実現できるのでは? と思った次第です。 初歩の入門書を読んでみます。この度はありがとうございました。
お礼
再びの回答ありがとうございました。 教えていただいたコードで データテーブルの作成が実現できました。 とても勉強になりました。 この度は本当にありがとうございました。