実行時エラー「3075」が発生しました。私はVBAの初心者です! >。<どこで問題が発生したのかわかりますか?解けない….
たとえば、テキストボックス(txtMainName)に「Sally」という名前を入力すると、検索ボタンをクリックするとエラーがポップアップ表示されます。
エラー:
実行時エラー「3075」:
クエリ式の構文エラー(演算子がありません) 'および[主な申請者名]' 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
Runtime error 3975
はInvalid operator
であり、access vba runtime error 3075
でのグーグル検索によると(自分で作成した可能性があります)。
問題は、""
の値のみをstCriteria
に割り当てることです。最初のif
ステートメントが実行されると、stCriteria
には無効なstCriteria AND stCriteria1
の値が割り当てられます。
2番目のif
ステートメントが実行された場合も、同じことが起こります。 (実際、両方が実際に実行されている場合、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
将来の参考のために、これらの種類の問題を解決する方法は、エラーの原因となった行(ここではDoCmd.OpenForm
行)の直前の変数(この場合はstCriteria
)の値を実際に調べることです。 )が実行されます。これを行うには、エラーが発生した行にブレークポイントを設定し、ブレークポイントに到達するまでアプリを実行してから、変数の値を調べます。これにより、正確に変数に何が含まれているかがわかり、問題が明らかになる可能性があります。
ロジックから、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
それがうまくいくことを願っています-そうでなければ、ロジックは良さそうです。
このエラーは、ドットと次のフィールド名の間の余分なスペースから発生します。
DoCmd.RunSQL "UPDATE cp INNER JOIN [char_lib] ON [cp]. [library_id] = [char_lib].[id] set..
Microsoftへの注意:より正確で有用なエラーメッセージを作成してください。ありがとう。私はあなたがこれを正しく理解することは間違いありません。