Firedac附加函数未在数据集上创建新记录,而是修改了record

问题描述 投票:0回答:0

对于我的实习,我正在使用C ++构建器开发一个简单的仅Windows的应用程序12.

该应用程序用于使用接口进行一些简单的碎屑。我正在使用SQLite作为数据库,也将FireDac作为数据库,尽管这可能无关紧要。

该应用程序分为2个主要菜单,其中一个似乎不遵守相同的规则。

image 当我单击“ Nouvelle Rallonge”(新扩展名)或“ Nouveau Tube”(New Tube)时,我将调用另一个窗口以及右表上的

Append()

,然后填充所需字段I

Post() 
iT.
问题是

Append()

行动很奇怪。在该应用程序的其余部分中,它按预期工作。但是在这里,它获得了数据库中已经存在的条目的值(在

TDBGrid
中显示),我可以对其进行修改,但我无法创建一个新的条目。

imagei使用相同的窗口“架构”(即:使用TDBEdit

)和代码逻辑作为其工作原理的其他页面。

在这里是导致问题的代码:

2nd主页:

//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "menuApp.h" #include "menuRallonges.h" #include "datamodule.h" #include "gestionRallonge.h" #include "gestionTube.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TFMenuRallonges *FMenuRallonges; extern bool isEditing; //--------------------------------------------------------------------------- __fastcall TFMenuRallonges::TFMenuRallonges(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TFMenuRallonges::btRallongeClick(TObject *Sender) { TFRallonge *FRallonge = new TFRallonge(this); short res = FRallonge->ShowModal(); delete FRallonge; } //--------------------------------------------------------------------------- void __fastcall TFMenuRallonges::btTubeClick(TObject *Sender) { TFTube *FTube = new TFTube(this); short res = FTube->ShowModal(); delete FTube; } //--------------------------------------------------------------------------- void __fastcall TFMenuRallonges::FormShow(TObject *Sender) { DataModule1 = new TDataModule1(this); isEditing=false; DBGrid1->DataSource->DataSet->Refresh(); DBGrid2->DataSource->DataSet->Refresh(); } //--------------------------------------------------------------------------- void __fastcall TFMenuRallonges::btModifRallongeClick(TObject *Sender) { isEditing=true; btRallongeClick(this); FormShow(this); } //--------------------------------------------------------------------------- void __fastcall TFMenuRallonges::btModifTubeClick(TObject *Sender) { isEditing=true; btTubeClick(this); FormShow(this); } //--------------------------------------------------------------------------- void __fastcall TFMenuRallonges::FormDestroy(TObject *Sender) { if (DataModule1 != nullptr) { delete DataModule1; DataModule1 = nullptr; } } //--------------------------------------------------------------------------- void __fastcall TFMenuRallonges::FormClose(TObject *Sender, TCloseAction &Action) { FormDestroy(this); } //---------------------------------------------------------------------------

管页面:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "datamodule.h"
#include "menuRallonges.h"
#include "gestionTube.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFTube *FTube;
extern bool isEditing;
//---------------------------------------------------------------------------
__fastcall TFTube::TFTube(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TFTube::Button1Click(TObject *Sender)
{
    Button1->SetFocus();
    try {
        DataModule1->TubevideTable->Post();
    }
    catch (const Exception &E) {
        ShowMessage("Erreur lors de l'insertion : " + E.Message);
    }
}
//---------------------------------------------------------------------------

void __fastcall TFTube::FormShow(TObject *Sender)
{

    if (isEditing==true) {
//      ShowMessage("editing true");
    }
    else
    {
//      ShowMessage("editing false");
//      DataModule1->TubevideTable->Last();
        DataModule1->TubevideTable->Append();

    }

}
//---------------------------------------------------------------------------
void __fastcall TFTube::Button2Click(TObject *Sender)
{
    DataModule1->TubevideTable->Cancel();
}
//---------------------------------------------------------------------------

我真的不知道是什么原因造成的,所以如果您有任何想法,请告诉我。

@@remylebeau说,创建datamodule1的新实例是可疑的。即使在另一页上运行良好,我真的不知道为什么,但另一方面它导致了本文的错误。我只是从功能中删除了线,现在一切都很好,谢谢大家!

c++ c++builder vcl firedac c++builder-12-athens
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.