Проблема заключается в следующем:
При нажатии кнопки вызывается форма редактирования выделенной записи
В обработчике события FormShow(TObject *Sender) производится чтение значений из базы данных и запись их в компоненты формы.
Код: Выделить всё
void __fastcall TFormEdit::FormShow(TObject *Sender)
{
int CurrItem;
AnsiString NoFurmText;
NoFurmText = FormMain->IBDataSet1->FieldByName("NO_FURM")->AsString;
DT_Input->Date = FormMain->IBDataSet1->FieldByName("DT_INPUT")->AsDateTime;
DT_Output->Date = FormMain->IBDataSet1->FieldByName("DT_OUTPUT")->AsDateTime;
MemPrich->Text = FormMain->IBDataSet1->FieldByName("PRICH_ZAMENI")->AsString;
MemNotes->Text = FormMain->IBDataSet1->FieldByName("NOTES")->AsString;
for(int i=0; i<CBNoFurm->Items->Count; i++)
if(CBNoFurm->Items->Strings[i] == NoFurmText)
CBNoFurm->ItemIndex = i;
}
Подобная вещь происходит и при удалении записи - удаляется только первая запись, не зависимо от того какая запись виделена. И в добавок изменения после удаления записи становятся видемыми только после выполнения запроса "select * from Table".
Код: Выделить всё
void __fastcall TFormEdit::BDelete1Click(TObject *Sender)
{
FormMain->IBDataSet1->Delete();
FormMain->Transaction->CommitReference();
// FormMain->IBDataSet1->Post(); - Ругается
}
Код: Выделить всё
void __fastcall TFormEdit::BApplyClick(TObject *Sender)
{
if(CBNoFurm->Text != "")
{
FormMain->IBDataSet1->Edit();
FormMain->IBDataSet1->FieldByName("NO_FURM")->AsString = CBNoFurm->Text;
FormMain->IBDataSet1->FieldByName("DT_INPUT")->AsDateTime = DT_Input->Date;
FormMain->IBDataSet1->FieldByName("DT_OUTPUT")->AsDateTime = DT_Output->Date;
FormMain->IBDataSet1->FieldByName("PRICH_ZAMENI")->AsString = MemPrich->Text;
FormMain->IBDataSet1->FieldByName("NOTES")->AsString = MemNotes->Text;
FormMain->IBDataSet1->Post();
}
else
ShowMessage("Не задан номер фурмы");
}
Код: Выделить всё
TDateTimePicker *DT_Input;
TDateTimePicker *DT_Output;
TMemo *MemPrich;
TMemo *MemNotes;
TComboBox *CBNoFurm;
В главной форме используются компоненты
Код: Выделить всё
TDBGrid *DBGrid1;
TDataSource *DSQuery;
TIBQuery *IBQuery1;
TIBDatabase *IBDatabase1;
TIBTransaction *IBTransaction1;
TIBDataSet *IBDataSet1;