Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.14;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.019 c
2-1263455773
petr
2010-01-14 10:56
2010.03.14
Помогите с ошибкой разобраться


2-1263067969
novichek
2010-01-09 23:12
2010.03.14
определение максимально размера шрифта


2-1263028060
alexbor777
2010-01-09 12:07
2010.03.14
Отчет по ПК


2-1263269002
Умник
2010-01-12 07:03
2010.03.14
Различаются ли коды не стандартных клавиатур?


1-1233316055
alexvan
2009-01-30 14:47
2010.03.14
Вопрос по работе компонента TDBGrid