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

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

Ошибка с полем дата/время в аксес [D5]


Wolfram ©   (2004-07-29 09:16:00) 

Запрос типа select field from table where data<="01.01.01"в парадоксе работал, а в аксесе 'Несоответствие типов данных в выражении условия отбора'.
Может, дату надо как-то по другому оформлять?


faost   (2004-07-31 13:12:00) [1]


> Wolfram   (29.07.04 09:16)  
> Запрос типа select field from table where data<="01.01.01"
> в парадоксе работал, а в аксесе 'Несоответствие типов данных
> в выражении условия отбора'.
> Может, дату надо как-то по другому оформлять?


Все очень просто. Сначала тебе нужно перевести формат даты из 'дд.ММ.уууу' (день.месяца.год) в 'ММ/дд/уууу' (месяц/день/год) и в записи запроса дату вставлять не в кавычки а в '#'. Т. е., втой запрос будет выглядеть так:
select field from table where data<=#01/01/01#


Wayfarer   (2004-07-31 07:02:00) [2]

function   strDateAccessFormat(Dt:String):String;
begin
  Result:='#'+strPadChL(strTokenAt(Dt,'.',0),'0',2)+'/'+
  strPadChL(strTokenAt(Dt,'.',1),'0',2)+'/'+strTokenAt(Dt,'.',2)+'#';
end;

function   strDateAccessFormat(Dt:TDate):String;
var D,M,Y:Word;
begin
  DecodeDate(Dt,Y,M,D);
  Result:='#'+strPadChL(IntToStr(M),'0',2)+'/'+
  strPadChL(IntToStr(D),'0',2)+'/'+IntToStr(Y)+'#';
end;


Umak   (2004-07-30 07:17:00) [3]

забивай дату в числовом формате - все работает отлично
и по идее даже быстрее должно.
а лучше используй параметры


Anatoly Podgoretsky   (2004-07-29 11:42:00) [4]

Wolfram   (29.07.04 09:52) [10]
С помощью функций копировать части в нужно порядке и поставлять нужные разделители. А TDate ничего про это не знает, но зато его можно преобразовать в строку нужного формата


Wolfram   (2004-07-29 10:27:00) [5]

Спасибо всем сердешное. Уже все поправил.


DarkMan   (2004-07-29 10:19:00) [6]

FormatDateTime('"#"mm"/"dd"/"yyyy"#"',xxxxx)


starcomputer   (2004-07-29 10:06:00) [7]

> Запрос типа select field from table where data<="01.01.01" в парадоксе работал, а в аксесе 'Несоответствие типов данных в выражении условия отбора'.
Может, дату надо как-то по другому оформлять? <

select field from table where data <= DateValue('01.01.01');

И все будет работать!
А вообще почитай хэлп от Access там довольно много любопытных встроенных функций.


Wolfram   (2004-07-29 09:57:00) [8]

>Johnmen

Похоже и то, и другое... Положение обязывает... :(


Johnmen   (2004-07-29 09:55:00) [9]

Ты тормозишь или разводишь ?


Соловьев   (2004-07-29 09:55:00) [10]


> Переформулирую вопрос: как из dd.mm.yyyy получить
> mm/dd/yyyy?

на форуме это каждый 5-й вопрос. У Вас поиск не работает? илиссылки 2,3,4...?


Wolfram   (2004-07-29 09:52:00) [11]

>Стандартный tdate ничего не знает про dd.mm.yyyy.

Переформулирую вопрос: как из dd.mm.yyyy получить mm/dd/yyyy?

Подскажите, плз.


Anatoly Podgoretsky   (2004-07-29 09:50:00) [12]

Wolfram   (29.07.04 09:48) [8]
Стандартный tdate ничего не знает про dd.mm.yyyy.


Wolfram   (2004-07-29 09:48:00) [13]

> где date формат "mm/dd/yyyy"

т.е. стандартный tdate не подходит? ведь он дает dd.mm.yyyy.
а если у меня в поле все типа dd.mm.yyyy - что, вообще не получится с этими полями работать?


ЮЮ   (2004-07-29 09:39:00) [14]

'#01.02.03#'
только что это - 1 фебраля 2003 или 2 марта 2001 будет знать только БоГ и ассess.

Поэтому см.[2]
Улыбка в [3] была саркастической


DarkMan   (2004-07-29 09:39:00) [15]

select field from table where data<=#'+date+'#
где date формат "mm/dd/yyyy"


Wolfram   (2004-07-29 09:34:00) [16]

[3]

>В Accesse симольный формат даты в запросе такой:
>'#<непосредственно дата>#'

select field from table where data<=#'+date+'#- ошибка в запросе бла-бла-бла


Wolfram   (2004-07-29 09:30:00) [17]

там так и получается select field from table where data<="'+date+'", var date : tdate, вроде все правильно, но не работает, блин. в бд у поля стоит тип 'Краткий формат даты', маски ввода, значения по умолчанию нет, поле необязатеьлное, неиндексированное.


ЮЮ   (2004-07-29 09:28:00) [18]

В Accesse симольный формат даты в запросе такой:
'#<непосредственно дата>#'

Только 01.02.03 имеет 6 различных и правильных интерпретаций. Успехов! :-)


Johnmen   (2004-07-29 09:25:00) [19]

select field from table where data<=:parametr
Будет работать, независимо от типа СУБД.


Ega23   (2004-07-29 09:20:00) [20]

попробуй   where data<="01.01.2001"


Наверх

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