- Я использую c ++ Builder vcl с firedac .
- Я имею два таблица: recette (рецепт) и Charement (загрузка). Таблица подробностей , связанная с Recette через поле ID_RECETTE .
- Свойства Mastersource и Masterfields устанавливаются в IDE, и все отображаются правильно на первом. DataSources и Dbgrids, используемые для отображения значений, находятся в одной и той же форме.
задача:
в таблице Recette Для создания нового рецепта, связанная склонная к набору данных визуально или теряет синхронизацию .
, когда я позже пытаюсь вызовать post () , я иногда получаю ошибку:
. not in edit or insert mode"
I've tried:
- Temporarily disabling MasterSource,
- Using DisableControls() / EnableControls(),
- Вызовой locate () после публикации,
- Принуждение rebresh () в подробном наборе данных (),
Код: Выделить всё
Chargement
Код: Выделить всё
///"new" button click
void __fastcall TFMenuChargement::btRecetteClick(TObject* Sender)
{
New(dsRecette, GroupBox4);
}
///function to create the record
void __fastcall TFMenuChargement::New(TDataSource *ds, TGroupBox *gb)
{
ds->DataSet->Open();
ds->DataSet->Append();
gb->Caption = "Nouveau";
gb->SetFocus();
}
///"validate" button click
void __fastcall TFMenuChargement::btRecValiderClick(TObject* Sender)
{
//TFDTable* tableChargement = static_cast(dsChargement->DataSet);
//TFDTable* tableRecette = static_cast(dsRecette->DataSet);
//int lastId = tableRecette->FieldByName("UID_RECETTE")->AsInteger;
//tableChargement->MasterSource = nullptr;
//tableChargement->DisableControls();
Validate(dsRecette);
//tableRecette->Locate("UID_RECETTE", lastId, TLocateOptions());
//tableChargement->MasterSource = dsRecette;
//tableChargement->EnableControls();
//tableChargement->Refresh();
}
///function to post changes
void __fastcall TFMenuChargement::Validate(TDataSource *ds)
{
ds->DataSet->Open();
try {
ds->DataSet->Post();
} catch (const EDatabaseError &e) {
return;
} catch (const Exception &E) {
ShowMessage("Erreur lors de l'insertion : " + E.Message);
return;
}
ShowMessage("Modifications enregistrées");
}
Код: Выделить всё
RecetteКод: Выделить всё
ChargementПодробнее здесь: https://stackoverflow.com/questions/795 ... le-display
Мобильная версия