Форум: "Базы";
Текущий архив: 2010.03.14;
Скачать: [xml.tar.bz2];
ВнизDelphi компоненты не хотят работать с пустыми полями Найти похожие ветки
← →
Faiwer © (2009-03-02 15:11) [0]В общем есть база InterBase (Firebird 2.0). Приложение нормально работает с непустыми полями и записями. но если в записи есть хоть 1 пустое поле делфи отказывается с ним работать... точнее компоненты имитируют видимость того что они удаляют запись, редактируют её и прочее, но на деле ничего не происходит, достаточно обновить запрос =)
вот SQL коды для редактирования, и удаления
update PERSONAL
set
FIO = :FIO,
EXP = :EXP
where
FIO = :OLD_FIO and
EXP = :OLD_EXP
insert into PERSONAL
(FIO, EXP)
values
(:FIO, :EXP)
В остальных таблицах тоже самое. (ID записи указывается триггером на самом сервере).
Использую связку TIBDatabase => TIBTranslocation => TIBDataset => TDataSource => TDBGrid + TDBNavigator
← →
Anatoly Podgoretsky © (2009-03-02 15:19) [1]Не имеет отношения к Дельфи
Не видать ничео про удаления
Не забывай обновлять после удаления, изменения и вставки.
← →
faiwer © (2009-03-02 15:25) [2]delete from PERSONAL
where
FIO = :OLD_FIO and
EXP = :OLD_EXP
вот удаление.. не заметил вставил про INSERT =)
Насчёт не имеет отношение к Delphi ничего не понял... дык IB Expert удаляет и редактирует всё прекрасно... а в делфи умня не получается, соотвественно я или настроил коряво или сами запросы неправильные. имхо прямое отношение к моим кри... рукам и к делфи =)
> Не забывай обновлять после удаления, изменения и вставки.
можно с этого момента поподробнее? использовать метод POST?
← →
Sergey13 © (2009-03-02 15:32) [3]> [0] Faiwer © (02.03.09 15:11)
Потому что пустое поле это NULL, а любое сравнение с NULL бессмысленно. Можно только проверять на NULL.
Тебе нужно нормальный ключ создать в таблице.
← →
faiwer © (2009-03-02 15:49) [4]а у меня есть ключ. например для етой же таблицы
ID_PERSONAL - int NOT_NULL PKey
я для него триггер писал в IB Expert... и если в запросе сделать так:
update PERSONAL
set
ID_PERSONAL = :ID_PERSONAL,
FIO = :FIO,
EXP = :EXP
where
ID_PERSONAL = :OLD_ID_PERSONAL and
FIO = :OLD_FIO and
EXP = :OLD_EXP
то он ругается... точнее ругался, щас почему то перестал. но пустые поля всё равно не редактирует =(
← →
Sergey13 © (2009-03-02 15:55) [5]> [4] faiwer © (02.03.09 15:49)
> у меня есть ключ
Но что это такое и с чем его едят ты не разобрался.
> update PERSONAL
> set
> ID_PERSONAL = :ID_PERSONAL,
> FIO = :FIO,
> EXP = :EXP
> where
> ID_PERSONAL = :OLD_ID_PERSONAL and
> FIO = :OLD_FIO and
> EXP = :OLD_EXP
Зачем
set ID_PERSONAL = :ID_PERSONAL
Ты собираешься менять ключевое поле?
Зачем
and
FIO = :OLD_FIO and
EXP = :OLD_EXP
Если ID_PERSONAL = :OLD_ID_PERSONAL судя по всему однозначно должно определять запись.
← →
faiwer © (2009-03-02 15:57) [6]ааа понял.. надо так:
update PERSONAL
set
ID_PERSONAL = :ID_PERSONAL,
FIO = :FIO,
EXP = :EXP
where
ID_PERSONAL = :OLD_ID_PERSONAL
спс... пока вопрос снят =)
← →
faiwer © (2009-03-02 15:59) [7]хм.. одновременно написали.. а ведь и вправду менять ключевое поле смысла 0... я и не заметил =)
update PERSONAL
set
FIO = :FIO,
EXP = :EXP
where
ID_PERSONAL = :OLD_ID_PERSONAL
вот ето наверно окончательный вариант...надеюсь етот код без косяков? =))))
← →
Anatoly Podgoretsky © (2009-03-02 16:17) [8]> faiwer (02.03.2009 15:25:02) [2]
Если OLD_FIO или OLD_EXP будут равны NULL то о каком удаление можно говорит, поскольку условие будет равно FALSE
← →
Anatoly Podgoretsky © (2009-03-02 16:19) [9]> Sergey13 (02.03.2009 15:55:05) [5]
Менять ключевое поле нормальное явление, но вот менять ИД бессмысленно и очень вредно.
← →
Anatoly Podgoretsky © (2009-03-02 16:20) [10]> faiwer (02.03.2009 15:59:07) [7]
Да нормально, поскольку это поле NOT NULL
← →
Petr V. Abramov © (2009-03-02 19:03) [11]
> faiwer © (02.03.09 15:25) [2]
> delete from PERSONAL
> where
> FIO = :OLD_FIO and
> EXP = :OLD_EXP
еще заметь, что так делать категорическаи нельзя, потому что удалится не конкретный Петров, которого ты пытаешься редактировать, а все Петровы
← →
faiwer © (2009-03-02 20:23) [12]ага, спс... я уже вроде разобрался =)
← →
StriderMan (2009-03-03 17:41) [13]А транзакцию подтвердить не забываешь?
← →
faiwer © (2009-03-03 22:07) [14]StriderMan вопрос уже решён =)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2010.03.14;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c