2011-01-24 6 views
1

私は、次のMS Accessテーブルとサンプルデータ、 MS AccessのSQLクエリを連結しまたは関連分野を統合する

UpdateID, CustomerNo, StatusType, UpdateDate 
001, 0099, Open, 2011-01-01 
002, 0099, Pend, 2011-01-02 
003, 0100, Open, 2011-01-03 
004, 0099, Appr, 2011-01-04 
005, 0100, Pend, 2011-01-05 
006, 0099, Clsd, 2011-01-07

Status tbl 
UpdateID PK 
CustomerNo text 
StatusType text 
UpdateDate date
を持っていた場合、私は、次の連結につながるクエリを書くことができますどのように/連結された出力?

CustomerNo, UpdateDate 
0099, 2011-01-01;2011-01-02;2011-01-04;2011-01-07 
0100, 2011-01-03;2011-01-05
+0

私はUpdateDateソリューションを複雑にするDate型のものということになりました実感が、テキストとして、それを処理することの答えを単純化するならば、それは十分であろう。 – duckah

答えて

2

返された行を繰り返し処理するためにコードを使用せずにAccessでこれを行う便利な方法はありません。ここで

は、あなたがこれを行うのに役立ちますいくつかのコードです:

Public Function ListOf(sSQL As String, Optional sSeparator As String = ", ") As String 

    Dim sResults As String 
    Dim rs As DAO.Recordset 

    Set rs = CurrentDb.OpenRecordset(sSQL) 

    While Not rs.EOF 

    If sResults = "" Then 
     sResults = Nz(rs.Fields(0).Value, "???") 
    Else 
     sResults = sResults + sSeparator & Nz(rs.Fields(0).Value, "???") 
    End If 

    rs.MoveNext 

    Wend 

    ListOf = sResults 

End Function 

そして、ここでは、Accessクエリでそれを使用する方法である。

SELECT [CustomerNo], 
(ListOf('SELECT [UpdateDate] FROM StatusTbl WHERE CustomerNo = ' + CStr([CustomerNo]))) AS UpdateDates 
FROM StatusTbl 

(注)こののみ動作することをあなたが」 Accessでクエリを再実行すると、(たとえば)ADO接続から実行されたクエリは、ListOf関数にアクセスすることができません。

+0

この関数をモジュールに追加して保存し、次に示すようにクエリを更新しました。クエリを実行しようとすると、「ユーザー定義型が定義されていません」というコンパイルエラーが返され、「Dim rs As DAO.Recordset」という行が示されます。ここで問題は「DAO」ですか? – duckah

+0

@duckah - 下のDAOリファレンス:ツール| Visual Basicエディターでの参照 – JeffO

+0

@duckah - @Jeff Oは正しいです。 DAOライブラリを使用することをAccessプロジェクトに知らせる必要があります。 –

関連する問題