Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SQL запрос к Access через ADO дату в строку [D7, Access]


s77 ©   (2005-11-30 12:03:00) 

Как поле даты в запросе преобразовать в строку
хотелось бы даты сравнивать в строковом формате, а то c Null'ами проблемы


s77   (2005-11-30 14:40:00) [1]


> А зачем datetostr(DateTimePicker5.Date)? У тебя поле какого
> типа?

дело в том что тип значения параметра передаваемого в access может быть только ftDateTime, - cnfdk. ftDate а он сам переводит в ftDateTime, а он идет со временем  DateTimePicker5.Date - получается дата и время которое мне не нужно и с ним вообще сравнения не получается
> Если в Edit19.Text нет % то смысл Like теряется. Может тут
> причина.

> Зачем тебе  or (name is null and :name is null) если параметр
> NULL-ом никогда не бывает?

все написано правильно и работает как надо для текстового поля


s77   (2005-11-30 14:40:00) [2]

- cnfdk.  = ставлю


Sergey13   (2005-11-30 13:08:00) [3]

2[11] s77   (30.11.05 12:32)
Зачем тебе   or (name is null and :name is null)если параметр NULL-ом никогда не бывает?

2[12] s77   (30.11.05 12:38)
>выход - в базе сделать поля дат текстовыми
Нет. Выход - правильно писАть программы. 8-)


Sergey13   (2005-11-30 12:42:00) [4]

А зачем datetostr(DateTimePicker5.Date)? У тебя поле какого типа?

>trim(Edit19.Text);
Если в Edit19.Text нет % то смысл Like теряется. Может тут причина.


s77   (2005-11-30 12:38:00) [5]

выход - в базе сделать поля дат текстовыми - но волнует меня как будет работать поис по диапазону например показать тех у кого дата с 11.02.2004 до 02.10.2005


s77   (2005-11-30 12:32:00) [6]

Запрос
select * from main_table where
((name like :name) or (name is null and :name is null)) and
((pass_vyd=:pass_vyd and :pass_vyd is not null) or (:pass_vyd is null))

Передача параметров
      ADOQuery1_select_some.Close;
      if trim(Edit19.Text)='' then ADOQuery1_select_some.Parameters.ParamByName('name').Value:='%'
      else ADOQuery1_select_some.Parameters.ParamByName('name').Value:=trim(Edit19.Text);
      if DateTimePicker5.Checked then
      ADOQuery1_select_some.Parameters.ParamByName('pass_vyd').Value:=datetostr(DateTimePicker5.Date)
      else ADOQuery1_select_some.Parameters.ParamByName('pass_vyd').Value:=null;

соответственно name строковое поле
pass_vyd дата


Sergey13   (2005-11-30 12:28:00) [7]

Может таки свой запрос опубликуешь?


s77   (2005-11-30 12:26:00) [8]

неа, не работает в любом случае выдает все записи и когда передаю дату и когда передаю нулл


Sergey13   (2005-11-30 12:22:00) [9]

((data=:data and :data is not null) or (:data is null))


s77   (2005-11-30 12:18:00) [10]


> А ты дату с Like тоже ищешь?

по всякому пробовал :)


s77   (2005-11-30 12:17:00) [11]

тогда помогите написать чтобы когда я ищу дату - выводилось только точное совпадение с ней, а когда передаю в параметр нулл (поиск без учета даты) чтоб выводились все

(с текстовыми полями работает а с датами нет см. мой пример выше, только передаю не нулл а %)


Sergey13   (2005-11-30 12:16:00) [12]

А ты дату с Like тоже ищешь?


s77   (2005-11-30 12:13:00) [13]

ну как бы сравнивал - формат то одинаковый
есть же функция на стороне delphi datetostr
в оракле например есть функция to_char(дата, формат вывода даты)

что же касается сравнения с null ом мне тут уже подсказали
например сравнение по полю name кот. может быть null ом
((name like :name) or (name is null and :name is null))

с датой работает не правильно - кода передаю в параметр дату (не нулл) - цепляет из таблицы и нужную дату (если она есть) и пустые строки


Anatoly Podgoretsky   (2005-11-30 12:11:00) [14]

А как ты NULL то преобразуешь в строку?


Desdechado   (2005-11-30 12:07:00) [15]

а с NULL сравнивать только IS NULL или IS NOT NULL


Sergey13   (2005-11-30 12:06:00) [16]

2 s77   (30.11.05 12:03)
И как бы ты их сравнивал интересно?


Наверх

Титульная страница Поиск, карта сайта Написать письмо