|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
выборка двух значений из одной колонки
Профи, помогите с запросом .
Суть такая : Есть таблица , в ней столбцы с данными. Нужно сделать выборку данных с использованием дат (точнее промежутков между указанными датами). Как бы проблем нет, но нужно включить в промежутки даты ,выборку двух разных значений в одном столбце. Столбец FRUKT и указать Яблоко. Если применить как указал в коде , всё работает. Как вывести Яблоко и Грушу ?, они находятся в столбце FRUKT Код:
f.SQL.Add('SELECT DISTINCT * from obstan country'); f.SQL.Add('where ID>0'); f.SQL.Add('and DATE >='+#39+DBDateTimeEditEh1.Text+#39); f.SQL.Add('and DATE <='+#39+DBDateTimeEditEh2.Text+#39); f.SQL.Add('and ADD like'+#39+Edit1.Text+#39); if DBComboBoxEh2.Text<>'' then f.SQL.Add('and ORKIS like'+#39+DBComboBoxEh2.Text+#39); if DBComboBoxEh4.Text<>'' then f.SQL.Add('and FRUKT like'+#39+DBComboBoxEh4.Text+#39); if DBComboBoxEh3.Text<>'' then f.SQL.Add('and TYPE like'+#39+DBComboBoxEh3.Text+#39); if DBComboBoxEh1.Text<>'' then f.SQL.Add('and PRAME like'+#39+DBComboBoxEh1.Text+#39); f.SQL.Add('order by date, ADRES '); f.Open; Код:
if DBComboBoxEh5.Text<>'' then f.SQL.Add('or FRUKT like'+#39+DBComboBoxEh5.Text+#39); Получается , выбирает за всё время , а надо строго в промежутках времени , указанных в DBDateTimeEditEh1 и DBDateTimeEditEh2. Благодарю |
#2
|
||||
|
||||
Каким образом вы хотите задавать Яблоко и Грушу одновременно в DBComboBoxEh4.Text ?
У вас ведь одно значение за раз в это поле вводится. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
starcon (25.02.2016)
|
#3
|
|||
|
|||
Все просто DBComboBoxEh4.Text это яблоко, а через DBComboBoxEh5.Text это груша
там же есть оператор or frukt like |
#4
|
|||
|
|||
Цитата:
Код: Код:
if DBComboBoxEh5.Text<>'' then f.SQL.Add('or FRUKT like'+#39+DBComboBoxEh5.Text+#39); Получается , выбирает за всё время , а надо строго в промежутках времени , указанных в DBDateTimeEditEh1 и DBDateTimeEditEh2. Благодарю |
#5
|
||||
|
||||
А вы возьмите в скобки все ваши фрукты:
Код:
if DBComboBoxEh4.Text<>'' then f.SQL.Add('and (FRUKT like'+#39+DBComboBoxEh4.Text+#39); if DBComboBoxEh5.Text<>'' then f.SQL.Add('or FRUKT like'+#39+DBComboBoxEh5.Text+#39+')'); Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
starcon (25.02.2016)
|
#6
|
|||
|
|||
Помогло, но при таком запросе нужно обязательно заполнять оба компонента для поиска
DBComboBoxEh4 и DBComboBoxEh5. То есть, грушу и яблоко , если только по одному критерию запрос ломается "Не правильный синтаксис около конструкции Груша" Можно как то решить ? Последний раз редактировалось starcon, 26.02.2016 в 17:00. |
#7
|
|||
|
|||
Канеч, ломается. Скобку то хто закрывать бу?
Код:
If (DBComboBoxEh4.Text<>'') Or (DBComboBoxEh5.Text<>'') Then begin f.SQL.Add('and ('); if DBComboBoxEh4.Text<>'' then f.SQL.Add('FRUKT like'+#39+DBComboBoxEh4.Text+#39); if DBComboBoxEh5.Text<>'' then begin if DBComboBoxEh4.Text<>'' then f.SQL.Add('or'); f.SQL.Add('FRUKT like'+#39+DBComboBoxEh5.Text+#39); end; f.SQL.Add(')'); end; как-то так... |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
starcon (28.02.2016)
|
#8
|
|||
|
|||
От СПАСИБО.
Заработало |