![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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)
| ||