2009-10-22 44 views
0

我需要能够读取组合框以确定要使用where子句的列。 简单的例子是 SELECT * FROM表WHERE [窗体]![frmNameWhatever]![ComboTime]之间[胡说]![胡说]![胡说]和[胡说]![胡说]![胡说]使用窗体构建WHERE子句的MS ACCESS查询

等等等等等等......第一部分,在这之后,返回零行... 我使用错误的语法吗? 我试过这个W/A文本框以及它仍然返回零行... 对不起有人可能不得不重新写这个,但我很累..它结束的一天

谢谢寻求任何帮助^^

+0

是什么等等等等等等代表什么?你的表单上有更多的控件吗? – 2009-10-22 20:51:38

+0

是的,我会编辑这个。然而,blah!blah!blah是在WHERE关键字之后工作的部分,需要是“动态”的。我想知道它是否可能在Access中将其改变为取决于组合框 – Marlon 2009-10-23 14:41:18

回答

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 & "#" 
+0

内选定内容的值,它们之间的值完美无缺。但是,在WHERE关键字之后,需要“动态”。我想知道如果它可能在访问,要改变这是依赖于组合框内选择什么 – Marlon 2009-10-23 14:41:54

+0

@marloncopeland,请参阅我编辑的答案。 – 2009-10-23 15:21:13

+0

我会试试这个,但我有一种感觉,你误解了我的问题。在你的例子中,我需要“myDateColumn”来自组合框中的一个值,组合框中的值将表示一个表中的列。所以,WHERE [comboxboxvalue] BETWEEN [textboxdate]和[textboxdate] – Marlon 2009-10-23 15:36:53

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这PROC通过在控件的值传递作为参数。

+0

我的问题是在WHERE关键字后面的“item”(在我们的例子中它是OrderDate),需要是“动态的”。我想知道它是否有可能在访问中改变这是取决于组合框内选择的东西 – Marlon 2009-10-23 14:40:20

+0

所以有多个特效 - GetOrderByOrderDate,GetOrderByRequiredDate,GetOrderByShippedDate等 - 然后使用您的组合框的值'动态'选择所需的过程。 – onedaywhen 2009-10-24 06:14:41

1

,可以串联的SQL语句,并用RunSQL像这样运行:!

DoCmd.RunSQL("(SELECT * FROM TABLE WHERE " & Forms("frmNameWhatever").ComboTime.Value & " BETWEEN [blah]![blah]![blah] AND [blah]![blah]![blah]);")