Bonjour,
Je tente de migrer un "applicatif maison" de Delphi vers Lazarus (avec environ 60 tables dont beaucoup en relation maître/détail le tout dans un BDD) et je me heurte à un souci pour la mise en relation maître/détail.
Pour faire simple...
J'ai une table PREPAS :
CREATE TABLE PREPAS (
NUMP INTEGER PRIMARY KEY ASC ON CONFLICT ROLLBACK
AUTOINCREMENT
NOT NULL
DEFAULT (0),
NOMP VARCHAR (200) DEFAULT ('Huile '),
VOLUMEP VARCHAR (6) DEFAULT ('5'),
UNITEP VARCHAR (4) DEFAULT ('ml'),
PREPA VARCHAR (2000) DEFAULT ('Bien mélanger les ingrédients et les verser dans un récipient propre.'),
POSOP VARCHAR (1000) DEFAULT ('Masser localement '),
RECOMP VARCHAR (1000) DEFAULT ('/'),
SYNERGIEP VARCHAR (1000) DEFAULT ('/'),
COMPO TEXT DEFAULT ('')
Une table FORMULAIRE qui "pointe" ou "pointerai", selon ce qui est indiqué sur Wiki Lazarus, sur le NUMP de PREPAS via un champ commun NUMP et une clause WHERE dans le SQL de FORMULAIRE:
CREATE TABLE FORMULAIRE (
NUMF INTEGER PRIMARY KEY ASC ON CONFLICT ROLLBACK
AUTOINCREMENT
NOT NULL
DEFAULT (0)
UNIQUE,
NUMP INTEGER REFERENCES PREPAS (NUMP) ON DELETE CASCADE
ON UPDATE CASCADE -- le NUMP de PREPAS
DEFAULT (0),
NUMG INTEGER DEFAULT (0),
ARTICLE VARCHAR (40) DEFAULT (''),
VOLUMEF VARCHAR (6) DEFAULT ('1'),
UNITEF VARCHAR (4) DEFAULT ('ml'),
GENREF TEXT DEFAULT ('HE ')
);
Le SQL de FORMULAIRE est :
SELECT NUMF, NUMP, NUMG, ARTICLE, VOLUMEF, UNITEF, GENREF
FROM FORMULAIRE F
WHERE F.NUMP = NUMP
Le Database de QFORMULAIRE est CONNEXION (c'est le DatabaseName de Connexion : C:\Travail 64 LZS\Soigner64.sqlite3), qui est le même que celui de QPREPAS est des autres SQLQuery de l'applicatif.
Le DataSource de QFORMULAIRE est DPREPAS (mes datasources sont préfixés avec D et mes SQLQuery avec Q) pour (prétendument) faire la relation Maître/Détail.
L'IndexName de QFORMULAIRE est DEFAULT_ORDER, comme celui de QPREPAS.
Sur ma Form "Remedes" j'ai 2 dBGRid, l'un affiche PREPAS (dBgrid1), l'autre (dBGRid2), qui en fonction de la relation M/D telle que décrite sur l'aide WIKI Lazarus, devrait afficher les plantes FORMULAIRE.ARTICLE qui entrent dans la composition de PREPAS.NOMP.
Or, c'est toute la base FORMULAIRE qui s'affiche dans le dBGRID2, indépendamment de l'enregistrement QPREPAS en cours, comme vu ci-dessous. Seuls les 5 premiers enregistrements de QFormulaire devraient figurer face à Abattement : Décoction 5%.
Si quelqu'un a une idée, je suis preneur.
Bonne soirée...
Partager