Использование выбора случая в запросе выбора SQL - PullRequest
2 голосов
/ 20 апреля 2011
SELECT
  CASE Forms!FormName!ComboBox
   WHEN  Is Not Null THEN (ParentTable.Column)
     FROM (Parent)
      WHERE (((ParentTable.Column)=Forms!FormName!ComboBox))
  ELSE
   ((ParentTable.Column) FROM Parent END;

Хорошо, у меня есть форма, которая отображает записи из родительской таблицы, и я хочу иметь возможность фильтровать ее.Итак, то, что пытается выполнить приведенный выше код SQL, - это сказать, что если в поле со списком сделан выбор, то выбирайте только те записи, которые соответствуют этому полю.В другом случае поле пустое и просто выбирает все записи.Я не очень хорошо знаком с кодом SQL, поэтому, если возможно, объясните, какие параметры используются.

Или, возможно, вместо этого я мог бы использовать какой-то оператор if?

Ответы [ 3 ]

1 голос
/ 21 апреля 2011

Похоже, что CASE здесь не нужен:

SELECT ParentTable.Column
FROM ParentTable
WHERE (Forms!FormName!ComboBox IS NULL)
   OR (Forms!FormName!ComboBox = ParentTable.Column)
1 голос
/ 20 апреля 2011

Вы не можете использовать параметры формы непосредственно в SQL.Вы можете параметризировать свой запрос и передать параметр, назовем его @FormName:

select
    case
         when @FormName is not null then ParentTable.column1
         else ParentTable.column2
    end
from ParentTable
where ParentTable.column3 = @FormName
0 голосов
/ 20 апреля 2011

ПРИМЕЧАНИЕ. Я предполагаю, что вы динамически привязываете значение параметра Forms! FormName! ComboBox.

Для MS Access

   SELECT <YOUR_SELECT_LIST>
     FROM ParentTable 
    WHERE NZ(Forms!FormName!ComboBox,  ParentTable.Column) = ParentTable.Column

Для SQL Server

   SELECT <YOUR_SELECT_LIST>
     FROM ParentTable 
    WHERE ISNULL(Forms!FormName!ComboBox,  ParentTable.Column) = ParentTable.Column

для ORACLE

   SELECT <YOUR_SELECT_LIST>
     FROM ParentTable 
    WHERE NVL(Forms!FormName!ComboBox,  ParentTable.Column) = ParentTable.Column        
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...