- 締切済み
[Access]クエリでテキストを合わせて表示させる方法
宜しくお願いします。 例えば、CODEというフィールドに"1000"という 内容が2の行に入っていたとします。 この"1000"というCODEをグループ化させ、 他のフィールドにテキストが入っている場合は、 どちらも合わせて表示させる方法はないのでしょうか? うまく説明できないので、下に図をかきます。 (CODE) (テキスト) 2000 あいうえお 2000 かきくけこ ↓グループ化 2000 あいうえおかきくけこ という風にしたい。 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ja7awu
- ベストアンサー率62% (292/464)
参考まで、希望するデータテーブルを作る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)
クエリを3つ使えば2行までなら出来ます。 クエリ1でグループ化しテキストのフィールドの集計で先頭を選択する。このフィールドをテキスト1として。同じ内容のクエリ2を作りテキストのフィールドの集計で最後を選択する。このフィールドをテキスト2として。 クエリ3を作りクエリ1とクエリ2をテーブル表示させCODE同士をリレーションします。 クエリ3のフィールドはCODEとテキスト1・テキスト2・テキスト3としてテキスト3のフィールドに テキスト3:=[テキスト1]&[テキスト2] とすれば出来ます。 テキスト1・2の表示が要らなければ非表示にすればCODEとテキスト3の状態になります。 今こんなものしか浮かびませんが参考になれば。