8

私はこのようなテーブルを持っています:

title               part                   desc
Blah This           1                      This begins the
Blah This           2                      example table.
Some Record         1                      Hello
Another             1                      This text extends a bit
Another             2                      further so it is in
Another             3                      another record in the
Another             4                      table

Accessでは、GROUPBYへのクエリ/SQLを作成しtitle、フィールドを連結しdescて次のように表示しようとしています。

title              desc
Blah This          This begins the example table.
Some Record        Hello
Another            This text extends a bit further so it is in another record in the table

SQLだけ(VBA /スクリプトなし)でこれをどのように行うことができますか?FOR XML PATHAccessでは機能しないようです。SQLServerでのみ機能します。ここでVBAを試しましたこのクエリとVBAの効率を向上させる方法は?、しかしそれは単に遅すぎる。

または、クエリが既に開いている間は継続的に実行されない使用可能な関数はありますか?

4

2 に答える 2

5

Access:/にはGroup_Concatはありません。おそらく、VBAを除外するソリューションはありません。
考えられる方法の1つは次のとおりです。クエリによる行の連結

于 2013-03-25T21:26:19.140 に答える
1

これは、VBAを使用してこれに対処する方法の大まかな概要です。詳細レコードに対して単一のDBクエリを実行することにより、パフォーマンスが向上します。

Set rsParent = CodeDb.OpenRecordset("SELECT * FROM MainTable ORDER BY HeaderID")
Set rsDetail = CodeDb.OpenRecordset("SELECT * FROM DetailTable ORDER BY HeaderID")
Do Until rsParent.EOF
  ...
  myString = rsParent!MainHeaderName & AggregateDetails(rsDetail, rsParent!HeaderID)
  rsParent.MoveNext
Loop
...

Function AggregateDetails(rsDetail as Recordset, HeaderID as String) as String
   Dim DetailString as String

   Do While rsDetail!HeaderID = HeaderID
      DetailString = DetailString & ", " & rsDetail!DetailName
      rsDetail.MoveNext
      If rsDetail.EOF Then Exit Do
   Loop
   AggregateDetails = DetailString
End Function
于 2020-04-15T18:55:03.310 に答える