Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.01.29;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.029 c
9-1123757977
TButton
2005-08-11 14:59
2006.01.29
GLScene


2-1137397081
pavel_guzhanov
2006-01-16 10:38
2006.01.29
проблемы с вычислением десятичного логарифма


2-1135793463
guitarist
2005-12-28 21:11
2006.01.29
Командная строка


2-1137064344
Practicant
2006-01-12 14:12
2006.01.29
Узнать ширину текста...


9-1124299115
Malkavian
2005-08-17 21:18
2006.01.29
Что-то плохое происходит... :(





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский