IBDataSet проблема добавления

 
0
 
C++
ava
MMihan | 10.04.2013, 09:12
Добрый день!
Выходит ошбика при добвление записи  empty query, пробываел по разному , выходят другие ... ошибки, Подскажите пожалуста как должно быть (последовать кода при доваление  записи)
Fireberd 2.5   Создана таблица  через IBExpert
на форме лежит DBGrid  при создание формы выполняется


void __fastcall TOrg::FormShow( TObject * Sender )
{
    DM->IBDataSet1->Close( );
        DM->IBDataSet1->SelectSQL->Add
        ( "SELECT ORG_ID, ORG_NAME,ORG_RUKOVOD,ORG_INN, ORG_KPP,ORG_ADRES,ORG_OGRN,ORG_TEL,ORG_PREDSTAV FROM ORG");
    
    DM->IBDataSet1->Open( );
    LinkLabel1->Color == Edit1->Color;
}


На форме есть кнопка Add для открытие другой формы что бы добавлять новую запись.

добавляется через Edit  и нажимется кнока Сохранить ...

По кноке Сохранить  выполняется следуюший код

void __fastcall TAdd_ORG::BitBtn1Click( TObject * Sender )
{

            DM->IBDataSet1->SelectSQL->Clear( );

            DM->IBDataSet1->InsertSQL->Add
        ( " insert into ORG (ORG_NAME,ORG_RUKOVOD,ORG_INN, ORG_KPP,ORG_ADRES,ORG_OGRN,ORG_TEL,ORG_PREDSTAV)");
            DM->IBDataSet1->InsertSQL->Add
        ( " values (:ORG_NAME,:ORG_RUKOVOD,:ORG_INN, :ORG_KPP,:ORG_ADRES,:ORG_OGRN,:ORG_TEL,:ORG_PREDSTAV)");
            
            DM->IBDataSet1->ExecSQL( );

            DM->IBDataSet1->ParamByName( "ORG_NAME" )->AsString = Name_E->Text;
            DM->IBDataSet1->ParamByName( "ORG_RUKOVOD" )->AsString =Rukovod_E->Text;
            // DM->IBDataSet1->ParamByName( "ORG_INN" )->AsInteger = StrToInt(INN_E1->Text);
            // DM->IBDataSet1->ParamByName( "ORG_KPP" )->AsInteger = StrToInt(KPP_E->Text);
            // DM->IBDataSet1->ParamByName( "ORG_ADRES" )->AsString = Adres_E->Text;
            // DM->IBDataSet1->ParamByName( "ORG_OGRN" )->AsInteger = StrToInt(OGRN_E->Text);
            // DM->IBDataSet1->ParamByName( "ORG_TEL" )->AsString = Tel_E->Text;
            // DM->IBDataSet1->ParamByName( "ORG_PREDSTAV" )->AsString = Predstav_E->Text;
            DM->IBDataSet1->Post( );
        
            DM->IBTransORG->StartTransaction( );
            DM->IBTransORG->Commit( );
            DM->IBTransORG->Active = false;
    
}




Comments (1)
ava
Riviero | 16.04.2013, 09:53 #


Цитата (MMihan @  10.4.2013,  08:12 findReferencedText)
    DM->IBTransORG->StartTransaction( );


Это начало транзакции, должно быть написано до внесения изменений. (До Post и Exec)


Цитата (MMihan @  10.4.2013,  08:12 findReferencedText)
    DM->IBTransORG->Commit( );


Применение транзакции. Пишется после внесения данных в базу (происходит сама запись).

А у тебя получается, что ничего туда и не пишется. Точнее пишется, но без транзакций. Либо убери эти 2 строчки, либо переставь начало транзакции.

Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  Riviero   MMihan
advanced
Submit