Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.29;
Скачать: CL | DM;

Вниз

SQL запрос к Access через ADO дату в строку   Найти похожие ветки 

 
s77   (2005-11-30 12:03) [0]

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


 
Sergey13 ©   (2005-11-30 12:06) [1]

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


 
Desdechado ©   (2005-11-30 12:07) [2]

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


 
Anatoly Podgoretsky ©   (2005-11-30 12:11) [3]

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


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

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

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

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


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

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


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

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

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


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


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

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


 
Sergey13 ©   (2005-11-30 12:22) [8]

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


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

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


 
Sergey13 ©   (2005-11-30 12:28) [10]

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


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

Запрос
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 дата


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

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


 
Sergey13 ©   (2005-11-30 12:42) [13]

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

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


 
Sergey13 ©   (2005-11-30 13:08) [14]

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-)


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


> А зачем 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) [16]

- cnfdk.  = ставлю



Страницы: 1 вся ветка

Текущий архив: 2006.01.29;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.054 c
6-1129721825
mmms
2005-10-19 15:37
2006.01.29
Передача файла по сети, D7


2-1136969198
pupapumD
2006-01-11 11:46
2006.01.29
Командная строка.....


3-1132296324
antoxa2005
2005-11-18 09:45
2006.01.29
А можно ли сохранить запрос, как хранимую процедуру в БазеДанных


15-1136932339
Andy BitOff
2006-01-11 01:32
2006.01.29
Ветка "Начинающим" - читай как орешник


2-1137043616
Sirus
2006-01-12 08:26
2006.01.29
Цикл по компонентам