2

最大 100 列を含むサブフォームを含むフォームがありますが、一度に表示する必要がある列は 5 つだけです。表示する必要がある列は、常に名と姓に加えて、メイン フォームでの選択に基づく他の 3 つの列です (列には HT001、HT002 などのラベルが付いています)。使用可能な 3 つのコンボ ボックスごとに 1 つの列。私はどこでも解決策を探し、見つけ続けています

Me![mycontrol].columnhidden = false

1 つまたは 2 つの列でどのように機能するかはわかりますが、各列がこれを必要とする場合、私のコードは非常に長くなる必要があります。膨大な量の列に加えて、12 の異なるサブフォームがあり、ケース選択手順を使用して選択されます。私はまだVBAを学んでいるので、簡単な解決策を探しています。

4

1 に答える 1

0

データシートを使用している場合は、選択内容に従ってレコード ソースを動的に設定できます。

 Me.RecordSource = "SELECT HT001, HT002 FROM MyTable"

SQL を作成するときに、コンボ ボックスを参照できます。

  Me.RecordSource = "SELECT HT001, " & Me.Combo1 & " FROM MyTable"

テーブルのフィールド リストでリスト ボックスを使用する場合の注意事項。

行ソースの種類をフィールド リストに設定し、行ソースをテーブルの名前に設定できます。

RowSource:  Table1 
RowSourceType:  Field List

複数のフィールドを選択するには、multiselect プロパティを設定することが重要です。

MultiSelect : Simple

選択したアイテムをコードで繰り返し処理し、SQL で使用するフィールド リストを作成できます。

For Each itm In Me.List0.ItemsSelected
  strSelect = strSelect & "," & Me.List0.Column(0, itm)
Next

strSelect = Mid(strSelect, 2)
sSQL = "SELECT " & strSelect & " FROM Table1"
于 2012-08-24T22:25:08.133 に答える