• 締切済み

[Access]クエリでテキストを合わせて表示させる方法

宜しくお願いします。 例えば、CODEというフィールドに"1000"という 内容が2の行に入っていたとします。 この"1000"というCODEをグループ化させ、 他のフィールドにテキストが入っている場合は、 どちらも合わせて表示させる方法はないのでしょうか? うまく説明できないので、下に図をかきます。 (CODE)  (テキスト) 2000   あいうえお 2000   かきくけこ    ↓グループ化 2000   あいうえおかきくけこ という風にしたい。 宜しくお願いします。

みんなの回答

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.2

参考まで、希望するデータテーブルを作るVBAコードを作って見ましたので 宜しかったら次の操作でテストしてみてください。 モジュールの「新規作成」に下記コードを貼り付け実行します。 メニューから[ツール]-->[参照設定]で「Microsoft DAO X.X Object Libraly」 にチェックを入れ「Microsoft ActiveX Data Object X.X Library」より 優先順位を上にします。 基になるテーブル名を「テーブル1」とし、フィールドを同じCODEの場合の 整列順を決定するための[No](キー)のほか[CODE],[テキスト]があるとします。 このコードを実行すると新たに「テーブル1_B」というテーブルが出来て 希望通りのデータになっていると思います。 Sub test() Dim db As DAO.Database Dim tb1 As DAO.Recordset Dim tb2 As DAO.Recordset Dim mySQL As String Dim stradd As String Dim code As Integer Set db = CurrentDb mySQL = "SELECT [No],CODE, テキスト" & _     " FROM テーブル1 ORDER BY CODE,[No]" Set tb1 = db.OpenRecordset(mySQL) On Error Resume Next db.Execute "CREATE TABLE テーブル1_B (" & _   "CODE LONG,テキスト TEXT(100)" & ")" mySQL = "DELETE * FROM テーブル1_B" db.Execute mySQL Set tb2 = db.OpenRecordset("テーブル1_B", dbOpenTable) tb1.MoveFirst Do Until tb1.EOF   If code = tb1![code] Then     stradd = stradd & tb1![テキスト]   Else     tb2![テキスト] = stradd     tb2.Update     tb2.AddNew     stradd = ""     code = tb1![code]     tb2![code] = code     stradd = tb1![テキスト]   End If tb1.MoveNext Loop tb2![テキスト] = stradd tb2.Update tb1.Close tb2.Close Set db = Nothing Set tb1 = Nothing Set tb2 = Nothing End Sub

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.1

クエリを3つ使えば2行までなら出来ます。 クエリ1でグループ化しテキストのフィールドの集計で先頭を選択する。このフィールドをテキスト1として。同じ内容のクエリ2を作りテキストのフィールドの集計で最後を選択する。このフィールドをテキスト2として。 クエリ3を作りクエリ1とクエリ2をテーブル表示させCODE同士をリレーションします。 クエリ3のフィールドはCODEとテキスト1・テキスト2・テキスト3としてテキスト3のフィールドに テキスト3:=[テキスト1]&[テキスト2] とすれば出来ます。 テキスト1・2の表示が要らなければ非表示にすればCODEとテキスト3の状態になります。 今こんなものしか浮かびませんが参考になれば。

関連するQ&A