Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Удаление ключевого поля типа Date


Автор: Yagmort 19.3.2010, 02:55
Народ поскажите плиз, все перекапал и не нашел, такого ньюанса:
у меня есть таблица родительская и дочерняя, идет связь 1(родительской):n(дочерней),  дочерняя таблица соответсвенно получает id -шник родительской соответственно, и я ещё добавил для эксперимента поле типа data (чтоб хранить историю), добавлять запись полчается, а вот удалять и редактировать нет. Может кто сталкивался с данной проблемой. Я перепробовал все свои приемы, и не смог... Подскажите запрос, кому не лень (
Код


    DM.ADOCommand.CommandText:='DELETE FROM sl WHERE ndl=:ndll and idp=:id';
    DM.ADOCommand.Parameters.ParamByName('ndll').Value:=DM.ADOQLndl.value;
    DM.ADOCommand.Parameters.ParamByName('id').Value:=dm.ADOQLidp.Value;
    DM.ADOCommand.Execute; 


Ну это один из моих запросов и не канает :(

ndl - поле типа дата

idp - всегда равно одному и тому же числу при любом количестве записей. 
уникальна только дата.

Причем ошибку он не выдает, СУБД MySQL. 


Автор: Deniz 19.3.2010, 06:22
Цитата(Yagmort @  19.3.2010,  04:55 Найти цитируемый пост)
Ну это один из моих запросов и не канает :(
Что значит не канает?
Цитата(Yagmort @  19.3.2010,  04:55 Найти цитируемый пост)
Причем ошибку он не выдает, СУБД MySQL. 
Вероятно проблемы с конвертацией даты в нужный (для MySQL) формат или в СУБД тип поля дата+время а передаешь только дату, вот и не удаляет.
Обычно создают первичный ключ (какой-нибудь автоикремент), а id-шник родителя + дата это уникальный индекс и все удаления/обновления по первичному ключу.

Автор: Yagmort 19.3.2010, 09:12
Цитата(Deniz @ 19.3.2010,  06:22)
Цитата(Yagmort @  19.3.2010,  04:55 Найти цитируемый пост)
Ну это один из моих запросов и не канает :(
Что значит не канает?
Цитата(Yagmort @  19.3.2010,  04:55 Найти цитируемый пост)
Причем ошибку он не выдает, СУБД MySQL. 
Вероятно проблемы с конвертацией даты в нужный (для MySQL) формат или в СУБД тип поля дата+время а передаешь только дату, вот и не удаляет.
Обычно создают первичный ключ (какой-нибудь автоикремент), а id-шник родителя + дата это уникальный индекс и все удаления/обновления по первичному ключу.

Ну не знаю как, там с переводом даты в MySQL, но при точке останова он мне параметры верные выдает. 
Ну про автоинкремент, я уже говорил, что это нужно для истории, а мне надо именно удалять по дате.

Автор: Deniz 19.3.2010, 09:44
Цитата(Yagmort @  19.3.2010,  11:12 Найти цитируемый пост)
мне надо именно удалять по дате.
а запрос удалениея по дате в тулзе администрирования работает?
Попробуй, в качестве эксперимента, при удалении для даты задать период в 1 день, >= сегодня and < завтра

Автор: Yagmort 19.3.2010, 18:20
DM.ADOCommand.Parameters.ParamByName('ndll').Value:=formatdatetime('yyyy-mm-dd', DM.ADOQLndl.value);
если кому понадобится  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)