0

データベースで「AfterUpdate」イベントを編集しようとしたときに発生したこの問題を解決するためのガイダンスを求めています。私のローカル マシンでは問題なく動作しているように見えますが、ネットワーク データベースに実装しようとすると正しく動作しません (フィールドの 1 つにランダムな日付を入れることがあり、新しい日付を入力しても日付が消去されません)。 ID等)

私が持っているVBAコードは次のとおりです。

Private Sub provider_surveyID_AfterUpdate()

provider_survey_dueDate = DateAdd("ww", 2, DLookup("completed_on",
 "qry_ProviderSurveyInfo", "provider_surveyID=" & provider_surveyID))
provider_survey_reminder2weeks = DateAdd("ww", 4, DLookup("completed_on", 
 "qry_ProviderSurveyInfo", "provider_surveyID=" & provider_surveyID))
provider_survey_reminder4weeks = DateAdd("ww", 6, DLookup("completed_on", 
 "qry_ProviderSurveyInfo", "provider_surveyID=" & provider_surveyID))

End Sub

クエリは正しく、調査 ID を適切な参加者に結合して、DateAdd 関数で使用される元の "completed_on" 日付を決定します。

現在使用されていない ID を入力するときに日付を削除すると、ローカルのように機能しない理由がわかりますか? また、この場合は Nz(provider_surveyID,0) を使用するのが賢明だと思いますか? ローカルと同じように問題なく適切に機能させたいので、まだ実装していません-IDを入力すると、入力されます。20 (まだ使用されていません) を入力すると、すべての日付が再び null になります。

4

1 に答える 1

1

Dlookup は遅くて使いにくい場合があり、基準が入力されていない場合にもランダムな値が返されます。あなたのフォームがどのようにまとめられているかわかりません(フォームだと思います)。これは部分的な答えかもしれません:

Private Sub provider_surveyID_AfterUpdate()
Dim dtComplete as Date

If IsNull(provider_serveyID) then
    provider_survey_dueDate=""
    provider_survey_reminder2weeks=""
    provider_survey_reminder4weeks=""
Else
    dtComplete = DLookup("completed_on","qry_ProviderSurveyInfo", "provider_surveyID=" & provider_surveyID)
    provider_survey_dueDate=DateAdd("ww",2,dtComplete)
    provider_survey_reminder2weeks=DateAdd("ww",4,dtComplete)
    provider_survey_reminder4weeks=DateAdd("ww",6,dtComplete)
End if
End sub
于 2012-11-27T16:56:34.027 に答える