MS ACCESS запрос с использованием формы для построения предложения WHERE - PullRequest
0 голосов
/ 23 октября 2009

Мне нужно иметь возможность прочитать поле со списком, чтобы определить, какой столбец использовать для предложения where. Простой пример будет ВЫБЕРИТЕ * ИЗ ТАБЛИЦЫ ГДЕ [Forms]! [FrmNameWh независимо]! [ComboTime] МЕЖДУ [бла]! [Бла]!

бла-бла-бла работает ... Первая часть, сразу после где, возвращает ноль строк ... Я использую неправильный синтаксис? Я пробовал это с текстовым полем, а он по-прежнему возвращает ноль строк ... Извините, что кто-то может переписать это, но я устал .. конец дня

Спасибо за любую помощь ^^

Ответы [ 3 ]

1 голос
/ 17 ноября 2009

Вы можете объединить оператор SQL и запустить его с RunSQL следующим образом:

DoCmd.RunSQL("(SELECT * FROM TABLE WHERE " & Forms("frmNameWhatever").ComboTime.Value & " BETWEEN [blah]![blah]![blah] AND [blah]![blah]![blah]);")
1 голос
/ 23 октября 2009

Попробуйте поставить знаки фунта вокруг ваших значений.

BETWEEN #8:00 AM# and #12:00 PM#

Чтобы создать динамическую строку SQL:

strSQL = _
   "Select myColumns FROM myTable WHERE " & Me.myComboBox & " BETWEEN #" & _
   Me.MyFirstTextBoxDate & "# AND #" & Me.MySecondTextBoxDate & "#"
0 голосов
/ 23 октября 2009

Может быть плохой идеей жестко кодировать имена элементов управления вашей формы в вашем коде 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 произвели этот процесс, передав значения ваших элементов управления в качестве параметров.

...