Главная страница
    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.04 c
10-1122963978
alles
2005-08-02 10:26
2006.09.24
Юзера и сервер COM


15-1157621569
Delphi basic
2006-09-07 13:32
2006.09.24
Кто как придумывает названия разрабатываемым программам?


11-1132663743
BaryV
2005-11-22 15:49
2006.09.24
Как скрыть у TabControl вкладки?


15-1156963858
R0NYN
2006-08-30 22:50
2006.09.24
Что лучше?


3-1153126192
nkolya
2006-07-17 12:49
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский