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

Вниз

Все проблемы растут из Access?....   Найти похожие ветки 

 
Волу-Пизрак   (2004-11-09 17:02) [0]

В частности, для дат выполняешь операцию <= (меньше или равно)... и ничего не происходит.
А теперь подробнее тоже самое:)
Рабочая среда.
Access из OfficeXP SP1 зареген в ODBC.
Запросы работают, когда дело не касается сравнения дат.
Обращение к БД идёт через JDBC из сервлетов, запущеных на tomcat (3.3 и выше).
Вот выдержка из лога (SELECT вернул пустое множество записей, а Delete ничего не удалил)
[code]
Закрыватель сессий: текущее время: 9/10/2004 16:47:6
Закрыватель сессий: поправленное на 5 минут время: 9/10/2004 16:42:6
SQL-запрос (SELECT) SELECT * FROM Sessions WHERE (ActionTimeMark<=#9/10/2004 16:42:6#);
||WorkstationIP||UserLogin||Rolename||StartTimeMark||ActionTimeMark||
SQL-запрос (MODIFY) DELETE FROM Sessions WHERE (ActionTimeMark<=#9/10/2004 16:42:6#);
Удалено сессий с таймаутом: 0
[code]
И всё бы ничего. если бы условные сессиии не были начаты час назад... Таймаут устати условнй, потом больше будет, но это уже детали.
Это проблема Access или просто надо ввести невынрвариваемую абракадабру для сравнения значений DateTime?
Вынужден использовать Access за неименеем возможности уговорить преподов ещё и субд левую поставить. с томкэтом я разобрался считайчто, но вот насчёт замены Access договориться это очень мааааловероятно. Принесёшь, а скажут у них места на серверемало или что пиратское не ставим....
ODBC для mysql не смог поставить, так что поставить преподов перед фактом не удастся.


 
sniknik ©   (2004-11-09 17:18) [1]

#9/10/2004 16:42:6#
что из выделенного месяц а что день? скажи сразу, точно не заглядывая в национальные настройки системы/jet-а и что подставляется из дельфей, тоже не смотря?
раз... два... три... поздно, уже ошибся. а jet пытается подобрать нужную дату если предполагается ошибочная (естественно нафиг это не нужно простым прогерам, только путает) плюс у него есть разные "особенности" связанные с автоприведением типов (в реальности значит одно и тоже может сработать а может и нет в зависимости от самих данных и разных других условий)

....
фигня это все, пользуйся параметрами для задания дат, и обойдеш все эти "проблемы" автоматом.


 
Волк-Призрак   (2004-11-09 17:52) [2]

Полный формат даты мне чтоли пользовать? Тоже в принципе вариант... попробую и скажу чем закончилось.
А вообще то было 9е октября - я в тот день впервые столкнулся с этой лажей:)


 
Волк-Призрак   (2004-11-09 18:10) [3]

Полный формат даты не канает - там нет времени.
вот если например мой сервлет будет писать дату-время так:
#9 окт 2004 г. 17:54:01#
он поймёт, что я от него хочу?
или такую дату надо непременно в апострофы ("одинарные кавычки" совать), которые глючат нещадно?


 
Johnmen ©   (2004-11-09 18:11) [4]

Читать умеешь ? Слово "параметр" знакомо ?


 
Волк-Призрак   (2004-11-09 20:52) [5]

И к выражениям "на ходу" и к выражениям в параметрах должны, по идее, применяиться одни и те же алгоритмы разбора строк.
Я покорпел малость и "нашел" другой вариант - разделил поле на два - время в одно положил, дату в другое. Всё заработало.
Теперь запросы выглядят так:
SELECT *  FROM Sessions WHERE (ActionDateMark<=#9/10/2004#) AND (ActionTimeMark<=#20:44:58#);
и
DELETE  FROM Sessions WHERE (ActionDateMark<=#9/10/2004#) AND (ActionTimeMark<=#20:44:58#);


 
Anatoly Podgoretsky ©   (2004-11-09 21:04) [6]

Волк-Призрак   (09.11.04 20:52) [5]
Какой разбор строк может быть с типом Дата, это же двоичные данные.


 
sniknik ©   (2004-11-09 22:09) [7]

ну почему не понимают ясного (вроде бы) толкования?
где, покажи, у меня про полный формат написано?

> Теперь запросы выглядят так:
ActionDateMark это откуда? в прошлых запросах переменная с датой не участвовала, естественно неполное условие не приводило к нужному результату.

Anatoly Podgoretsky ©   (09.11.04 21:04) [6]
> Какой разбор строк может быть с типом Дата, это же двоичные данные.
какой, какой, сколько раз видел в параметр для даты строку пихают... вот такой. ;(

наверное тоже гдето так написано. (у архангельского?) не нельзя все на него валить, но где? теряюсь в догадках.


 
Deniz ©   (2004-11-10 08:18) [8]

> Волк-Призрак   (09.11.04 20:52) [5]
>...
> Теперь запросы выглядят так:
> SELECT *  FROM Sessions WHERE (ActionDateMark<=#9/10/2004#)
> AND (ActionTimeMark<=#20:44:58#);
> и
> DELETE  FROM Sessions WHERE (ActionDateMark<=#9/10/2004#)
> AND (ActionTimeMark<=#20:44:58#);


А вот и неправильно, выбери ка 08/10/2004 + 22:00:00, ну или удали.


 
SergP ©   (2004-11-10 08:23) [9]


>  [5] Волк-Призрак   (09.11.04 20:52)
>
> ... WHERE (ActionDateMark<=#9/10/2004#) AND (ActionTimeMark<=#20:44:58#);


А ты уверен что у тебя условие соответствует первоначальному:
WHERE (ActionTimeMark<=#9/10/2004 16:42:6#);

например что будет если дата окажется меньше чем #9/10/2004#, а время больше чем  #20:44:58#  ???



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

Форум: "Базы";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.58 MB
Время: 0.06 c
1-1101895430
denis24
2004-12-01 13:03
2004.12.12
listbox->event


14-1101223336
ОлегЪ
2004-11-23 18:22
2004.12.12
Дизайн


3-1100428523
Megabyte
2004-11-14 13:35
2004.12.12
Не могу сделать запрос по вычисляемому полю


1-1101740956
Wolffgang
2004-11-29 18:09
2004.12.12
Взаимосвязь между числами


1-1101750137
Davinchi
2004-11-29 20:42
2004.12.12
PChar TO String





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский