以下查询未将任何行返回到列表框中。没有错误消息:
lstDiff.RowSource = "select TestScenario,TestId from tblTesting where empid= '" & Me.txtEmpId.Value & "' and testid= '" & Me.txtAutoNumber.Value & "'"
有人可以帮忙吗?
答案 0 :(得分:2)
您在字段中的值是数字,因此不需要额外的单引号。代码应如下所示:
Me.lstDiff.RowSource = "select TestScenario,TestId from tblTesting where empid= " & Me.txtEmpId & " and testid= " & Me.txtAutoNumber & ";"
我也从字段引用中删除了.Value,它们没有害处,但也没有必要。
我在你的陈述结尾添加了一个分号。
根据您插入此代码的时间/位置,您可能还需要添加以下语句:
Me.lstDiff.Requery
答案 1 :(得分:1)
您不断发布有关完全相同的WHERE子句的问题,每个子句的表观错误完全相同。 SO用户尽职地指出了您的错误,几天后,您使用相同的错误WHERE子句显示相关问题。
txtContSunStart1.Value = DLookup("Start1", "tblContract", _
"TestId = " & _
lstResults.Value & _
"" And "Day = 'Sunday'")
DoCmd.RunSQL (" Update tbltesting set IsDiff ='Yes' where empid= " & Me.txtEmpId.Value & " and testid= " & Me.txtAutoNumber.Value & ";")
DoCmd.RunSQL ("insert into tbltesting (IsDiff)values ('Yes') where empid= '" & Me.txtEmpId.Value & "' and testid= '" & Me.txtAutoNumber.Value & "'")
然后在当前的问题中:
lstDiff.RowSource = "select TestScenario,TestId from tblTesting where empid= '" & Me.txtEmpId.Value & "' and testid= '" & Me.txtAutoNumber.Value & "'"
您在重复出现完全相同的问题时遇到了困难。
以下是在Access中将SQL字符串与正确的分隔符连接起来的规则:
数值不需要分隔符:
“... AND testid =”&我!txtAutoNumber
文本值需要引用分隔符。在Access中,通常的做法是使用双引号,但更容易使用单引号,因为在一个可以工作的形式中键入双引号是很痛苦的(根据上下文键入“”“或”“”“是违反直觉和愚蠢的我,所以我总是定义一个全局常量,它保存双引号符号并与之连接。
“... AND textfield =”& Chr(34)&我!MyTextField& CHR(34)
日期值使用#delimiter:
“......和datefield =#”&我!MyDateField& “#”
布尔字段不需要引号,最好使用True和False:
“......和IsDiff = True”
这些规则适用于WHERE子句条件和UPDATE查询中的SET语句。这些规则适用于编写传递给DoCmd.RunSQL或CurrentDB.Execute的SQL字符串,以及编写要用作表单或报表的记录源的SQL字符串,或用作组合框或列表框的行源。 / p>
答案 2 :(得分:0)
尝试在SQL Management Studio中运行查询。你得到任何一行吗?
编辑:刚刚注意到了access-tag。您确定您的表格中至少包含一个提供了ID的帖子吗?
答案 3 :(得分:0)
My Access有点生疏,但如果所有其他方法都失败,请尝试使用记录集从SQL捕获数据并循环遍历它,将值添加到列表框中。 Example Code
答案 4 :(得分:0)
就个人而言,每当我在代码中使用SQL语句时,我更喜欢将语句存储在变量中。在测试之后,在将语句分配给变量之后,您可以使用Debug.Print在解析txtempid和txtautonumber之后查看SQL语句的外观。它看起来像这样。
Dim sSQL as String
sSQL = "select TestScenario,TestId from tblTesting where empid= '" & Me.txtEmpId.Value & "' and testid= '" & Me.txtAutoNumber.Value & "'"
Debug.Print sSQL
lstDiff.RowSource = sSQL
然后只要您的直接窗口可见(Ctrl-G),您就可以看到您的SQL语句究竟是什么。如果它在即时窗口中看起来正确,请将其复制并粘贴到查询构建器中并在那里运行它。