Bonjour,
Lors du dernier épisode de cette discussion je me suis fait “remonter les bretelles” par Jurassik Pork, certainement avec raison. Après avoir consulté les diverses discussions sur le sujet de l’ajout, modifications de données à une table à l’aide des composants Zeos ou non, j’ai essayé d’avancer .
En fait, j’ai programmé un logiciel de gestion d’une base d’anciens élèves, (SQLITE3 et ZEOS W10, Lazarus 2.24) que j’essaye de rendre plus convivial
La partie construction de la base, exploitation directe des données fonctionne bien (Zeos a été mis à contribution). Je souhaite en plus construire des rapports éditables au format PDF qui seraient mis à la disposition des personnes concernées et ce, sans passer par un serveur surtout pour des problèmes de confidentialité (et aussi parce que je connais rien dans la gestion de tels outils… et suis peut-être trop âgé pour cela).
Bref, la première partie du rapport consiste en l’édition d’une fiche de synthèse par section recensant le nombre de personnes totales concernées, le nombre de personnes perdues de vue et celles décédées (nombre et proportion).
Cette opération de synthèse faisant appel à la lecture des enregistrements de la table des élèves est programmée et fonctionne bien. Les résultats sont synthétisés dans un STRINGGRID. Le nombre de lignes du Stringgrid peut varier car la base peut être utilisée pour plusieurs promotions et c’est pour cela que je souhaite en récupérer le contenu dans une table qui sera ensuite affichée dans LazReport.
La requête libellée pour le transfert vers la table Synth de la base me semble rédigée correctement. Elle fait appel aux variable libellées en utilisant des "QuotedSTR " et par exemple pour la première ligne du Stringrid elle donne le résultat suivant :
RqtSQLSynth = 'Insert Into Synth (IdentSynth, Nb_Ind, Nb_IndPDV, Nb_IndDCD, pc_IndPDV, pc_IndDCD) Values (''BCxxx'', ''13'', ''2'', ''2'', ''15,4'', ''15,4'') '
Synth est le nom de la table à renseigner la première parenthèse contient les noms de champs et la seconde les valeurs qui leurs sont affectées.
le nom de la varaible requête esdt RqtSQLSynth.
J'ai programmé les évènements nécessaires à la mise en oeuvre de cete requête :
1 2 3 4 5 6 7 8 9 10 11 12 13
| DM_Rap.ZC_Synth.Connected := False ;
DM_Rap.ZC_Synth.Database := DNomBaseC ;
DM_Rap.ZC_Synth.Protocol:= 'SQLITE-3' ;
DM_Rap.ZC_Synth.Connected := True ;
// ******* Table Synth
DM_Rap.ZT_Synth.Active := False ;
DM_Rap.ZT_Synth.Connection := DM_Rap.ZC_Synth ;
DM_Rap.ZT_Synth.TableName := 'Synth' ;
DM_Rap.ZT_Synth.Active := True ;
// ****** le composant de liaison - DataSource
DM_Rap.DtS_Synth.Enabled := False ;
DM_Rap.DtS_Synth.Dataset := DM_Rap.ZT_Synth ;
DM_Rap.DtS_Synth.Enabled := True ; |
Ces composants ne provoquent aucune erreur lors de l'exécution du code (DM_RAP est le nom du DataModule qui héberge les composants Zeos ZC_Synth, ZT_Synth et ZQ_Synth ainsi que le Datasource DtS_Synth..
Par contre le code suivant provoque une erreur logique SQL :
1 2 3 4 5 6 7 8 9
| For lgn1 := 1 to NbSections + 1 Do
Begin
DM_Rap.ZQ_Synth.Active:= False ;
DM_Rap.ZQ_Synth.SQL.Clear ;
DM_Rap.ZQ_Synth.SQL.Text:= RqtSQLSynth ;
DM_Rap.ZQ_Synth.Connection := DM_Rap.ZC_Synth ;
DM_Rap.ZQ_Synth.Active:= True ;
DM_Rap.ZQ_Synth.execSQL ;
end; |
Qu'y a-t'il d'incongru dans ce code et comment créer les enregistrements à la première utilisation et les Updater lors des utilisations Suivantes ?
Merci pour vos réponses .
R.O.
Partager