Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.025 c
6-1129770284
beglec
2005-10-20 05:04
2006.01.29
Ошибка при отправка почты через NMSMTP


6-1128342790
Stanislav
2005-10-03 16:33
2006.01.29
Список компьютеров в лок. сети


15-1136730921
Новичоккк
2006-01-08 17:35
2006.01.29
Перевод с румынского


3-1133353334
alex_***
2005-11-30 15:22
2006.01.29
ORACLE и xml


15-1136220114
Логин
2006-01-02 19:41
2006.01.29
Мобильник как пульт ДУ




   Наверх