簡體   English   中英

編譯/語法錯誤:運行時錯誤3075:查詢表達式中的語法錯誤

[英]Compile/Syntax Error: Run-time error 3075: Syntax error in query expression

我正在使用Access 2016 VBA。 否則,所有代碼都可以正常工作。

Public Function PopUp()

   Dim strSQL As String
   Dim rs As DAO.Recordset
   Dim db As DAO.Database

   strSQL = "SELECT PopUpReminders.*, PopUpReminders.ReminderCompletion, PopUpReminders.ReminderStartDate, PopUpReminders.Employee FROM PopUpReminders WHERE (((PopUpReminders.ReminderCompletion)=False) AND ((PopUpReminders.ReminderStartDate)<=Now() AND ((PopUpReminders.Employee)='" & Forms![Login]![txtUserName] & "'));"
   Set db = CurrentDb
   Set rs = db.OpenRecordset(strSQL)

   If rs.RecordCount = 0 Then
      'Do Nothing
   Else
      If rs.RecordCount > 0 Then
      Do
         DoCmd.OpenForm "SFPopUpReminder"
      Loop Until rs!ViewedRecord = True
      End If
   End If

   rs.Close
   Set rs = Nothing

End Function

出現的錯誤是(精確復制的)

MS VB運行時錯誤3075:查詢表達式'((((PopUpReminders.ReminderCompletion)= False)和((PopUpReminders.ReminderStartDate)<= Now()和((PopUpReminders.Employee)='rerdeljac')) '。

請注意,“ rerdeljac”是在Forms![Login]![txtUserName]上的文本框中輸入的登錄文本,它與PopUpReminders.Employee相匹配; 另請注意,錯誤消息不包括其余的SQL代碼。

(PopUpReminders.Employee)是僅填充文本的表格上的字段,而Forms![Login]![txtUserName]是旨在僅填充文本字符的表單上的文本框。

該錯誤發生在Set rs = db.OpenRecordset(strSQL)行上。

如果我算對的話,在Now()之后,您的陳述還需要再加上一個) 您的SQL語句過於復雜(可能是因為您從使用GUI進行的查詢中復制了它)。 這足夠了:

"SELECT * FROM PopUpReminders WHERE ReminderCompletion=False AND ReminderStartDate<=Now() AND Employee='" & Forms![Login]![txtUserName] & "'"

如果您的用戶之一決定在txtUserName鍵入' (single quote) ,則此操作將失敗。 您至少應該將其更改為Replace(Forms![Login]![txtUserName],"'","''")

另外RecordCount不可靠。 您應該使用rs.EOF=False OR rs.BOF=False來檢查是否返回了任何記錄,並使用rs.MoveFirstrs.MoveNext遍歷它們。

實際上,這是Fionnuala刪除列名和SunKnight0在Now()之后添加括號的組合,從而解決了該問題。 我不能同時給出答案,SunKnight超越了對手,所以他獲得了分數。 這是更正后的代碼,適用於將來可能需要的人:

strSQL = "SELECT PopUpReminders.* FROM PopUpReminders WHERE (((PopUpReminders.ReminderCompletion)=False) AND ((PopUpReminders.ReminderStartDate)<=Now()) AND ((PopUpReminders.Employee)='" & Forms![Login]![txtUserName] & "'));"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM