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

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

Забавный формат даты в базе Access [Access]


Страницы:   1 2

Pipl ©   (2004-07-02 12:50:00) 

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

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


Anatoly Podgoretsky   (2004-07-02 14:21:00) [1]

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


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

>sniknik ©

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


sniknik   (2004-07-02 14:15:00) [3]

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


Anatoly Podgoretsky   (2004-07-02 14:06:00) [4]

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


Anatoly Podgoretsky   (2004-07-02 14:05:00) [5]

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


sniknik   (2004-07-02 14:03:00) [6]

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


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

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

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


Anatoly Podgoretsky   (2004-07-02 13:46:00) [8]

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


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

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


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

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

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


Anatoly Podgoretsky   (2004-07-02 13:33:00) [11]

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


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

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

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


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

> Anatoly Podgoretsky ©

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


sniknik   (2004-07-02 13:27:00) [14]

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

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


Anatoly Podgoretsky   (2004-07-02 13:17:00) [15]

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


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

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


Anatoly Podgoretsky   (2004-07-02 13:09:00) [17]

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


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


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


Pipl   (2004-07-02 13:02:00) [19]

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


Anatoly Podgoretsky   (2004-07-02 12:59:00) [20]

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


Страницы:   1 2

Наверх

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