Hi, I rewrite my old problem because my old messages were lost due my mail modification.
I have the problem to insert new records on Master and Detail table on my WPA application
with settings follow showed. If you need i can resend you my sample by mail.
Can you help me ?
Thx
--------------------------------- TABLES ON DB ----------------------------------
CREATE TABLE MASTER_TABLE (
ID_MAS INTEGER NOT NULL PRIMARY KEY, <-- NOTE AUTOINCREMENT ------
DESCRIPTION VARCHAR(50),
DATE_COLL DATETIME2,
IN_COLL BIT NOT NULL DEFAULT (1),
INFO_CLI TEXT,
TEMPER NUMERIC(10,2)
);
CREATE TABLE DET_1_TABLE (
ID_MAS INTEGER NOT NULL,
ID_DET1 INTEGER NOT NULL,
DESCRIPTION VARCHAR(50),
DATE_COLL DATETIME2,
IN_COLL BIT NOT NULL DEFAULT (1),
INFO_CLI TEXT,
TEMPER NUMERIC(10,2),
PRIMARY KEY (ID_MAS, ID_DET1),
CONSTRAINT FK_DET1TABLE FOREIGN KEY (ID_MAS) REFERENCES MASTER_TABLE(ID_MAS) ON DELETE CASCADE
);
---------------------------------- ENTITY SETTINGS SERVER SIDE ------------------------------------
type
TDET_1_TABLE = class;
TDET_2_TABLE = class;
TMASTER_TABLE = class;
[Entity]
[Table('MASTER_TABLE')]
[Id('FID_MAS', TIdGenerator.IdentityOrSequence)]
TMASTER_TABLE = class
private
[Column('ID_MAS', [TColumnProp.Required, TColumnProp.NoInsert, TColumnProp.NoUpdate])]
FID_MAS: Integer;
[Column('DESCRIPTION', [], 50)]
FDESCRIPTION: Nullable<string>;
[Column('DATE_COLL', [])]
FDATE_COLL: Nullable<string>;
[Column('IN_COLL', [TColumnProp.Required])]
FIN_COLL: Boolean;
[Column('INFO_CLI', [], 50)]
FINFO_CLI: Nullable<string>;
[Column('TEMPER', [], 10, 2)]
FTEMPER: Nullable<Double>;
[ManyValuedAssociation([TAssociationProp.Lazy], CascadeTypeAllRemoveOrphan)]
[ForeignJoinColumn('ID_MAS', [TColumnProp.Required])]
FDET_1_TABLE: Proxy<TList<TDET_1_TABLE>>;
Function Get_DET_1_TABLE: TList<TDET_1_TABLE>;
public
constructor Create; overload;
destructor Destroy; override;
property ID_MAS: Integer read FID_MAS write FID_MAS;
property DESCRIPTION: Nullable<string> read FDESCRIPTION write FDESCRIPTION;
property DATE_COLL: Nullable<string> read FDATE_COLL write FDATE_COLL;
property IN_COLL: Boolean read FIN_COLL write FIN_COLL;
property INFO_CLI: Nullable<string> read FINFO_CLI write FINFO_CLI;
property TEMPER: Nullable<Double> read FTEMPER write FTEMPER;
end;
[Entity]
[Table('DET_1_TABLE')]
[Id('FID_MAS', TIdGenerator.None)]
[Id('FID_DET1', TIdGenerator.None)]
TDET_1_TABLE = class
private
[Column('ID_MAS', [TColumnProp.Required])]
FID_MAS: Integer;
[Column('ID_DET1', [TColumnProp.Required])]
FID_DET1: Integer;
[Column('DESCRIPTION', [], 50)]
FDESCRIPTION: Nullable;
[Column('DATE_COLL', [])]
FDATE_COLL: Nullable;
[Column('IN_COLL', [TColumnProp.Required])]
FIN_COLL: Boolean;
[Column('INFO_CLI', [], 50)]
FINFO_CLI: Nullable;
[Column('TEMPER', [], 10, 2)]
FTEMPER: Nullable;
public
property ID_MAS: Integer read FID_MAS write FID_MAS;
property ID_DET1: Integer read FID_DET1 write FID_DET1;
property DESCRIPTION: Nullable read FDESCRIPTION write FDESCRIPTION;
property DATE_COLL: Nullable read FDATE_COLL write FDATE_COLL;
property IN_COLL: Boolean read FIN_COLL write FIN_COLL;
property INFO_CLI: Nullable read FINFO_CLI write FINFO_CLI;
property TEMPER: Nullable read FTEMPER write FTEMPER;
end;
implementation
constructor TMASTER_TABLE.Create;
begin
FDET_1_TABLE.SetInitialValue(TList<TDET_1_TABLE>.Create);
end;
function TMASTER_TABLE.Get_DET_1_TABLE: TList<TDET_1_TABLE>;
begin
Result := FDET_1_TABLE.Value;
end;
destructor TMASTER_TABLE.Destroy;
begin
FDET_1_TABLE.DestroyValue;
inherited;
end;
---------------------------------- WPA (CLIENT SIDE) SETTINGS ------------------------------
wdMaster and wdDetail : TXDataWebDataSet;
with wdMaster.QueryString := $expand=DET_1_TABLE
procedure wdMasterAfterScroll(DataSet: TDataSet);
begin
wdDetail.Close();
wdDetail.SetJsonData(wdMasterMDET_1_TABLE.Value);
wdDetail.Open();
end;
procedure TfrmMain.btSaveAllClick(Sender: TObject);
begin
If wdMaster.State In [dsEdit, dsInsert] Then
wdMaster.Post();
If wdDetail.State In [dsEdit, dsInsert] Then
wdDetail.Post();
wdMaster.ApplyUpdates();
wdD1.ApplyUpdates();
end;