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

Вниз

IBX и DeleteSQL()   Найти похожие ветки 

 
londinium   (2006-07-23 15:17) [0]

День добрый,Господа!

Работаю с БД FireBird 1.5 SS c помощью IBX(C++Builder 6.0 SP4).Пишу код на удаление записи из таблицы так:


IBDataSet1->Close();
 IBDataSet1->DeleteSQL->Clear();
 IBDataSet1->DeleteSQL->Add("delete from refworkers where ID=:ID");

 IBDataSet1->Open();
 IBDataSet1->Delete();
 IBDataSet1->FieldByName("ID")->AsInteger=5;
 try
 {
   IBDataSet1->Post();
   IBTransaction1->Commit();
   IBDataSet1->Close();
   MessageBox(0,"Запись удалена","ИНФОРМАЦИЯ",MB_ICONINFORMATION);
 }
 catch(...)
 {
   MessageBox(0,"Ошибка удаления записи", "ОШИБКА",MB_ICONSTOP);
   IBTransaction1->Rollback();
   IBDataSet1->Close();

 }

Получаю по морде исключением "Not in edit mode". Вопрос: как встать в edit mode и удалить эту запись


 
Desdechado ©   (2006-07-23 15:21) [1]

Post нужен только после Edit или Insert или Append
У тебя этого ничего нет, на кой Post?
А что за присваивание пятерки после удаления строки?


 
Johnmen ©   (2006-07-23 16:06) [2]


> londinium   (23.07.06 15:17)


Т.е. вот так вот берём и удаляем непонятно какую запись, не обращая внимания, что и её может не быть????????????????


 
jack128 ©   (2006-07-23 19:03) [3]

londinium   (23.07.06 15:17)
Пишу код на удаление записи из таблицы так:

видимо ты не совсем представляешь, что такое TIBDataset. Точнее СОВСЕМ не представляешь.
метод IBDataSet1->Delete(); удаляет ТЕКУЩУЮ запись. Вот это IBDataSet1->FieldByName("ID")->AsInteger=5; - не на что не влияет.

Твой код нужно переделать примерно так
procedure DeleteRefWorker(AID: Integer);
var
 SQL: TIBSQL;
 InTransaction: boolean;
begin
 SQL := TIBSQL.Create(nil);
 try
   SQL.Database := MainDataModule.db;
   SQL.Transaction := MainDataModule.RWTransaction;
   SQL.SQL.Text := "delete from refworkers where ID=" + IntToStr(AID);
   InTransaction := SQL.Transaction.InTransaction;
   if not InTransaction then
     SQL.Transaction.StartTransaction;
   try
     SQL.ExecQuery;
   finally
     if not InTransaction then
       SQL.Transaction.Commit;
   end;
 finally
   SQL.Free;
 end;
end;


 
londinium   (2006-07-23 22:07) [4]

Здравствуйте!
Всем спасибо за ответы.Сейчас попробую.



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

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

Наверх




Память: 0.45 MB
Время: 0.046 c
15-1157053384
R0NYN
2006-08-31 23:43
2006.09.24
Форум Microsoft весна 2006


2-1157354134
Mamochka
2006-09-04 11:15
2006.09.24
Как посчитать сколько прошло ГГГГ.ММ.ДД


1-1155217393
xen
2006-08-10 17:43
2006.09.24
работа с файлами


2-1157015523
***mikle***
2006-08-31 13:12
2006.09.24
Создание динамических объектов


15-1156905876
X9
2006-08-30 06:44
2006.09.24
Выбор стиральной машины





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский