ACCESSでグラフを表示するための、分割フォームを作っています。
### 課題
分割フォームを利用して、右側のテーブル = 左側のフォーム上のグラフを連動させたいと思っています。
###質問内容
複数のフィルタリング条件が考えられるため、AND条件の検索が必要です。
使用するユーザーが動的にコンボボックスを追加できるように、
コンボボックスのコントロールソースから、フィルタ条件を関数で作成してフィルタをかけています。
データのフィルタリングはまでは、できてはいるのですが、
この先のやり方が見えずに、今の方法に疑問を感じています。
もっとほかに、かしこいやり方があったら教えて欲しいのでしょうか?
(以上で、だいたいの私のやりたいイメージをお伝えできていると思いますが・・・)
VBA
1 2フォームのフィルタ条件 3 4 [グラフデータ].Pad='167_169' AND [グラフデータ].試験名='サーマルサイクル(TC)' AND [グラフデータ].NO='101' 5
SQL
1 2各コンボボックスの値ソース 3 4SELECT [グラフデータ].Pad FROM グラフデータ; 5SELECT [グラフデータ].試験名 FROM グラフデータ GROUP BY [グラフデータ].試験名; 6SELECT [グラフデータ].NO FROM グラフデータ GROUP BY [グラフデータ].NO;
VB
1フォームモジュール 2 3Option Compare Database 4Option Explicit 5 6Private Sub CmbNo_AfterUpdate(): GoFilter: End Sub 7Private Sub CmbPad_AfterUpdate(): GoFilter: End Sub 8Private Sub CmbTest_AfterUpdate(): GoFilter: End Sub 9 10Sub GoFilter(): Set_Fileter Me: End Sub 11
VB
1標準モジュール 2 3Option Compare Database 4Option Explicit 5 6 7 8Public Sub Set_Fileter(Form As Variant) 9Dim key 10Dim filt: filt = "" 11Dim obj 12Dim i: i = 0 13 14For Each obj In Form.Controls 15 With obj 16 If .ControlType = acComboBox Then 17 Debug.Print .RowSource 18 19 key = Replace(Replace(正規表現(.RowSource, "SELECT .+ FROM").Item(0).Value, " FROM", ""), "SELECT ", "") 20 If Not IsNull(.Value) Then filt = filt & " " & key & "='" & .Value & "' AND " 21 i = i + 1 22 End If 23 End With 24Next 25 26Form.Filter = Left(filt, Len(filt) - 5) 27Debug.Print Form.Filter 28 29Form.FilterOn = True 30 31End Sub 32 33 34 35Function 正規表現(msg As String, strPattern As String) As Object 36 Dim RE As Object 37 Set RE = CreateObject("VBScript.RegExp") 38 With RE 39 .Pattern = strPattern ''検索パターンを設定 40 .IgnoreCase = True ''大文字と小文字を区別しない 41 .Global = True ''文字列全体を検索 42 Set 正規表現 = .Execute(msg) 43 End With 44End Function 45 46 47
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。