FireDac VCL - Добавление мастер -записного перерыва.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 FireDac VCL - Добавление мастер -записного перерыва.

Сообщение Anonymous »

Контекст:
  • Я использую 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
    ),
… Но либо post () не работает, дисплей не возвращается, либо ничего не происходит.

Код: Выделить всё

///"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");
}

Я также попытался сбросить Mastersource в nullptr и восстановить его после, но это часто заставляет данные исчезать или полностью сбить синхронизацию.) без нарушения связанной детали Display (

Код: Выделить всё

Chargement
)?

Подробнее здесь: https://stackoverflow.com/questions/795 ... le-display
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»