How to write into Database with LazDataDesktop TFieldmap ? lazarus / 16-Databases ---------------------------------------------------------------------- gelinp · 2016-09-19 04:47 Hi, I need help to use Tfieldmap with Lazarus Data Desktop. I find half part of the job, so I know how to load a registration  from a dataset : Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i varmap: TSeancePedagogiqueMap;seance: TSeancePedagogique;// PSQLDetailSeances : ^TSQLQuery;[...]map := TSeancePedagogiqueMap.Create(PSQLDetailSeances^);      seance := TSeancePedagogique.Create;      map.LoadObject(seance);      FreeAndNil(map); But know I'm asking myself how to save a Tpersistent object to the database. Because I would like to add Copy/paste fonctionalities to user interface. The code of my TSeancePedagogique object writed by Lazarus Data Desktop is below. There is an assign procedure but not with the map object, only to TPersistent object... So it's not possible to save to the database, only to load TSeancePedagogique objects from database... I tried to add setters option for some fields into Lazarus Data Desktop. But nothing was modified with TmapField, only TPersistent take setters option. I understand I need to use TmapField to load TPersistant object from database, so I will need it to do reverse... So, is there an option to Lazarus Data Desktop write automaticaly something like a WriteObject procedure into TmapField ? Thank you for your help. Patrick Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i Unit seance; {$mode objfpc}{$H+} Interface Uses Classes, SysUtils, db, dbcoll; Type   { TSeancePedagogique }   TSeancePedagogique = Class(TPersistent)  Private    Fcommanditaire : AnsiString;    Fcote : AnsiString;    Fderoulement : TStrings;    Fdtcommande : AnsiString;  Fdtcreation : TDateTime;    Fdtimport : TDateTime;    Fdtmodification : TDateTime;    Fevaluation : TStrings;    FFKdispositif : Int64;    FFKdossier : Int64;    FFKetat : Int64;    FFKlisteactivites : Int64;    FFKsequence : Int64;    FFKtype : Int64;    Fgroupe : TStrings;    Fmaxeleves : Int64;    Fniveaux : AnsiString;    Fobjectifsdisciplinaire : TStrings;    Fobjectifsdocumentaire : TStrings;    Fordresequence : Int64;    Foutils : TStrings;    Fpartenariat : TStrings;    FPKinstance : Int64;    FPKseance : Int64;    Fprerequisdisciplinaire : TStrings;    Fprerequisdocumentaire : TStrings;    Fproductions : TStrings;    Fressources : TStrings;    Fresteafaire : TStrings;    Ftitre : AnsiString;  Private    Procedure Setderoulement (AValue  : TStrings);    Procedure Setevaluation (AValue  : TStrings);    Procedure Setgroupe (AValue  : TStrings);    Procedure Setobjectifsdisciplinaire (AValue  : TStrings);    Procedure Setobjectifsdocumentaire (AValue  : TStrings);    Procedure Setoutils (AValue  : TStrings);    Procedure Setpartenariat (AValue  : TStrings);    Procedure Setprerequisdisciplinaire (AValue  : TStrings);    Procedure Setprerequisdocumentaire (AValue  : TStrings);    Procedure Setproductions (AValue  : TStrings);    Procedure Setressources (AValue  : TStrings);    Procedure Setresteafaire (AValue  : TStrings);  Protected  Public    Constructor Create;    Destructor Destroy; Override;    Procedure Assign(ASource : TPersistent); override;  Published    Property commanditaire : AnsiString Read Fcommanditaire Write Fcommanditaire;    Property cote : AnsiString Read Fcote Write Fcote;    Property deroulement : TStrings Read Fderoulement Write Setderoulement;    Property dtcommande : AnsiString Read Fdtcommande Write Fdtcommande;    Property dtcreation : TDateTime Read Fdtcreation Write Fdtcreation;  Property dtimport : TDateTime Read Fdtimport Write Fdtimport;    Property dtmodification : TDateTime Read Fdtmodification Write Fdtmodification;    Property evaluation : TStrings Read Fevaluation Write Setevaluation;    Property FKdispositif : Int64 Read FFKdispositif Write FFKdispositif;    Property FKdossier : Int64 Read FFKdossier Write FFKdossier;    Property FKetat : Int64 Read FFKetat Write FFKetat;    Property FKlisteactivites : Int64 Read FFKlisteactivites Write FFKlisteactivites;    Property FKsequence : Int64 Read FFKsequence Write FFKsequence;    Property FKtype : Int64 Read FFKtype Write FFKtype;    Property groupe : TStrings Read Fgroupe Write Setgroupe;    Property maxeleves : Int64 Read Fmaxeleves Write Fmaxeleves;    Property niveaux : AnsiString Read Fniveaux Write Fniveaux;    Property objectifsdisciplinaire : TStrings Read Fobjectifsdisciplinaire Write Setobjectifsdisciplinaire;    Property objectifsdocumentaire : TStrings Read Fobjectifsdocumentaire Write Setobjectifsdocumentaire;    Property ordresequence : Int64 Read Fordresequence Write Fordresequence;    Property outils : TStrings Read Foutils Write Setoutils;    Property partenariat : TStrings Read Fpartenariat Write Setpartenariat;    Property PKinstance : Int64 Read FPKinstance Write FPKinstance;    Property PKseance : Int64 Read FPKseance Write FPKseance;    Property prerequisdisciplinaire : TStrings Read Fprerequisdisciplinaire Write Setprerequisdisciplinaire;    Property prerequisdocumentaire : TStrings Read Fprerequisdocumentaire Write Setprerequisdocumentaire;  Property productions : TStrings Read Fproductions Write Setproductions;    Property ressources : TStrings Read Fressources Write Setressources;    Property resteafaire : TStrings Read Fresteafaire Write Setresteafaire;    Property titre : AnsiString Read Ftitre Write Ftitre;  end;    { TSeancePedagogiqueMap }   TSeancePedagogiqueMap = Class(TFieldMap)  Private    Fcommanditaire : TField;    Fcote : TField;    Fderoulement : TField;    Fdtcommande : TField;    Fdtcreation : TField;    Fdtimport : TField;    Fdtmodification : TField;    Fevaluation : TField;    FFKdispositif : TField;    FFKdossier : TField;    FFKetat : TField;    FFKlisteactivites : TField;    FFKsequence : TField;    FFKtype : TField;    Fgroupe : TField;    Fmaxeleves : TField;    Fniveaux : TField;    Fobjectifsdisciplinaire : TField;    Fobjectifsdocumentaire : TField;    Fordresequence : TField;    Foutils : TField;    Fpartenariat : TField;    FPKinstance : TField;    FPKseance : TField;    Fprerequisdisciplinaire : TField;    Fprerequisdocumentaire : TField;    Fproductions : TField;    Fressources : TField;    Fresteafaire : TField;    Ftitre : TField;    Procedure DoLoad(AObject : TSeancePedagogique);  Public    Procedure InitFields; Override;    Procedure LoadObject(AObject : TObject); Override;  end; Implementation  { TSeancePedagogique }   { Constructor and destructor } Constructor TSeancePedagogique.Create; begin  inherited;  Fderoulement:=TStringList.Create;  Fevaluation:=TStringList.Create;  Fgroupe:=TStringList.Create;  Fobjectifsdisciplinaire:=TStringList.Create;  Fobjectifsdocumentaire:=TStringList.Create;  Foutils:=TStringList.Create;  Fpartenariat:=TStringList.Create;  Fprerequisdisciplinaire:=TStringList.Create;  Fprerequisdocumentaire:=TStringList.Create;  Fproductions:=TStringList.Create;  Fressources:=TStringList.Create;  Fresteafaire:=TStringList.Create;end;  Destructor TSeancePedagogique.Destroy; begin  FreeAndNil(Fderoulement);  FreeAndNil(Fevaluation);  FreeAndNil(Fgroupe);  FreeAndNil(Fobjectifsdisciplinaire);  FreeAndNil(Fobjectifsdocumentaire);  FreeAndNil(Foutils);  FreeAndNil(Fpartenariat);  FreeAndNil(Fprerequisdisciplinaire);  FreeAndNil(Fprerequisdocumentaire);  FreeAndNil(Fproductions);  FreeAndNil(Fressources);  FreeAndNil(Fresteafaire);  Inherited;end;   { Property Setters } Procedure TSeancePedagogique.Setderoulement (AValue  : TStrings); begin  if (Fderoulement=AValue) then exit;  Fderoulement.Assign(AValue);end;  Procedure TSeancePedagogique.Setevaluation (AValue  : TStrings); begin  if (Fevaluation=AValue) then exit;  Fevaluation.Assign(AValue);end;  Procedure TSeancePedagogique.Setgroupe (AValue  : TStrings); begin  if (Fgroupe=AValue) then exit;  Fgroupe.Assign(AValue);end;  Procedure TSeancePedagogique.Setobjectifsdisciplinaire (AValue  : TStrings); begin  if (Fobjectifsdisciplinaire=AValue) then exit;  Fobjectifsdisciplinaire.Assign(AValue);end;  Procedure TSeancePedagogique.Setobjectifsdocumentaire (AValue  : TStrings); begin  if (Fobjectifsdocumentaire=AValue) then exit;  Fobjectifsdocumentaire.Assign(AValue);end;  Procedure TSeancePedagogique.Setoutils (AValue  : TStrings); begin  if (Foutils=AValue) then exit;  Foutils.Assign(AValue);end;  Procedure TSeancePedagogique.Setpartenariat (AValue  : TStrings); begin  if (Fpartenariat=AValue) then exit;  Fpartenariat.Assign(AValue);end;  Procedure TSeancePedagogique.Setprerequisdisciplinaire (AValue  : TStrings); begin  if (Fprerequisdisciplinaire=AValue) then exit;  Fprerequisdisciplinaire.Assign(AValue);end;  Procedure TSeancePedagogique.Setprerequisdocumentaire (AValue  : TStrings); begin  if (Fprerequisdocumentaire=AValue) then exit;  Fprerequisdocumentaire.Assign(AValue);end;  Procedure TSeancePedagogique.Setproductions (AValue  : TStrings); begin  if (Fproductions=AValue) then exit;  Fproductions.Assign(AValue);end;  Procedure TSeancePedagogique.Setressources (AValue  : TStrings); begin  if (Fressources=AValue) then exit;  Fressources.Assign(AValue);end;  Procedure TSeancePedagogique.Setresteafaire (AValue  : TStrings); begin  if (Fresteafaire=AValue) then exit;  Fresteafaire.Assign(AValue);end;  Procedure TSeancePedagogique.Assign(ASource : TPersistent); var  O : TSeancePedagogique ;begin  If (ASource is TSeancePedagogique) then    begin    O:=(ASource as TSeancePedagogique);    Fcommanditaire:=O.Fcommanditaire;    Fcote:=O.Fcote;    Fderoulement.Assign(O.Fderoulement);    Fdtcommande:=O.Fdtcommande;  Fdtcreation:=O.Fdtcreation;    Fdtimport:=O.Fdtimport;    Fdtmodification:=O.Fdtmodification;    Fevaluation.Assign(O.Fevaluation);    FFKdispositif:=O.FFKdispositif;    FFKdossier:=O.FFKdossier;    FFKetat:=O.FFKetat;    FFKlisteactivites:=O.FFKlisteactivites;    FFKsequence:=O.FFKsequence;    FFKtype:=O.FFKtype;    Fgroupe.Assign(O.Fgroupe);    Fmaxeleves:=O.Fmaxeleves;    Fniveaux:=O.Fniveaux;    Fobjectifsdisciplinaire.Assign(O.Fobjectifsdisciplinaire);    Fobjectifsdocumentaire.Assign(O.Fobjectifsdocumentaire);    Fordresequence:=O.Fordresequence;    Foutils.Assign(O.Foutils);    Fpartenariat.Assign(O.Fpartenariat);    FPKinstance:=O.FPKinstance;  FPKseance:=O.FPKseance;    Fprerequisdisciplinaire.Assign(O.Fprerequisdisciplinaire);    Fprerequisdocumentaire.Assign(O.Fprerequisdocumentaire);    Fproductions.Assign(O.Fproductions);    Fressources.Assign(O.Fressources);    Fresteafaire.Assign(O.Fresteafaire);    Ftitre:=O.Ftitre;    end  else    Inherited;end;   { TSeancePedagogiqueMap } Procedure TSeancePedagogiqueMap.DoLoad(AObject : TSeancePedagogique); begin  With AObject do    begin    commanditaire:=GetFromField(Self.Fcommanditaire,commanditaire);    cote:=GetFromField(Self.Fcote,cote);    deroulement.Text:=GetFromField(Self.Fderoulement,deroulement.Text);  dtcommande:=GetFromField(Self.Fdtcommande,dtcommande);    dtcreation:=GetFromField(Self.Fdtcreation,dtcreation);    dtimport:=GetFromField(Self.Fdtimport,dtimport);    dtmodification:=GetFromField(Self.Fdtmodification,dtmodification);    evaluation.Text:=GetFromField(Self.Fevaluation,evaluation.Text);    FKdispositif:=GetFromField(Self.FFKdispositif,FKdispositif);    FKdossier:=GetFromField(Self.FFKdossier,FKdossier);    FKetat:=GetFromField(Self.FFKetat,FKetat);    FKlisteactivites:=GetFro mField(Self.FFKlisteactivites,FKlisteactivites);    FKsequence:=GetFromField(Self.FFKsequence,FKsequence);    FKtype:=GetFromField(Self.FFKtype,FKtype);    groupe.Text:=GetFromField(Self.Fgroupe,groupe.Text);    maxeleves:=GetFromField(Self.Fmaxeleves,maxeleves);    niveaux:=GetFromField(Self.Fniveaux,niveaux);    objectifsdisciplinair e.Text:=GetFromField(Self.Fobjectifsdisciplinaire,objectifsdisciplinai re.Text);    objectifsdocumentaire.Text:=GetFromField(Self.Fobjectifsd ocumentaire,objectifsdocumentaire.Text);    ordresequence:=GetFromField(Self.Fordresequence,ordresequence);    outils.Text:=GetFromField(Self.Foutils,outils.Text);    partenariat.Text:=GetFromField(Self.Fpartenariat,partenariat.Text);  PKinstance:=GetFromField(Self.FPKinstance,PKinstance);    PKseance:=GetFromField(Self.FPKseance,PKseance);    prerequisdisciplin aire.Text:=GetFromField(Self.Fprerequisdisciplinaire,prerequisdiscipli naire.Text);    prerequisdocumentaire.Text:=GetFromField(Self.Fprerequ isdocumentaire,prerequisdocumentaire.Text);    productions.Text:=GetFromField(Self.Fproductions,productions.Text);  ressources.Text:=GetFromField(Self.Fressources,ressources.Text);    resteafaire.Text:=GetFromField(Self.Fresteafaire,resteafaire.Text);  titre:=GetFromField(Self.Ftitre,titre);    end;end;  Procedure TSeancePedagogiqueMap.LoadObject(AObject : TObject); begin  DoLoad(AObject as TSeancePedagogique);end;  Procedure TSeancePedagogiqueMap.InitFields; begin  Fcommanditaire:=FindField('commanditaire');  Fcote:=FindField('cote');  Fderoulement:=FindField('deroulement');  Fdtcommande:=FindField('dtcommande');  Fdtcreation:=FindField('dtcreation');  Fdtimport:=FindField('dtimport');  Fdtmodification:=FindField('dtmodification');  Fevaluation:=FindField('evaluation');  FFKdispositif:=FindField('FKdispositif');  FFKdossier:=FindField('FKdossier');  FFKetat:=FindField('FKetat');  FFKlisteactivites:=FindField('FKlisteactivites');  FFKsequence:=FindField('FKsequence');  FFKtype:=FindField('FKtype');  Fgroupe:=FindField('groupe');  Fmaxeleves:=FindField('maxeleves');  Fniveaux:=FindField('niveaux');  Fobjectifsdisciplinaire:=FindField('objectifsdisciplinaire');  Fobjectifsdocumentaire:=FindField('objectifsdocumentaire');  Fordresequence:=FindField('ordresequence');  Foutils:=FindField('outils');  Fpartenariat:=FindField('partenariat');  FPKinstance:=FindField('PKinstance');  FPKseance:=FindField('PKseance');  Fprerequisdisciplinaire:=FindField('prerequisdisciplinaire');  Fprerequisdocumentaire:=FindField('prerequisdocumentaire');  Fproductions:=FindField('productions');  Fressources:=FindField('ressources');  Fresteafaire:=FindField('resteafaire');  Ftitre:=FindField('titre');end;  end.