Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.063 c
15-1141411309
Лёха
2006-03-03 21:41
2006.03.26
MiniExel на паскале ;)


1-1140602850
denis24
2006-02-22 13:07
2006.03.26
перенос картинки из одного Timage в другой


2-1142339389
Fenix
2006-03-14 15:29
2006.03.26
Создание разделителя между RichEdit ами.


2-1141984134
Van
2006-03-10 12:48
2006.03.26
Площадь многогранника


2-1142168978
Golik
2006-03-12 16:09
2006.03.26
Как указать путь к БД ????





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский