Recent

Author Topic: How to write into Database with LazDataDesktop TFieldmap ?  (Read 2146 times)

gelinp

  • Full Member
  • ***
  • Posts: 114
How to write into Database with LazDataDesktop TFieldmap ?
« on: September 19, 2016, 06:47:23 am »
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][+][-]
  1. var
  2. map: TSeancePedagogiqueMap;
  3. seance: TSeancePedagogique;
  4. // PSQLDetailSeances : ^TSQLQuery;
  5. [...]
  6. map := TSeancePedagogiqueMap.Create(PSQLDetailSeances^);
  7.       seance := TSeancePedagogique.Create;
  8.       map.LoadObject(seance);
  9.       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][+][-]
  1. Unit seance;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. Interface
  6.  
  7. Uses Classes, SysUtils, db, dbcoll;
  8.  
  9. Type
  10.  
  11.   { TSeancePedagogique }
  12.  
  13.   TSeancePedagogique = Class(TPersistent)
  14.   Private
  15.     Fcommanditaire : AnsiString;
  16.     Fcote : AnsiString;
  17.     Fderoulement : TStrings;
  18.     Fdtcommande : AnsiString;
  19.     Fdtcreation : TDateTime;
  20.     Fdtimport : TDateTime;
  21.     Fdtmodification : TDateTime;
  22.     Fevaluation : TStrings;
  23.     FFKdispositif : Int64;
  24.     FFKdossier : Int64;
  25.     FFKetat : Int64;
  26.     FFKlisteactivites : Int64;
  27.     FFKsequence : Int64;
  28.     FFKtype : Int64;
  29.     Fgroupe : TStrings;
  30.     Fmaxeleves : Int64;
  31.     Fniveaux : AnsiString;
  32.     Fobjectifsdisciplinaire : TStrings;
  33.     Fobjectifsdocumentaire : TStrings;
  34.     Fordresequence : Int64;
  35.     Foutils : TStrings;
  36.     Fpartenariat : TStrings;
  37.     FPKinstance : Int64;
  38.     FPKseance : Int64;
  39.     Fprerequisdisciplinaire : TStrings;
  40.     Fprerequisdocumentaire : TStrings;
  41.     Fproductions : TStrings;
  42.     Fressources : TStrings;
  43.     Fresteafaire : TStrings;
  44.     Ftitre : AnsiString;
  45.   Private
  46.     Procedure Setderoulement (AValue  : TStrings);
  47.     Procedure Setevaluation (AValue  : TStrings);
  48.     Procedure Setgroupe (AValue  : TStrings);
  49.     Procedure Setobjectifsdisciplinaire (AValue  : TStrings);
  50.     Procedure Setobjectifsdocumentaire (AValue  : TStrings);
  51.     Procedure Setoutils (AValue  : TStrings);
  52.     Procedure Setpartenariat (AValue  : TStrings);
  53.     Procedure Setprerequisdisciplinaire (AValue  : TStrings);
  54.     Procedure Setprerequisdocumentaire (AValue  : TStrings);
  55.     Procedure Setproductions (AValue  : TStrings);
  56.     Procedure Setressources (AValue  : TStrings);
  57.     Procedure Setresteafaire (AValue  : TStrings);
  58.   Protected
  59.   Public
  60.     Constructor Create;
  61.     Destructor Destroy; Override;
  62.     Procedure Assign(ASource : TPersistent); override;
  63.   Published
  64.     Property commanditaire : AnsiString Read Fcommanditaire Write Fcommanditaire;
  65.     Property cote : AnsiString Read Fcote Write Fcote;
  66.     Property deroulement : TStrings Read Fderoulement Write Setderoulement;
  67.     Property dtcommande : AnsiString Read Fdtcommande Write Fdtcommande;
  68.     Property dtcreation : TDateTime Read Fdtcreation Write Fdtcreation;
  69.     Property dtimport : TDateTime Read Fdtimport Write Fdtimport;
  70.     Property dtmodification : TDateTime Read Fdtmodification Write Fdtmodification;
  71.     Property evaluation : TStrings Read Fevaluation Write Setevaluation;
  72.     Property FKdispositif : Int64 Read FFKdispositif Write FFKdispositif;
  73.     Property FKdossier : Int64 Read FFKdossier Write FFKdossier;
  74.     Property FKetat : Int64 Read FFKetat Write FFKetat;
  75.     Property FKlisteactivites : Int64 Read FFKlisteactivites Write FFKlisteactivites;
  76.     Property FKsequence : Int64 Read FFKsequence Write FFKsequence;
  77.     Property FKtype : Int64 Read FFKtype Write FFKtype;
  78.     Property groupe : TStrings Read Fgroupe Write Setgroupe;
  79.     Property maxeleves : Int64 Read Fmaxeleves Write Fmaxeleves;
  80.     Property niveaux : AnsiString Read Fniveaux Write Fniveaux;
  81.     Property objectifsdisciplinaire : TStrings Read Fobjectifsdisciplinaire Write Setobjectifsdisciplinaire;
  82.     Property objectifsdocumentaire : TStrings Read Fobjectifsdocumentaire Write Setobjectifsdocumentaire;
  83.     Property ordresequence : Int64 Read Fordresequence Write Fordresequence;
  84.     Property outils : TStrings Read Foutils Write Setoutils;
  85.     Property partenariat : TStrings Read Fpartenariat Write Setpartenariat;
  86.     Property PKinstance : Int64 Read FPKinstance Write FPKinstance;
  87.     Property PKseance : Int64 Read FPKseance Write FPKseance;
  88.     Property prerequisdisciplinaire : TStrings Read Fprerequisdisciplinaire Write Setprerequisdisciplinaire;
  89.     Property prerequisdocumentaire : TStrings Read Fprerequisdocumentaire Write Setprerequisdocumentaire;
  90.     Property productions : TStrings Read Fproductions Write Setproductions;
  91.     Property ressources : TStrings Read Fressources Write Setressources;
  92.     Property resteafaire : TStrings Read Fresteafaire Write Setresteafaire;
  93.     Property titre : AnsiString Read Ftitre Write Ftitre;
  94.   end;
  95.  
  96.  
  97.   { TSeancePedagogiqueMap }
  98.  
  99.   TSeancePedagogiqueMap = Class(TFieldMap)
  100.   Private
  101.     Fcommanditaire : TField;
  102.     Fcote : TField;
  103.     Fderoulement : TField;
  104.     Fdtcommande : TField;
  105.     Fdtcreation : TField;
  106.     Fdtimport : TField;
  107.     Fdtmodification : TField;
  108.     Fevaluation : TField;
  109.     FFKdispositif : TField;
  110.     FFKdossier : TField;
  111.     FFKetat : TField;
  112.     FFKlisteactivites : TField;
  113.     FFKsequence : TField;
  114.     FFKtype : TField;
  115.     Fgroupe : TField;
  116.     Fmaxeleves : TField;
  117.     Fniveaux : TField;
  118.     Fobjectifsdisciplinaire : TField;
  119.     Fobjectifsdocumentaire : TField;
  120.     Fordresequence : TField;
  121.     Foutils : TField;
  122.     Fpartenariat : TField;
  123.     FPKinstance : TField;
  124.     FPKseance : TField;
  125.     Fprerequisdisciplinaire : TField;
  126.     Fprerequisdocumentaire : TField;
  127.     Fproductions : TField;
  128.     Fressources : TField;
  129.     Fresteafaire : TField;
  130.     Ftitre : TField;
  131.     Procedure DoLoad(AObject : TSeancePedagogique);
  132.   Public
  133.     Procedure InitFields; Override;
  134.     Procedure LoadObject(AObject : TObject); Override;
  135.   end;
  136.  
  137. Implementation
  138.  
  139.  { TSeancePedagogique }
  140.  
  141.  { Constructor and destructor }
  142.  
  143. Constructor TSeancePedagogique.Create;
  144.  
  145. begin
  146.   inherited;
  147.   Fderoulement:=TStringList.Create;
  148.   Fevaluation:=TStringList.Create;
  149.   Fgroupe:=TStringList.Create;
  150.   Fobjectifsdisciplinaire:=TStringList.Create;
  151.   Fobjectifsdocumentaire:=TStringList.Create;
  152.   Foutils:=TStringList.Create;
  153.   Fpartenariat:=TStringList.Create;
  154.   Fprerequisdisciplinaire:=TStringList.Create;
  155.   Fprerequisdocumentaire:=TStringList.Create;
  156.   Fproductions:=TStringList.Create;
  157.   Fressources:=TStringList.Create;
  158.   Fresteafaire:=TStringList.Create;
  159. end;
  160.  
  161.  
  162. Destructor TSeancePedagogique.Destroy;
  163.  
  164. begin
  165.   FreeAndNil(Fderoulement);
  166.   FreeAndNil(Fevaluation);
  167.   FreeAndNil(Fgroupe);
  168.   FreeAndNil(Fobjectifsdisciplinaire);
  169.   FreeAndNil(Fobjectifsdocumentaire);
  170.   FreeAndNil(Foutils);
  171.   FreeAndNil(Fpartenariat);
  172.   FreeAndNil(Fprerequisdisciplinaire);
  173.   FreeAndNil(Fprerequisdocumentaire);
  174.   FreeAndNil(Fproductions);
  175.   FreeAndNil(Fressources);
  176.   FreeAndNil(Fresteafaire);
  177.   Inherited;
  178. end;
  179.  
  180.  
  181.  { Property Setters }
  182.  
  183. Procedure TSeancePedagogique.Setderoulement (AValue  : TStrings);
  184.  
  185. begin
  186.   if (Fderoulement=AValue) then exit;
  187.   Fderoulement.Assign(AValue);
  188. end;
  189.  
  190.  
  191. Procedure TSeancePedagogique.Setevaluation (AValue  : TStrings);
  192.  
  193. begin
  194.   if (Fevaluation=AValue) then exit;
  195.   Fevaluation.Assign(AValue);
  196. end;
  197.  
  198.  
  199. Procedure TSeancePedagogique.Setgroupe (AValue  : TStrings);
  200.  
  201. begin
  202.   if (Fgroupe=AValue) then exit;
  203.   Fgroupe.Assign(AValue);
  204. end;
  205.  
  206.  
  207. Procedure TSeancePedagogique.Setobjectifsdisciplinaire (AValue  : TStrings);
  208.  
  209. begin
  210.   if (Fobjectifsdisciplinaire=AValue) then exit;
  211.   Fobjectifsdisciplinaire.Assign(AValue);
  212. end;
  213.  
  214.  
  215. Procedure TSeancePedagogique.Setobjectifsdocumentaire (AValue  : TStrings);
  216.  
  217. begin
  218.   if (Fobjectifsdocumentaire=AValue) then exit;
  219.   Fobjectifsdocumentaire.Assign(AValue);
  220. end;
  221.  
  222.  
  223. Procedure TSeancePedagogique.Setoutils (AValue  : TStrings);
  224.  
  225. begin
  226.   if (Foutils=AValue) then exit;
  227.   Foutils.Assign(AValue);
  228. end;
  229.  
  230.  
  231. Procedure TSeancePedagogique.Setpartenariat (AValue  : TStrings);
  232.  
  233. begin
  234.   if (Fpartenariat=AValue) then exit;
  235.   Fpartenariat.Assign(AValue);
  236. end;
  237.  
  238.  
  239. Procedure TSeancePedagogique.Setprerequisdisciplinaire (AValue  : TStrings);
  240.  
  241. begin
  242.   if (Fprerequisdisciplinaire=AValue) then exit;
  243.   Fprerequisdisciplinaire.Assign(AValue);
  244. end;
  245.  
  246.  
  247. Procedure TSeancePedagogique.Setprerequisdocumentaire (AValue  : TStrings);
  248.  
  249. begin
  250.   if (Fprerequisdocumentaire=AValue) then exit;
  251.   Fprerequisdocumentaire.Assign(AValue);
  252. end;
  253.  
  254.  
  255. Procedure TSeancePedagogique.Setproductions (AValue  : TStrings);
  256.  
  257. begin
  258.   if (Fproductions=AValue) then exit;
  259.   Fproductions.Assign(AValue);
  260. end;
  261.  
  262.  
  263. Procedure TSeancePedagogique.Setressources (AValue  : TStrings);
  264.  
  265. begin
  266.   if (Fressources=AValue) then exit;
  267.   Fressources.Assign(AValue);
  268. end;
  269.  
  270.  
  271. Procedure TSeancePedagogique.Setresteafaire (AValue  : TStrings);
  272.  
  273. begin
  274.   if (Fresteafaire=AValue) then exit;
  275.   Fresteafaire.Assign(AValue);
  276. end;
  277.  
  278.  
  279. Procedure TSeancePedagogique.Assign(ASource : TPersistent);
  280.  
  281. var
  282.   O : TSeancePedagogique ;
  283. begin
  284.   If (ASource is TSeancePedagogique) then
  285.     begin
  286.     O:=(ASource as TSeancePedagogique);
  287.     Fcommanditaire:=O.Fcommanditaire;
  288.     Fcote:=O.Fcote;
  289.     Fderoulement.Assign(O.Fderoulement);
  290.     Fdtcommande:=O.Fdtcommande;
  291.     Fdtcreation:=O.Fdtcreation;
  292.     Fdtimport:=O.Fdtimport;
  293.     Fdtmodification:=O.Fdtmodification;
  294.     Fevaluation.Assign(O.Fevaluation);
  295.     FFKdispositif:=O.FFKdispositif;
  296.     FFKdossier:=O.FFKdossier;
  297.     FFKetat:=O.FFKetat;
  298.     FFKlisteactivites:=O.FFKlisteactivites;
  299.     FFKsequence:=O.FFKsequence;
  300.     FFKtype:=O.FFKtype;
  301.     Fgroupe.Assign(O.Fgroupe);
  302.     Fmaxeleves:=O.Fmaxeleves;
  303.     Fniveaux:=O.Fniveaux;
  304.     Fobjectifsdisciplinaire.Assign(O.Fobjectifsdisciplinaire);
  305.     Fobjectifsdocumentaire.Assign(O.Fobjectifsdocumentaire);
  306.     Fordresequence:=O.Fordresequence;
  307.     Foutils.Assign(O.Foutils);
  308.     Fpartenariat.Assign(O.Fpartenariat);
  309.     FPKinstance:=O.FPKinstance;
  310.     FPKseance:=O.FPKseance;
  311.     Fprerequisdisciplinaire.Assign(O.Fprerequisdisciplinaire);
  312.     Fprerequisdocumentaire.Assign(O.Fprerequisdocumentaire);
  313.     Fproductions.Assign(O.Fproductions);
  314.     Fressources.Assign(O.Fressources);
  315.     Fresteafaire.Assign(O.Fresteafaire);
  316.     Ftitre:=O.Ftitre;
  317.     end
  318.   else
  319.     Inherited;
  320. end;
  321.  
  322.  
  323.  { TSeancePedagogiqueMap }
  324.  
  325. Procedure TSeancePedagogiqueMap.DoLoad(AObject : TSeancePedagogique);
  326.  
  327. begin
  328.   With AObject do
  329.     begin
  330.     commanditaire:=GetFromField(Self.Fcommanditaire,commanditaire);
  331.     cote:=GetFromField(Self.Fcote,cote);
  332.     deroulement.Text:=GetFromField(Self.Fderoulement,deroulement.Text);
  333.     dtcommande:=GetFromField(Self.Fdtcommande,dtcommande);
  334.     dtcreation:=GetFromField(Self.Fdtcreation,dtcreation);
  335.     dtimport:=GetFromField(Self.Fdtimport,dtimport);
  336.     dtmodification:=GetFromField(Self.Fdtmodification,dtmodification);
  337.     evaluation.Text:=GetFromField(Self.Fevaluation,evaluation.Text);
  338.     FKdispositif:=GetFromField(Self.FFKdispositif,FKdispositif);
  339.     FKdossier:=GetFromField(Self.FFKdossier,FKdossier);
  340.     FKetat:=GetFromField(Self.FFKetat,FKetat);
  341.     FKlisteactivites:=GetFromField(Self.FFKlisteactivites,FKlisteactivites);
  342.     FKsequence:=GetFromField(Self.FFKsequence,FKsequence);
  343.     FKtype:=GetFromField(Self.FFKtype,FKtype);
  344.     groupe.Text:=GetFromField(Self.Fgroupe,groupe.Text);
  345.     maxeleves:=GetFromField(Self.Fmaxeleves,maxeleves);
  346.     niveaux:=GetFromField(Self.Fniveaux,niveaux);
  347.     objectifsdisciplinaire.Text:=GetFromField(Self.Fobjectifsdisciplinaire,objectifsdisciplinaire.Text);
  348.     objectifsdocumentaire.Text:=GetFromField(Self.Fobjectifsdocumentaire,objectifsdocumentaire.Text);
  349.     ordresequence:=GetFromField(Self.Fordresequence,ordresequence);
  350.     outils.Text:=GetFromField(Self.Foutils,outils.Text);
  351.     partenariat.Text:=GetFromField(Self.Fpartenariat,partenariat.Text);
  352.     PKinstance:=GetFromField(Self.FPKinstance,PKinstance);
  353.     PKseance:=GetFromField(Self.FPKseance,PKseance);
  354.     prerequisdisciplinaire.Text:=GetFromField(Self.Fprerequisdisciplinaire,prerequisdisciplinaire.Text);
  355.     prerequisdocumentaire.Text:=GetFromField(Self.Fprerequisdocumentaire,prerequisdocumentaire.Text);
  356.     productions.Text:=GetFromField(Self.Fproductions,productions.Text);
  357.     ressources.Text:=GetFromField(Self.Fressources,ressources.Text);
  358.     resteafaire.Text:=GetFromField(Self.Fresteafaire,resteafaire.Text);
  359.     titre:=GetFromField(Self.Ftitre,titre);
  360.     end;
  361. end;
  362.  
  363.  
  364. Procedure TSeancePedagogiqueMap.LoadObject(AObject : TObject);
  365.  
  366. begin
  367.   DoLoad(AObject as TSeancePedagogique);
  368. end;
  369.  
  370.  
  371. Procedure TSeancePedagogiqueMap.InitFields;
  372.  
  373. begin
  374.   Fcommanditaire:=FindField('commanditaire');
  375.   Fcote:=FindField('cote');
  376.   Fderoulement:=FindField('deroulement');
  377.   Fdtcommande:=FindField('dtcommande');
  378.   Fdtcreation:=FindField('dtcreation');
  379.   Fdtimport:=FindField('dtimport');
  380.   Fdtmodification:=FindField('dtmodification');
  381.   Fevaluation:=FindField('evaluation');
  382.   FFKdispositif:=FindField('FKdispositif');
  383.   FFKdossier:=FindField('FKdossier');
  384.   FFKetat:=FindField('FKetat');
  385.   FFKlisteactivites:=FindField('FKlisteactivites');
  386.   FFKsequence:=FindField('FKsequence');
  387.   FFKtype:=FindField('FKtype');
  388.   Fgroupe:=FindField('groupe');
  389.   Fmaxeleves:=FindField('maxeleves');
  390.   Fniveaux:=FindField('niveaux');
  391.   Fobjectifsdisciplinaire:=FindField('objectifsdisciplinaire');
  392.   Fobjectifsdocumentaire:=FindField('objectifsdocumentaire');
  393.   Fordresequence:=FindField('ordresequence');
  394.   Foutils:=FindField('outils');
  395.   Fpartenariat:=FindField('partenariat');
  396.   FPKinstance:=FindField('PKinstance');
  397.   FPKseance:=FindField('PKseance');
  398.   Fprerequisdisciplinaire:=FindField('prerequisdisciplinaire');
  399.   Fprerequisdocumentaire:=FindField('prerequisdocumentaire');
  400.   Fproductions:=FindField('productions');
  401.   Fressources:=FindField('ressources');
  402.   Fresteafaire:=FindField('resteafaire');
  403.   Ftitre:=FindField('titre');
  404. end;
  405.  
  406.  
  407. end.

« Last Edit: September 21, 2016, 02:01:44 pm by gelinp »
My configuration is : Lazarus 1.6+dfsg-1 / FPC 3.0.0 / Debian Mint / x86_64-linux-gtk2

 

TinyPortal © 2005-2018