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

Вниз

Не выполняется удаление из Access через ADO   Найти похожие ветки 

 
chsv ©   (2005-10-31 08:22) [0]

В своей программе я использую базу Access через ADO(ADO v2.7,WinXP Professional без SP, Access 2003, D5).
Пытаюсь выполнить следующий код:


Листинг 1:
----------
with FADOCommand do begin
 CommandText := "DELETE * FROM RcvValT WHERE DateTimeParam < "#10/29/200514:32:07"";
 Prepared := True;
 Execute();
end;


И -  нифига! :( То есть при выполнении запроса не пишется об ошибке, но удаление
не выполняется. Причем что интересно -- если в WHERE указать поле, например, целого типа
(не дата/время), то удаление выполняется!

Попробовал составить запрос в построителе запросов Access, скопировать его в свою программу.
Результат тот же -- не работает!

Из положения выкрутился следующим образом:


Листинг 2:
----------
with FADOCommand do begin
 CommandText := format(
       "DELETE * FROM RcvValsT "
     + "WHERE DateDiff("s","01.01.1970 0:0:0",[DateTimeParam]) < %d",
     [ Round((StrToDateTime("31.10.2005 12:10:07")
          - StrToDateTime("01.01.1970 0:0:0")) * 24 * 60 * 60)]);
 Prepared := True;
 Execute();
end;


Однако хотелось бы узнать -- можно ли все-таки удалить данные способом, представленным в Листинг 1? Что я делал не так или что нужно сделать, чтобы получилось так? ;))

Заранее благодарен.


 
chsv ©   (2005-10-31 08:24) [1]

Очепятка! :(( Личтинг 1 выглядит следующим образом:


Листинг 1:
----------
with FADOCommand do begin
CommandText := "DELETE * FROM RcvValT WHERE DateTimeParam < #10/29/2005 14:32:07";
Prepared := True;
Execute();
end;



 
chsv ©   (2005-10-31 08:26) [2]

:)))))))))))))))))))))))))))))))))))))))))))))))))


Листинг 1:
----------
with FADOCommand do begin
 CommandText := "DELETE * FROM RcvValT WHERE DateTimeParam < #10/29/2005 14:32:07#";
 Prepared := True;
 Execute();
end;


 
sniknik ©   (2005-10-31 08:46) [3]

chsv ©   (31.10.05 08:26) [2]
это должно работать. но для устранения разных недоразумений с путаницей дат замени строку с датой  на параметр.

то что путаница будет это точно, уже есть. так по русской настройке день идет первым, но если преобразование не состоялось аксесс меняет их местами. т.е. сейчас пока день 29 у тебя однозначная дата а вот при 11/01/2005 это уже будт не 1 число 11 месяца а 11 1го. при русских настройках.

Prepared := True;
это можно убрать. лишнее.


 
chsv ©   (2005-10-31 08:55) [4]

"Должно работать". Так не работате ведь, или, точнее, работает, но непарвильно. У меня такое впечателение, что дата понимается (раз сообщения об ошибке нет), но не так, как я задал ее.


 
chsv ©   (2005-10-31 08:59) [5]

Причем в моем-то случае (когда не работает) неоднозначности число-месяц нет


 
sniknik ©   (2005-10-31 09:15) [6]

> "Должно работать". Так не работате ведь, или, точнее, работает, но непарвильно.
значит ошибка за пределами показанного кода.

> У меня такое впечателение, что дата понимается (раз сообщения об ошибке нет), но не так, как я задал ее.
возможн. чтото типа такого я и предполагал под недоразумениями с путаницей дат.

> Причем в моем-то случае (когда не работает) неоднозначности число-месяц нет
форматов много, может вообще воспринимать дату не по григорианскому календарю...

вообще если используеш строку то хотябы формат выбери однозначный, вроде такого #2005-10-29 14:32:07#, и все одно меняй на параметр, они кроме того еще и быстрее работает.
(есть недоразумения и с ним, но это не от механизма параметров а от того что используется вариант для передачи...)


 
chsv ©   (2005-10-31 14:24) [7]

> вообще если используеш строку то хотябы формат выбери однозначный,
> вроде такого #2005-10-29 14:32:07#

