質問: accessで縦と横を入れ替えたい りんご みかん ぶどう バナナ いちご 佐藤 2 1 1 1 1 鈴木 1 1 1 田中 1 2 1 上記のようなテーブルがあるのですが、これを下記のようにしたいです。 担当者 種別 田中 りんご 鈴木 りんご 佐藤 りんご 田中 みかん 佐藤 みかん 佐藤 ぶどう 鈴木 バナナ 佐藤 バナナ 田中 いちご 鈴木 いちご 佐藤 いちご 佐藤 りんご 田中 みかん 種別の隣に数量がきてもokです。 ご教授お願い致します。
回答: no5です。 「数量」が必要なければ、「テーブルb」の 「数量」フィールドを除き、コードの rs2!数量 = rs1.fields(k).value をコメントアウトするか、削除してください。 なお、「テーブルb」は、コードを実行すると、 id 担当者 種別 数量 1 田中 りんご 1 2 鈴木 りんご 1 3 佐藤 りんご 2 4 田中 みかん 2 5 佐藤 みかん 1 6 佐藤 ぶどう 1 7 鈴木 バナナ 1 8 佐藤 バナナ 1 9 田中 いちご 1 10 鈴木 いちご 1 11 佐藤 いちご 1 12 佐藤 りんご 2 13 田中 みかん 2 のようにデータが格納されます。 当然ながら、数量はたとえば、まちまち であっても同じことです。 なお、コードについて若干補足しますと、 「テーブルa」は、 名前 りんご みかん ぶどう バナナ いちご 佐藤 2 1 1 1 1 鈴木 1 1 1 田中 1 2 1 のようになっていますが、コードでは「テーブルa」のフィールドを for i = 1 to rs1.fields.count - 1 if not isnull(rs1.fields(i)) then if rs1.fields(i).value > imax then imax = rs1.fields(i).value end if end if next i のようにして追いかけていますが、フィールドのindexは0から はじまるので、先頭の「名前」フィールドは rs1.fields(0) です。したがってこの先頭の「名前」フィールドを除くため for i = 1 to rs1.fields.count - 1 のようにして1からデータを取得するようにしています。 その他、あれやこれやの説明が必要であれば、補足してください。 なお、このコードは、フィールドがいくら増えてもこのまま 使用できます。コードを変更する必要はありません。たとえば、 データのフィールドが、 りんご みかん ぶどう バナナ いちご メロン すいか トマト・・・・ のようになってもこのままです。 idフィールドは順序を確定するだけなので、順序の確保が必要なければ idフィールドを取り除けば単に「横を縦に」というだけのテーブルが できます。ただ、その場合も基本的なコードはほとんど同じで、 無駄なループをなくすだけです。このままでも使えますが。