6

実行時エラー「3075」が発生しました。VBA初心者です!>.< どこが間違っていたのか分かりますか? 私はそれを解決することはできません...

たとえば、テキストボックス (txtMainName) に「Sally」という名前を入力すると、検索ボタンをクリックするとエラーがポップアップ表示されます。

エラー:

実行時エラー '3075':

クエリ式の構文エラー (演算子がありません) ' And [主な申請者名] Like 'Sally'".

Public Sub Search_Record()

Dim stDocName As String
Dim stLinkCriteria As String
Dim stLinkCriteria1 As String
Dim stLinkCriteria2 As String


    stLinkCriteria = ""
    stDocName = "frmDisplayInfo"

    If (Me!txtMainName <> "") Then
        stLinkCriteria1 = "[Main Applicant Name] Like ' " & Me![txtMainName] & "'"
        stLinkCriteria = stLinkCriteria & " And " & stLinkCriteria1
    End If

    If (Me!txtIDNo <> "") Then
        stLinkCriteria2 = "[ID No] Like ' " & Me![txtIDNo] & "'"
        stLinkCriteria = stLinkCriteria & " And " & stLinkCriteria2
    End If

    '(*This part is highlighted*)
    DoCmd.OpenForm stDocName, , , stLinkCriteria
    DoCmd.Maximize

End Sub
4

3 に答える 3

7

Runtime error 3975、 (あなたが自分で作ったかもしれない)のInvalid operatorグーグル検索によると。access vba runtime error 3075

問題は、の値のみをに割り当てること""ですstCriteria。最初のifステートメントが実行stCriteriaされると、に値が割り当てられますがstCriteria AND stCriteria1、これは無効です。

if2番目のステートメントが実行された場合も同じことが起こります。(実際、両方が実際に実行されている場合、stCriteria現在はが含まれていますがAND stCriteria1 AND stCriteria2、これはさらに悪いことです。)

AND解決策は、必要な場合にのみ追加するようにコードを変更することです。

stLinkCriteria = ""
stDocName = "frmDisplayInfo"

If (Me!txtMainName <> "") Then
    stLinkCriteria = "[Main Applicant Name] Like ' " & Me![txtMainName] & "'"
End If

If (Me!txtIDNo <> "") Then
    If stLinkCriteria <> "" then
        stLinkCriteria = stLinkCriteria & " AND "
    End If
    stLinkCriteria2 = "[ID No] Like ' " & Me![txtIDNo] & "'"
    stLinkCriteria = stLinkCriteria & " And " & stLinkCriteria2
End If

今後の参考のために、この種の問題を解決する方法は、エラーの原因となっている行(ここでは行)が実行stCriteriaされる直前に、変数(この場合)の値を実際に調べることです。DoCmd.OpenFormこれを行うには、エラーが発生した行にブレークポイントを設定し、ブレークポイントに到達するまでアプリを実行してから、変数の値を調べます。これにより、変数に何が含まれているかが正確に示され、問題が明らかになる可能性があります。

于 2012-12-28T03:45:57.380 に答える
3

ロジックから、stLinkCriteria が「and」で始まっているように見えますが、これがエラーの原因となっています。

あなたはおそらく置くべきです:

If (Me!txtMainName <> "") Then

    stLinkCriteria1 = "[Main Applicant Name] Like ' " & Me![txtMainName] & "'"

    if stLinkCriteria <> "" then                   <==== add this

       stLinkCriteria = stLinkCriteria & " and "   <==== and this

    end if                                         <==== and this

    stLinkCriteria = stLinkCriteria & stLinkCriteria1  <=== change this

End If    

それが機能することを願っています-そうでなければ、ロジックはうまくいきます。

于 2012-12-28T04:02:27.627 に答える