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

Вниз

Забавный формат даты в базе Access   Найти похожие ветки 

 
Pipl   (2004-07-02 12:50) [0]

Добрый день, всем!
Данные храню в Accesse, использую ADOQuery. формат ячейки в табле Access: краткий формат даты. При сохранении в базу данных беру дату из DateTimePicker.Date, а когда выбираю данные по дате запросом, дату в запросе привожу к виду: #02/07/2004#. Данные не выбираются из базы, при запросе данных в Пикере поставил на первое место месяц, получил в запросе: #07/02/2004# данные отображаются. А когда дата больше 13: #13/07/2004#, то выбираются данные нормально. Как исправить данную проблемму?
Спасибо!

N.B. В самой таблице Access вид даты 02.07.2004


 
Курдль ©   (2004-07-02 12:54) [1]

Использовать параметрические запросы, а не вставлять дату, как текст с запрос. Иначе есть опасность нарываться на чужие оригинальные настройки формата даты.


 
Pipl   (2004-07-02 12:58) [2]

>Курдль ©
я не программист по натуре, начитан не много, можно по подробнее про параметрические запросы, или где почитать?
Спасибо!


 
Anatoly Podgoretsky ©   (2004-07-02 12:59) [3]

Это значит лишь одно, у тебя нет данных на 7.02.2004


 
Pipl   (2004-07-02 13:02) [4]

>Anatoly Podgoretsky ©
согласен данных нет, база свежая, но высвечиваются данные при запросе на 07.02.2004  за 02.07.2004 я проверял.


 
Курдль ©   (2004-07-02 13:07) [5]


> Pipl   (02.07.04 12:58) [2]
> >Курдль ©
> я не программист по натуре, начитан не много, можно по подробнее
> про параметрические запросы, или где почитать?
> Спасибо!

Почитать в любой книжке по БД + Делфи (динамические запросы).

Query1.SQL.Text := "select * from TABLE_1 where FLD_DATE = :PAR_DATE";
Query1.ParamByName("PAR_DATE").AsDateTime := Date;


 
Anatoly Podgoretsky ©   (2004-07-02 13:09) [6]

Pipl   (02.07.04 13:02) [4]
Потому что ты использовал американский формат даты MM/DD/YYYY


 
Pipl   (2004-07-02 13:12) [7]

> Anatoly Podgoretsky ©
первым делом я проверил региональные настройки в Винде(XP), нормальные русские деревянные рубли :) и краткий формат даты.


 
Anatoly Podgoretsky ©   (2004-07-02 13:17) [8]

Pipl   (02.07.04 13:12) [7]
А спрашиваешь про Акцесс, а не про Виндоус. Его настройки и справку по нему смотри.


 
sniknik ©   (2004-07-02 13:27) [9]

> Его настройки и справку по нему смотри.
в этом случае не поможет, нормальное поведение движка Jet, если дата введена в неправильном формате первым делом идет попытка преобразования на возможность того что спутали мемяц и день, ошибка выдается только если и преобразованный формат датой не является.
(в справке описания такого поведения не находил, видимо комуто само собой разумеющееся ;о)

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


 
Pipl   (2004-07-02 13:27) [10]

> Anatoly Podgoretsky ©

спрашиваю про варианты решения проблеммы а не про Access или Windows, в самой базе Access"а сделал запрос по дате, отображает данные все правильно, за 02.07.2004.


 
Pipl   (2004-07-02 13:29) [11]

>sniknik ©
>чтобы избежать неоднозначности используй параметры.

можно тут плз по подробнее, какие параметры?
СПАСИБО


 
Anatoly Podgoretsky ©   (2004-07-02 13:33) [12]

Pipl   (02.07.04 13:27) [10]
Так "Данные храню в Accesse"


 
sniknik ©   (2004-07-02 13:37) [13]

> самой базе Access"а сделал запрос по дате, отображает данные все правильно, за 02.07.2004.
дата это число, а как это число интерпретировать/конвертировать из/в текст(а) зависит от программы/программиста

> можно тут плз по подробнее, какие параметры?
обычные ADODataSet.Parameters + F1


 
Pipl   (2004-07-02 13:44) [14]

>sniknik ©
спасибо за помошь, хоть и такую (F1),
у меня запрос выглядит так:
...CommandText:="Select * from TblNomera where DataPrihod =" + data_prihod +" And Sklad ="+Label15.Caption +"";
ежели кому интересно


 
Anatoly Podgoretsky ©   (2004-07-02 13:46) [15]

data_prihod соответствует текущему формату твой базы данных?


 
Pipl   (2004-07-02 13:54) [16]

>Anatoly Podgoretsky ©
data_prihod из DateTimePicker.Date привожу к виду: #02/07/2004#

ответ: да, согласно описаниям формата данных даты Access"a


 
sniknik ©   (2004-07-02 14:03) [17]

> у меня запрос выглядит так:
> ...CommandText:="Select * from TblNomera where DataPrihod =" + data_prihod +" And Sklad ="+Label15.Caption +"";
> ежели кому интересно
тебе, должно быть
меняеш на параметры
...CommandText:="Select * from TblNomera where DataPrihod=:DataPrihod And Sklad=:Sklad";
их значения присваиваеш перед выполнением запроса.


 
Anatoly Podgoretsky ©   (2004-07-02 14:05) [18]

Pipl   (02.07.04 13:54) [16]
Тогда все должно работать, но у меня большое сомнение, что твое преобразование соответствует формату, особенно это видно из более ранних твоих сообщений.


 
Anatoly Podgoretsky ©   (2004-07-02 14:06) [19]

По внешнему виду это американский формат.


 
sniknik ©   (2004-07-02 14:15) [20]

Anatoly Podgoretsky
да не важно сдесь какой это формат, во к примеру такой запрос
SELECT #13/07/2004#, #07/13/2004#
выдаст два значения с одной(!!!) датой. одна (неважно какая) будет в правильном формате, а вторая скорректируется (месяц поменяется с днем).
(и это еще цветочки по сравнению с тем что функция CDate делает ;о))
во так вот оно работает... ;о) (меня это всегда раздражало, лутше бы ошибку преобразования выдавал)


 
Pipl   (2004-07-02 14:17) [21]

>sniknik ©

смышлёный ты парень!!! чуток поковыряв эти грёбаные параметры с твоим запросом, всё получилось, правда я ещё не понял почему и как, но еще не полночь.
СПАСИБО.
N.B. но если придумаешь как упростить - без параметров(или всё таки в чём была пробля) то буду еще более признателен.


 
Anatoly Podgoretsky ©   (2004-07-02 14:21) [22]

sniknik ©   (02.07.04 14:15) [20]
Он ничего не пишет про движок, подозреваю, что это JET, так он достаточно интеллектуальный, что бы исправить неверно поданые ему форматы, когда это одназначно, а это одназначно для #13/07/2004#



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

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

Наверх




Память: 0.52 MB
Время: 0.026 c
3-1088744616
NAlexey
2004-07-02 09:03
2004.07.25
Прерывание выполнения запроса


9-1081369937
GigoVich
2004-04-08 00:32
2004.07.25
Обмен опытом, но не делать сразу игру!


1-1089290596
Stager
2004-07-08 16:43
2004.07.25
Просмотр HTML


3-1088509574
Pasha
2004-06-29 15:46
2004.07.25
dBase и Exel


1-1089427211
Johnny Raw
2004-07-10 06:40
2004.07.25
StringGrid