3

私は非常にクッキーカッターのデータベース(非常によく似た、非常に反復的なクエリ)を持っており、それらは1つのモジュラーレポートに含まれます(つまり、それらはすべて異なる基準で同じものを返します)。

これらのクエリは最大100個あるので、コンボボックスを使用してクエリを表示します。クエリは(経由でOpenArgs)レポートに送信されます。

プロジェクトにあるクエリのリスト(名前だけ)を生成する必要があります。コンボボックスのコントロールソースをこのクエリのリストにしたいのですが。

Value List文字列を連結したソースまたはソースタイプを実行する必要があるかどうかは関係ありません。重要Query/Tableなのは、バインドされた列に"qryName"

私がこれまでに持っているもの:

For Each qry In CurrentDb.QueryDefs
    list = list & ";" & """" & qry.Name & """" 
    'String in the form "qryName";"qryAnotherQuery";"qryNextQuery"
Next

しかし、どうやら値リストには最大2000文字の制限があるので、クエリがたくさんある場合、値リストを使用できませんか?注意:qry.Name私のクエリだけでなく、「〜sq_cTableName」のようなものも返します。これは問題です。クエリだけが欲しいのですが。

何か案は?レポートのOpenArgsにクエリ名を送信できる限り、コンボボックスなしでこの情報を表示する他の方法も利用できます。

4

2 に答える 2

7

の読み取り権限がMSysObjectsある場合は、このクエリをコンボボックスの行ソースとして使用できます。

SELECT m.Name
FROM MSysObjects AS m
WHERE m.Type=5 AND m.Name Not ALike "~%"  
ORDER BY m.Name;

基準、m.Name Not ALike "~%"は、結果セットから一時クエリと非表示クエリを除外します。

の読み取り権限がない場合はMSysObjects、コールバック関数を作成する必要があります。この関数をコンボボックスの行ソースとして使用します。そのルートに進む必要がある場合は、レポートオブジェクトを一覧表示し、代わりにリストクエリに変更するAllen Browneの例を参照してください:利用可能なレポートのリストボックス

于 2012-06-04T14:26:24.623 に答える
1

Me.lstBox.AddItem qryNameリストボックスを使用すると、クエリをループするときに使用できます。
次に、ItemsSelectedとItemDataの組み合わせを使用して、クエリの名前を見つけることができます

For Each varItm In lstBox.ItemsSelected
    Debug.Print lstBox.ItemData(varItm)
Next varItm

または、複数選択を許可しない場合は、

lstBox.ItemData(lstbox.ItemsSelected(0))

選択した単一のアイテムが表示されます

于 2012-06-04T13:56:53.523 に答える