私は実際に答えを知っている質問がありましたが、インターネットで答えを見つけられなかったが自分でつなぎ合わせたので、それに苦労している可能性のある他の人のためにそこに出したいと思いました. 誰かの面倒を救うために。ユーザーが別のレコードをクリックするたびに同じレコードを取得する場合、Access 2003 で最も可能性が高いのは、デザイン モードで保存したときに、サーバー フィルター プロパティもフィルター先のレコードに保存したためです。次に、ライブで送信すると、そのように動かなくなります。この問題の答えを以下に示します。
質問する
234 次
1 に答える
1
これはすべての「イベント」で機能するわけではないため、ServerFilterプロパティがスタックしたり、毎回同じレコードを複製したりするフォームを開くために使用するボタンにこのコードを配置するのが最善の方法です。繰り返しますが、問題のあるフォームを開くボタンにこのコードを挿入し、「OpenForm」関数が必要なフォームを呼び出す前に実行します。'提供されたフォームを閉じます。DoCmd.Close acForm、 "Orders"'が開いている場合に備えて、提供されたフォームをデザインビューで再度開きます。DoCmd.OpenForm "Orders"、acDesign
Public Sub Whatever()
On Error GoTo LiveError
'Set all filters to ""
Forms![Orders].Filter = ""
Forms![Orders].ServerFilter = ""
'Save the form in design view
DoCmd.Save acForm, "Orders"
'Close the supplied Form.
DoCmd.Close acForm, "Orders"
'This is where your Open Form function would go, to open whatever form you need
'as usual. The only difference now is that all pre-saved filters will be gone
'before you apply the new filter.
Exit Sub
LiveError:
'This is so that when it goes live it doesn't error out since it can't open
'in design mode on the live server.
'Continue opening whatever form you planned on before. For example:
Call OpenOrderForm(Forms![FORMNAME]![FILTERCRITERIA])
End Sub
于 2012-04-13T17:07:51.940 に答える