Главная страница
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.47 MB
Время: 0.035 c
1-1155211730
Igor_thief
2006-08-10 16:08
2006.09.24
Работа с браузером


1-1155316602
wipr
2006-08-11 21:16
2006.09.24
Как изменить определенный байт в файле


3-1153791151
Adler
2006-07-25 05:32
2006.09.24
Обработка исключений при POST


2-1157412618
Fly`
2006-09-05 03:30
2006.09.24
запустить приложение сразу в tray


15-1157346728
Тыгыдым
2006-09-04 09:12
2006.09.24
DLL не работает :(