1

小さな問題があります:

私のフォームには、ユーザーの必要に応じて 2 つの基になるクエリ (フィールドとメタデータがまったく同じ) が変更される可能性があります。問題は、レコード ソースへのアクセスを変更した後、以前に適用されたフィルターが保持されないことです。

レコードソースの OnLoad を変更すると、フォームを開いたマクロに応じてフィルターが必要になります。フィルターが機能しません。

誰かがこれでヒントをくれますか?

4

2 に答える 2

0

Ok。それを機能させるのはそれほど難しいことではありません。レコードソース onLoad を変更する必要があり、フォームは「where」条件を含むマクロによって開かれます。 1. フィルターがオンかどうかの条件を onLoad メソッドに入れます。2. True の場合、フィルタを文字列として保存し、True を bool として保存します 3. recordSource を変更します 4. bool が true かどうかを制御します 5. True の場合、フィルタを元に戻します 6. フィルタをオンにします

Private Sub ChengeRecS()
Dim fltr As String
Dim fB As Boolean
If Me.FilterOn = True Then
    fB = True
    fltr = Me.Filter
End If
Me.RecordSource = "newRecordSource"
If fB = True Then
    Me.Filter = fltr
    Me.FilterOn = True
End If
End Sub
于 2012-11-21T20:53:29.470 に答える
0

マクロによるフィルターについて言及していますが、マクロが何であるかについては言及していません。あなたが持っているとしましょう:

DoCmd.OpenForm "form1", , , "atext='def'"

これにより、フォームの Filter プロパティが次のように設定されます。

atext='def'

レコードソースを変更する前にフィルター プロパティを保存して、再適用することができます。

sFilter = Me.Filter
Me.RecordSource = "select * from table1"
Me.Filter = sFilter
Me.FilterOn = True
于 2012-11-21T20:28:30.220 に答える