我需要能够读取一个组合框来确定要用于where子句的列。 简单的例子就是 SELECT * FROM TABLE WHERE [Forms]![frmNameWhatever]![ComboTime] BETWEEN [blah]![blah]![blah]和[blah]![blah]![blah]
blah blah blah work ...第一部分,就在那之后,返回零行...... 我使用了错误的语法吗? 我已经尝试过这个w /文本框,它仍然返回零行... 对不起有人可能不得不重新写这个,但我累了..它结束了一天感谢您的帮助^^
答案 0 :(得分:1)
尝试在您的BETWEEN值周围加上英镑符号。
BETWEEN #8:00 AM# and #12:00 PM#
创建动态SQL字符串:
strSQL = _
"Select myColumns FROM myTable WHERE " & Me.myComboBox & " BETWEEN #" & _
Me.MyFirstTextBoxDate & "# AND #" & Me.MySecondTextBoxDate & "#"
答案 1 :(得分:1)
您可以连接sql语句并使用RunSQL运行它,如下所示:
DoCmd.RunSQL("(SELECT * FROM TABLE WHERE " & Forms("frmNameWhatever").ComboTime.Value & " BETWEEN [blah]![blah]![blah] AND [blah]![blah]![blah]);")
答案 2 :(得分:0)
在SQL代码中对表单的控件名称进行硬编码可能不是一个好主意。考虑具有强类型参数的PROCEDURE
,例如ANSI-92 Query Mode语法:
CREATE PROCEDURE GetOrdersByPeriod
(
:start_date DATETIME,
:end_date DATETIME
)
AS
SELECT OrderID, CustomerID, OrderDate
FROM Orders
WHERE OrderDate BETWEEN :start_date AND :end_date;
然后,您可以通过将控件的值作为参数传递来EXECUTE
此处理。