![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Delphi компоненты не хотят работать с пустыми полями [D7, MySQL, Firebird 2]
Faiwer © (2009-03-02 15:11:00)В общем есть база 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
faiwer (2009-03-03 22:07:00) [1]StriderMan вопрос уже решён =)
StriderMan (2009-03-03 17:41:00) [2]А транзакцию подтвердить не забываешь?
faiwer (2009-03-02 20:23:00) [3]ага, спс... я уже вроде разобрался =)
Petr V. Abramov (2009-03-02 19:03:00) [4]
> faiwer © (02.03.09 15:25) [2]
> delete from PERSONAL
> where
> FIO = :OLD_FIO and
> EXP = :OLD_EXP
еще заметь, что так делать категорическаи нельзя, потому что удалится не конкретный Петров, которого ты пытаешься редактировать, а всеПетровы
Anatoly Podgoretsky (2009-03-02 16:20:00) [5]> faiwer (02.03.2009 15:59:07) [7]
Да нормально, поскольку это поле NOT NULL
Anatoly Podgoretsky (2009-03-02 16:19:00) [6]> Sergey13 (02.03.2009 15:55:05) [5]
Менять ключевое поле нормальное явление, но вот менять ИД бессмысленно и очень вредно.
Anatoly Podgoretsky (2009-03-02 16:17:00) [7]> faiwer (02.03.2009 15:25:02) [2]
Если OLD_FIO или OLD_EXP будут равны NULL то о каком удаление можно говорит, поскольку условие будет равно FALSE
faiwer (2009-03-02 15:59:00) [8]хм.. одновременно написали.. а ведь и вправду менять ключевое поле смысла 0... я и не заметил =)
update PERSONAL
set
FIO = :FIO,
EXP = :EXP
where
ID_PERSONAL = :OLD_ID_PERSONAL
вот ето наверно окончательный вариант...надеюсь етот код без косяков? =))))
faiwer (2009-03-02 15:57:00) [9]ааа понял.. надо так:
update PERSONAL
set
ID_PERSONAL = :ID_PERSONAL,
FIO = :FIO,
EXP = :EXP
where
ID_PERSONAL = :OLD_ID_PERSONAL
спс... пока вопрос снят =)
Sergey13 (2009-03-02 15:55:00) [10]> [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:49:00) [11]а у меня есть ключ. например для етой же таблицы
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:32:00) [12]> [0] Faiwer © (02.03.09 15:11)
Потому что пустое поле это NULL, а любое сравнение с NULL бессмысленно. Можно только проверять на NULL.
Тебе нужно нормальный ключ создать в таблице.
faiwer (2009-03-02 15:25:00) [13]delete from PERSONAL
where
FIO = :OLD_FIO and
EXP = :OLD_EXP
вот удаление.. не заметил вставил про INSERT =)
Насчёт не имеет отношение к Delphi ничего не понял... дык IB Expert удаляет и редактирует всё прекрасно... а в делфи умня не получается, соотвественно я или настроил коряво или сами запросы неправильные. имхо прямое отношение к моим кри... рукам и к делфи =)
> Не забывай обновлять после удаления, изменения и вставки.
можно с этого момента поподробнее? использовать метод POST?
Anatoly Podgoretsky (2009-03-02 15:19:00) [14]Не имеет отношения к Дельфи
Не видать ничео про удаления
Не забывай обновлять после удаления, изменения и вставки.