|
▼hatena様:
お返事ありがとうございます。
>書式プロパティに日付の書式を設定すると、日付/時刻型のValueを持つテキストボックスと判断されるようです。
>ですので日付以外のデータを入力するとエラーメッセージが表示されます。このエラーは更新前イベントより前に発生するので更新前イベントでは補足できません。
なるほど…そういうことなのですね…
テキストボックスのイベントを巡って色々試していたのですが、すべてエラーが先に出てしまうので、頭を抱えておりました。
>が、フォームのエラー時のイベントで補足できます。
ご丁寧にコードまで、ありがとうございます!
Responseという単語、調べてもあまり検索に引っかからないようで、
良く分からなかったですが、解決致しました!
一応完成したものを載せておきます
【検索ボタン】クリック時
Private Sub cmdFilter_Click()
Dim strFilter As String
Dim torihiki As Variant
Dim startt As Variant
Dim start As Variant
Dim goalt As Variant
Dim goal As Variant
Dim sday As Variant
Dim gday As Variant
torihiki = cbo取引先.Value
startt = txt発地都道府県.Value
start = txt発地.Value
goalt = txt着地都道府県.Value
goal = txt着地.Value
sday = txt開始日.Value
gday = txt終了日.Value
If Not Nz(torihiki, "") = "" Then
strFilter = " AND " & "取引先コード Like '" & torihiki & "'"
End If
If Not Nz(startt, "") = "" Then
strFilter = strFilter & " AND 発地都道府県 Like '*" & startt & "*'"
End If
If Not Nz(start, "") = "" Then
strFilter = strFilter & " AND 発地 Like '*" & start & "*'"
End If
If Not Nz(goalt, "") = "" Then
strFilter = strFilter & " AND 着地都道府県 Like '*" & goalt & "*'"
End If
If Not Nz(goal, "") = "" Then
strFilter = strFilter & " AND 着地 Like '*" & goal & "*'"
End If
If Not Nz(sday, "") = "" Then
strFilter = strFilter & " AND 日付 >= #" & sday & "#"
End If
If Not Nz(gday, "") = "" Then
strFilter = strFilter & " AND 日付 <= #" & gday & "#"
End If
Debug.Print strFilter
Me.Filter = Mid(strFilter, 6)
If strFilter = "" Then
Me.FilterOn = False
Else
Me.FilterOn = True
End If
End Sub
【フォーム】エラー時
Private Sub Form_Error(DataErr As Integer, Response As Integer)
If DataErr = 2113 Then
MsgBox "おかしな日付です。"
Response = acDataErrContinue '既定のエラーメッセージを表示しない
End If
End Sub
--------
Variant型は省略してもいいと書かれていましたが一応…
かるびの様にご指摘いただいていた分、訂正できたと思います!
(あまり自信はないですが)
長い期間お世話になりましたかるびの様、
お助けいただいたhatena様、
初心者である私に親切に、ご丁寧にご教授いただきありがとうございます!
また質問させていただくことがありましたら宜しくお願いします^^
|
|