• ベストアンサー

アクセスで複数のレコード情報を1レコードにまとめる方法 

アクセスにおいて 例えば以下のような1~6までのレコードを 1.Aさん,犬 2.Aさん,猫 3.Bさん,犬 4.Bさん,鳥 5.Bさん,豚 6.cさん,牛 ↓ 1.A,犬,猫 2.B,犬,鳥,豚 3.C,牛 このように、この場合だったら、~さんを軸に、 ひとつのレコードとしてまとめることは可能でしょうか。 仕事で使いたいのですが、やり方がわからず非常に困っています。 お手数ですがご教示いただけると幸いです。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • noah7150
  • ベストアンサー率46% (116/251)
回答No.1

通常のクエリーだけでは無理です このテーブルをTBL(名前,ペット)とすると モジュールに Public Function PetNameAdd(pName) As String Dim iRS As Recordset Dim strSQL As String Dim strRet As String strRet = "" strSQL = "SELECT ペット FROM TBL WHERE 名前 = '" & pName & "'" Set iRS = CurrentDb.OpenRecordset(strSQL) While iRS.EOF = False If strRet = "" Then strRet = iRS(0) Else strRet = strRet & "," & iRS(0) End If iRS.MoveNext Wend iRS.Close Set iRS = Nothing PetNameAdd = strRet End Function を登録しておいてクエリーで SELECT 名前, PetNameAdd(名前) AS 全ペット FROM (SELECT DISTINCT 名前 FROM TBL) と書けば近いものは出来ます しかしながらクエリーは頻繁に関数を呼び出すのであまりお勧めは出来ません 一度、全ペット用のテーブルをこの関数を利用して作り、後の操作をする方がマシンに対する負荷は少ないです

einoura
質問者

お礼

noah7150様 さっそくのご回答ありがとうございます。 通常のクエリでは無理なんですね。。 アクセス初心者で通常のクエリでやろうとしていました。 いただいたアドバイスを持って、職場の詳しそうな人に聞いてみます。 本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • Pakkun10
  • ベストアンサー率44% (22/50)
回答No.2

一つのレコードとしてまとめるにあたって、たとえばVBAを使用しレコードセットを開いて 無理矢理1レコードに収めるということでしょうか? それとも、クエリやSQLを使って表示したいということでしょうか? 前者であれば可能ですが、前者を希望ならすでにやってるような気がします。 後者を希望であれば難しい(というか無理)だと思います。 上の例で言うと、一つのフィールドに「犬,鳥,豚」と格納するのか、 それぞれを別のフィールドに分けるのかという問題も出てきます。 そのあたりをもう少しまとめてみるとわかりやすいです。 なお、もしも「データが『犬,鳥,豚,猫,牛』の5種類しかない」というようにある程度枠が決まっているのであれば無理矢理出来ないこともなさそうですが・・・。

einoura
質問者

お礼

