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

Вниз

IB и FIB по разному реагируют на SQL-запрос?   Найти похожие ветки 

 
fedor   (2006-02-03 00:06) [0]

Подскажите плиз.В чем дело?
Фрагмент текста, используеся компонент FIBPlus:

FIBTable.Close;
FIBTable.SelectSQL.Clear;
SQLdelcom:="delete from AnyTable where KDATE=""+DateTimeToStr(kdat)+""";
FIBTable.SelectSQL.Add(SQLdelcom);
FIBTable.Open;

Выдает ошибку, что не может найти поле из этой же таблицы, по  которому идет связь с мастер. Если этот же код под управлением InterBase-компонентов работает отлично.


 
ЮЮ ©   (2006-02-03 03:06) [1]

Что, интересно можно "наблюдать" в FIBTable, у которой
FIBTable.SelectSQL = "delete from AnyTable where ..."; ?

Для удаления существует DeleteSQL, текст которого должен быть параметрическим запросом, параметры которого должны называться специальным образом и запрос должен удалять РОВНО одну - текущую - запись, т.е. в where должны стоять исключительно ключевое поле (поля).
Для удаления группы записей следует использовать отдельный запрос, а не вшитые в FIBDataSet, а после его выполнения переоткрыть FIBDataSet.


> Если этот же код под управлением InterBase-компонентов работает
> отлично.

Этот код не может работать отлично по определению


 
fedor   (2006-02-03 07:25) [2]

Но он работает. Что он может делать неправильно если он удаляет?


 
ЮЮ ©   (2006-02-03 07:31) [3]


> Что он может делать неправильно если он удаляет?

Что же правильного в том, что пытась открыть набор данных мы вместо Набора Данных  на клиенте посылаем команду на сервер "Удалить записи". Это что, система безопасности такая? Типа, чтобы никто ничего не увидел :)


 
fedor   (2006-02-03 07:44) [4]

В IBX в DBGride выделяю запись и нажимаю на кнопку удалить в которой вышеуказанный код. Запись удаляется и это сразу видно в сетке. Никаких последствий и ни каких ошибок. Что неправильного кроме самого понятия? Если не трудно подскажите плиз как сделали бы Вы?


 
ЮЮ ©   (2006-02-03 07:57) [5]

А в гриде что отображается? Та саамая  FIBTable, что в приведенном коде? Неверю.


> как сделали бы Вы?

FIBDataSet.Delete;
где FIBDataSet - тот самый, который отображается в гриде, а в DeleteSQL которого было бы написано что-то типа
DELETE FROM AnyTable where Id = :Id_OLD


 
DSKalugin ©   (2006-02-03 11:33) [6]

SelectSQL предназначен только для запросов, основанных на Select
А чтобы удалить запись
FIBQuery

FIBQuery1.Close;
FIBQuery1.SQL.Clear;
FIBQuery1.SQL.Add("delete from AnyTable where KDATE= """+DateTimeToStr(kdat)+"""");
FIBQuery1.ExecQuery;



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

Текущий архив: 2006.03.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.062 c
3-1138789349
chili
2006-02-01 13:22
2006.03.26
Подскажите как мне создать отчет с помошью QReport


15-1141191597
Ega23
2006-03-01 08:39
2006.03.26
Не високосный, но всё-таки: С Днём рождения! 29 февраля


2-1142333201
Sonnetrut
2006-03-14 13:46
2006.03.26
База данных - файл Excel


6-1134327682
ZeFiR
2005-12-11 22:01
2006.03.26
Собственные страницы ошибок в TWebBrowser


15-1141179757
Little)Lamer
2006-03-01 05:22
2006.03.26
проблема с аутпостом