Форум: "Базы";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
ВнизЗабавный формат даты в базе 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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.034 c