Pakkun10様 さっそくご回答いただきありがとうございます。 クエリを使って、表示しようとしていました。。 無理そうですね。。。 例であげたものに補足すると、 「犬」「鳥」「豚」は別々のフィールドにします。 データの種類は、30以上あります。 しかしながら、考え方を変えたほうがよさそうですね。 ほかの方法で必要なデータ処理ができないかも考えてみます。 まずは、御礼申し上げます。ありがとございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 幼稚園の子供に質問されたらどう答える?(食品)

    牛や豚や鳥は食べて良いのに犬や猫はなぜ食べてはいけないの?この質問にどのように答えたらよいのでしょうか?

  • エクセルでの複数レコードの作成方法

    レコードにある特定の値(A~C)を追加し10個のパターンを作成したいと考えております。 対象のレコードが数千レコードあるため、手作業が困難です。 何か効率の良い作成方法はありませんでしょうか。 ■元のレコード -------------- 行| A -------------- 1|レコードA 2|レコードB 3|レコードC ■作成後(この様にしたい) ------------------ 行| A     B ------------------ 1|レコードA A 2|レコードA B 3|レコードA C 4|レコードB A 5|レコードB B 6|レコードB C 7|レコードC A 8|レコードC B 9|レコードC C よろしくお願いいたします。

  • ACCESS フィールドをまとめたい

    ACCESS2007で同じレコードにある複数のフィールドを   レコード1:番号A  名前A  番号B  名前C  番号C  名前C   レコード2:番号A  名前A  番号B  名前C  番号C  名前C こんな感じに、新規のテーブルやクエリーで「番号」と「名前」にまとめたいのですが      レコード1:番号A 名前A   レコード2:番号B 名前B   レコード3:番号C 名前C   レコード4:番号A 名前A   レコード5:番号B 名前B   レコード6:番号C 名前C    お手数ですがご教示ください。  よろしくお願いいたします。

  • 同一レコードを複数取り出したい

    以下のようなテーブルがあったとます。 <AA table> A B ------ 01 2 02 3 03 4 A = '01'のレコードを取り出す場合には、 select * from AA where A = '01'; A B ------ 01 2 で取れますが、このときBの値を判断して、以下のようにBの数だけ同一レコードを取り出したいと思います (where A = '01'ならば) A B ------ 01 2 01 2 (where A = '03'ならば) A B ------ 03 3 03 3 03 3 03 3 このように、同一レコードを条件によって複数取り出す処理をSQLで記述することはできるのでしょうか?

  • 動物の平均体温

    動物の平均体温を教えてください。 犬、猫、牛、馬、豚、鳥・・・など有ると嬉しいです。

  • 複数条件のプルダウンで

    エクセルのプルダウンで、複数条件の場合の設定の仕方です。  A1  B1  肉   牛 A1に「肉」と入力すると、 B1のプルダウンでは、牛や豚などの「肉」の種類だけを選べるようになります。 もし、A1に「野菜」と入力すると、 B1のプルダウンでは、キャベツや人参などの「野菜」の種類だけを選べるようになります。 こうした複数条件によるプルダウンの設定をする場合、 通常、次の様に設定して名前を付けるかと思います。 肉  野菜 牛  キャベツ 豚  人参 鳥  玉ねぎ この時に、できれば次のような形で設定することはできないでしょうか。 肉 牛 肉 豚 肉 鳥  野菜 キャベツ 野菜 人参 野菜 玉ねぎ このような形でデータを持っていた方が、追加や削除をしたり、 その他の情報を右側のセルに順次追加していくことが簡単にできます。 こうすれば、肉・野菜や、牛・豚・鳥は、商品マスターのような役割で、 いろいろ活用しやすくなります。 宜しくお願い致します。

  • Accessで最終レコードの削除について

    Accessで新規レコードを作成しないで最終レコードを削除したいのですが、方法をご存知でしたら教えて頂けないでしょうか。 現状は次の通りです。 レコード データ 1000   A 1001   B 1002   C ←最終レコード ※マクロで1002のレコードを削除すると レコード データ 1000   A 1001   B 1002   空白のレコード ←最終レコード となってしまいますが、これを レコード データ 1000   A 1001   B ←最終レコード としたいのです。 ちなみに最終ではない1001のレコードを削除すると レコード データ 1000   A 1001   C ←最終レコード となり、空白の新規レコードは作成されません。

  • Accessで担当者毎に触れるレコードを変えたい

    例えば ・A,B,Cさんがいたとして、Accessファイルを開いた時にパスワードを聞かれ、  Aさん用のパスワードを入力するとAさんのデータしか見えない&Aさんしか書き込めない。 ・他の人間も同様に入力するが、自分以外のレコードは見れない。 ・だが管理者は、全てのレコードを見る&記入することができる。 ということは出来ますでしょうか。 よろしくお願いします。

  • Access 複数テーブルのレコード自動更新

    Access初心者です。会社で業務の進捗状況を、Access2002を使って管理しています。 フィールド数が増えたので、以下のようにテーブルを分けることになりました。 Aテーブル(メイン)   管理No.(主キー、オートナンバーではない)    カテゴリ    作業内容    : Bテーブル   管理No.(主キー、オートナンバーではない)    チェック項目B-1   チェック項目B-2    : Cテーブル   管理No.(主キー、オートナンバーではない)    チェック項目C-1   チェック項目C-2    : という形式で、AとB・Cはクエリのリレーションシップで、「管理No.」を1対1で関連づけています。 AテーブルのもとのデータはExcelからインポートしますが、 Aテーブルのレコード数は増えますが、クエリには反映されません。 Aのレコードが増えたら、BやCも同時に増やすことはできますか?

  • データを拾い出す関数

    エクセル2000で以下のシートがあります。 Aさん|犬|猫|魚|鳥| Bさん| Cさん|猫|鳥| これを別のシートに下のように組み替えたいです。 犬|Aさん| 猫|Aさん|Cさん| 魚|Aさん| 鳥|Aさん|Cさん| 飼い主は100人、ペットは全部で500種類。一番の飼い主は30種です。ペットを縦軸にした表は作りました。 よろしくお願いします。

専門家に質問してみよう