forum Ancestrologie
Ancestrologie - Développement => Développement => Discussion démarrée par: DDdeBerdeux le 07 Décembre 2005 à 10:25:23
-
Bonjour,
On peut constater que la fiche individuelle n'est pas imprimée si l'individu n'a pas d'évènement individuel enregistré.
En analysant la conception de l'état, je pense en avoir trouvé la raison, dans la définition des "pipelines" utilisés, à laquelle l'utilisateur n'a pas accès.
2 tables sont déclarées et liées dans cet état. L'une "dbFiche" créée par les procédures PROC_ETAT_FICHE ou PROC_ETAT_TOUTES_FICHES, l'autre "dbEveIndi" est la table EVENEMENTS_IND. Le lien entre les 2 doit se faire par CLE_FICHE. L'erreur doit être d'avoir fait un lien de type SQL "INNER JOIN" qui supprime toute réponse si aucun évènement individuel ne correspond. Je n'ai pas les moyens de vérifier cette hypothèse.
Philippe CM pourrait-il vérifier et corriger celà?
A+
André
-
Hello André
C est la proc PROC_ETAT_FICHE
select * from PROC_ETAT_FICHE(:CLE_FICHE)
avec comme param la clef fiche
ou
select * from PROC_ETAT_TOUTES_FICHES(:I_DOSSIER)
pour toutes les fiches
puis
select * from PROC_EVE_IND(:CLE_FICHE)
puis
SELECT * FROM PROC_TROUVE_MULTIMEDIA (:I_CLEF, :I_TYPE)
voila pour les requetes appelees dans cet etat
-
OK sur çà, mais le pb doit être dans la jointure faîte entre les résultats de PROC_EVE_IND et ceux de PROC_ETAT_FICHE ou TOUTES_FICHES dans la définition du pipeline. Regardes dans la conception de l'état, tu vois que les 2 tables sont liées: c'est le type de ce lien qu'il faut vérifier et peut-être remplacer par un LEFT JOIN.
A+
André
-
select * from PROC_EVE_IND(:CLE_FICHE) est lié a la fiche par la clef fiche, c est tout
voici le code d appel a la fiche
_REP_FICHE_INDIVIDUELLE:
begin
s_Nom := lNom.Caption;
s_Nom := s_Nom + ' - FI';
Application.ProcessMessages;
Application.ProcessMessages;
ppViewer.Report := ppReport;
aFParamReports.btnShowConfigBox.Enabled := True;
QFiche.Close;
if aFParamReports.cbToutDossierIndi.Checked then
begin
QFiche.SQL.Clear;
QFiche.SQL.Add('select * from PROC_ETAT_TOUTES_FICHES(:I_DOSSIER)');
QFiche.ParamByName('I_DOSSIER').AsInteger := dm.NumDossier;
end
else
begin
QFiche.SQL.Clear;
QFiche.SQL.Add('select * from PROC_ETAT_FICHE(:CLE_FICHE)');
QFiche.ParamByName('CLE_FICHE').AsInteger := dm.FicheActive;
end;
try
QFiche.Open;
except
on E: Exception do
begin
ShowMessage('Erreur sur la requete');
end;
end;
try
QEveIndi.Open;
except
on E: Exception do
begin
ShowMessage('Erreur sur la requete');
end;
end;
QMultimedia.Params[0].AsInteger := dm.FicheActive;
QMultimedia.Params[1].AsString := 'I';
QMultimedia.Open;
QMultimedia.Last;
QMultimedia.First;
ppViewer.visible := QFiche.RecordCount > 0;
pRien.Visible := QFiche.RecordCount <= 0;
try
ppReport.PrintToDevices;
except
on E: Exception do
begin
QFiche.Close;
QEveIndi.Close;
QMultimedia.Close;
ShowMessage('Cette édition a générée une erreur, verifiez les naissances et les décès...');
aFVerifEvent := TFVerifEvent.create(self);
try
aFVerifEvent.ShowModal;
finally
aFVerifEvent.Free;
end;
end;
end;
end;
-
Oui, mais ce code là c'est le code Delphi qui appelle l'état, le paramètre et en commande l'affichage depuis ton exécutable. Le lien dont je parle est celui existant dans la conception de l'état dans ReportBuilder, entre les 2 tables Fiche et EveIndi.
A+
André