Гм... А в формате 2005-10-29 месяц с числом нельзя перепутать что-ли? ;))


 
Anatoly Podgoretsky ©   (2005-10-31 14:36) [8]

chsv ©   (31.10.05 14:24) [7]
Ответ был про одназначность, а не про путаницу, а перепутать можно что угодно.


 
chsv ©   (2005-10-31 15:51) [9]

Однозначность -- от "одно значение". Путаница возникает все-таки когда значений может быть больше одного ;))) Так что все что угодно не перепутаешь. Например, когда что-то только одно. Не с чем путать... ;)) Он тоже не про однозначный формат говорит. Поэтому я так и ответил.


 
sniknik ©   (2005-10-31 16:30) [10]

> Гм... А в формате 2005-10-29 месяц с числом нельзя перепутать что-ли? ;))
а ты попробуй
SELECT #2005-10-29 14:32:07# - что сдесь
SELECT #2005-29-10 14:32:07# - и что сдесь

а потом, сравни это

SELECT #10/29/2005 14:32:07#, #29/10/2005 14:32:07#
а после скажи, можно перепутать?

просто твой вариант, зависящий от локализации/настроек, при путанице ты не получиш ошибок, а получиш логически неверные данные.
а мой (вообще то мой, это параметры, ну будем считать условно мой ;), более строгий (стандарт ODBC), и ты либо получаеш верно, либо "получаеш в нос"

> Так что все что угодно не перепутаешь.
ну да. а почему ты уже перепутал? вот настанет первое/2/3.../12 число(не 29-е) и проверь, что с твоим запросом.


 
sniknik ©   (2005-10-31 16:34) [11]

да. опять повторюсь, что это все
sniknik ©   (31.10.05 08:46) [3]
> ... при русских настройках.
будучи обладателем английской винда без MUI, или настроенной в английском стиле, все задано верно... до того момента пока программа не "перекочует" юзеру с русской настройкой.
вот это и есть неоднозначность. ;о))


 
chsv ©   (2005-10-31 16:37) [12]

про то, что если число 29, ясно, что с месяцем его не перепутаешь!


 
chsv ©   (2005-10-31 16:39) [13]

а про то, что 2005-01-02 -- второе января это или первое февраля -- вопрос открытый.... ;))


 
sniknik ©   (2005-10-31 16:57) [14]

> а про то, что 2005-01-02 -- второе января это или первое февраля -- вопрос открытый.... ;))
для тебя может быть. но вообще закрытый, это однозначно(!!!) 1 января 2 число.

по моему ты не пробовал предлагаемых запросов... а вот в случае с локализацией это зависит от многих факторов.
p.s. в четвертый раз повторять не буду.


 
chsv ©   (2005-11-01 07:41) [15]

> для тебя может быть. но вообще закрытый, это однозначно(!!!) 1 января 2 > число.

Кто это узаконил, можно узнать? Ты? ;)))


 
sniknik ©   (2005-11-01 07:49) [16]

sniknik ©   (31.10.05 16:30) [10]
> ... более строгий (стандарт ODBC) ...


 
app ©   (2005-11-01 09:09) [17]

chsv ©   (01.11.05 07:41) [15]
Будешь огрызаться - ветку закрою.


 
chsv ©   (2005-11-01 09:37) [18]

да пожалуйста


 
chsv ©   (2005-11-01 09:41) [19]

Удалено модератором
Примечание: Мат и нападки на модератора, три дня РО


 
chsv ©   (2005-11-01 09:43) [20]

Удалено модератором


 
chsv ©   (2005-11-01 09:44) [21]

Удалено модератором



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

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

Наверх




Память: 0.5 MB
Время: 0.016 c
2-1132992605
312Kbps
2005-11-26 11:10
2005.12.18
TWebBrowser


3-1130535212
Германн
2005-10-29 01:33
2005.12.18
Unavalable resource


2-1132729216
irishka001
2005-11-23 10:00
2005.12.18
Заблокировать запуск программы


2-1133367276
gan
2005-11-30 19:14
2005.12.18
Находимтся ли файл в папке


2-1133762488
XProger
2005-12-05 09:01
2005.12.18
Позиция курсора в консоли





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