我正在使用Access 2016 VBA。所有代码都可以正常工作,否则。
(PopUpReminders.Employee)
出现的错误是(完全复制)
MS VB运行时错误3075:查询表达式中的语法错误 '(((PopUpReminders.ReminderCompletion)= False)并且 ((PopUpReminders.ReminderStartDate)< = Now()和((PopUpReminders.Employee)=' rerdeljac'));'。
请注意," rerdeljac"是在Forms![Login]![txtUserName]上输入文本框的logintext,它与PopUpReminders.Employee匹配;请注意,错误消息不包括SQL代码的其余部分。
Forms![Login]![txtUserName]
是表格中仅包含文字的字段,Set rs = db.OpenRecordset(strSQL)
是表单上的文本框,仅用文字字符填充。
错误发生在var value = Date.UTC(2015, 10, 5);
chart.xAxis[0].addPlotLine({
value: value,
color: "green",
width: 1,
dashStyle: 'ShortDash',
label: {
text: "this appeared outside of the current view!",
align: 'left',
y: 5,
x: 3,
style: {
fontSize: "12px"
}
},
zIndex: 10
});
var range = 1000 * 3600 * 24 * 30;
chart.xAxis[0].setExtremes(value - range, value + range)
行。
答案 0 :(得分:1)
如果我正确的话,你的陈述需要AuthenticationResult
)
。您的SQL语句过于复杂(可能是因为您从使用GUI创建的查询中复制了它)。这就足够了:
Now()
如果您的某位用户决定在"SELECT * FROM PopUpReminders WHERE ReminderCompletion=False AND ReminderStartDate<=Now() AND Employee='" & Forms![Login]![txtUserName] & "'"
中输入' (single quote)
,则会失败。您至少应将其更改为txtUserName
Replace(Forms![Login]![txtUserName],"'","''")
也不可靠。您应该使用RecordCount
检查是否有任何记录被返回,并使用rs.EOF=False OR rs.BOF=False
和rs.MoveFirst
进行迭代。
答案 1 :(得分:0)
实际上,这是Fionnuala删除列名和SunKnight0在Now()之后添加括号的组合,它解决了这个问题。我无法回答这两个问题,而且SunKnight超越了所以他得到了标记。以下是修正后的代码,适用于将来可能需要它的人:
strSQL = "SELECT PopUpReminders.* FROM PopUpReminders WHERE (((PopUpReminders.ReminderCompletion)=False) AND ((PopUpReminders.ReminderStartDate)<=Now()) AND ((PopUpReminders.Employee)='" & Forms![Login]![txtUserName] & "'));"