en attendant ceux qui veuelent réparer par eux meme, voici la marche a suivre
1 Allez dans le BOA ou le requeteur sql et executez y la requete suivante et tenez moi au courant
ALTER PROCEDURE PROC_LISTE_INDIVIDU (
I_DOSSIER INTEGER,
I_LETTRE VARCHAR (1) CHARACTER SET ISO8859_1,
I_MODE INTEGER,
I_SEXE INTEGER)
RETURNS (
NOM VARCHAR (40) CHARACTER SET ISO8859_1,
PRENOM VARCHAR (60) CHARACTER SET ISO8859_1,
SURNOM VARCHAR (120) CHARACTER SET ISO8859_1,
SEXE INTEGER,
CLE_FICHE INTEGER,
CLE_PERE INTEGER,
CLE_MERE INTEGER,
KLE_DOSSIER INTEGER,
DATE_NAISSANCE VARCHAR (100) CHARACTER SET ISO8859_1,
ANNEE_DECES INTEGER,
CP VARCHAR (10) CHARACTER SET ISO8859_1,
VILLE VARCHAR (50) CHARACTER SET ISO8859_1,
NUM_SOSA DOUBLE PRECISION,
DATE_DECES VARCHAR (100) CHARACTER SET ISO8859_1,
CP_DECES VARCHAR (10) CHARACTER SET ISO8859_1,
VILLE_DECES VARCHAR (50) CHARACTER SET ISO8859_1,
ANNEE_NAISSANCE INTEGER)
AS
begin
/*---------------------------------------------------------------------------
Copyright Philippe Cazaux-Moutou. Tout droits réservés.
Créé le : 2/07/2002
à : 06:13:52
Modifiée le :
à : :
par :
Description : Liste des individus par lettre
I_MODE : 0 - les morts
1 - les vivants
2 - tous
I_LETTRE : Alpha - que ceux de la lettre
* - Tous
I_SEXE : 1 - Homme
2 - Femme
0 - Tous
Usage :
---------------------------------------------------------------------------*/
I_LETTRE = UPPER(I_LETTRE);
if ((I_LETTRE <> '*' ) AND (I_SEXE = 0)) then /* Une lettre et tous les sexes */
for
SELECT enfant.nom,
enfant.prenom,
enfant.surnom,
enfant.sexe,
enfant.cle_fiche,
enfant.cle_pere,
enfant.cle_mere,
enfant.kle_dossier,
enfant.date_naissance,
enfant.annee_deces,
ne.ev_ind_cp,
ne.ev_ind_ville,
enfant.num_sosa,
enfant.date_deces,
deces.ev_ind_cp,
deces.ev_ind_ville,
enfant.annee_naissance
FROM individu enfant
LEFT JOIN evenements_ind ne
ON (enfant.cle_fiche = ne.ev_ind_kle_fiche and
ne.ev_ind_type = 'BIRT' )
LEFT JOIN evenements_ind deces
ON (enfant.cle_fiche = deces.ev_ind_kle_fiche and
deces.ev_ind_type = 'DEAT' )
where
enfant.kle_dossier = :I_DOSSIER AND
enfant.nom STARTING WITH :I_LETTRE
ORDER BY enfant.nom
INTO :NOM,
:PRENOM,
:SURNOM,
:SEXE,
:CLE_FICHE,
:CLE_PERE,
:CLE_MERE,
:KLE_DOSSIER,
:DATE_NAISSANCE,
:ANNEE_DECES,
:CP,
:VILLE,
:NUM_SOSA,
:DATE_DECES,
:CP_DECES,
:VILLE_DECES,
:ANNEE_NAISSANCE
do
suspend;
if ((I_LETTRE <> '*' ) AND (I_SEXE > 0)) then /* Une lettre et sexe defini */
for
SELECT Upper(enfant.nom),
enfant.prenom,
enfant.surnom,
enfant.sexe,
enfant.cle_fiche,
enfant.cle_pere,
enfant.cle_mere,
enfant.kle_dossier,
enfant.date_naissance,
enfant.annee_deces,
ne.ev_ind_cp,
ne.ev_ind_ville,
enfant.num_sosa,
enfant.date_deces,
deces.ev_ind_cp,
deces.ev_ind_ville,
enfant.annee_naissance
FROM individu enfant
LEFT JOIN evenements_ind ne
ON (enfant.cle_fiche = ne.ev_ind_kle_fiche and
ne.ev_ind_type = 'BIRT' )
LEFT JOIN evenements_ind deces
ON (enfant.cle_fiche = deces.ev_ind_kle_fiche and
deces.ev_ind_type = 'DEAT' )
where
enfant.kle_dossier = :I_DOSSIER AND
enfant.nom STARTING WITH :I_LETTRE AND
enfant.sexe = :I_SEXE
ORDER BY enfant.nom
INTO :NOM,
:PRENOM,
:SURNOM,
:SEXE,
:CLE_FICHE,
:CLE_PERE,
:CLE_MERE,
:KLE_DOSSIER,
:DATE_NAISSANCE,
:ANNEE_DECES,
:CP,
:VILLE,
:NUM_SOSA,
:DATE_DECES,
:CP_DECES,
:VILLE_DECES,
:ANNEE_NAISSANCE
do
suspend;
if ((I_LETTRE = '*' ) AND (I_SEXE = 0)) then /* Toutes lettres et tous les sexes */
for
SELECT Upper(enfant.nom),
enfant.prenom,
enfant.surnom,
enfant.sexe,
enfant.cle_fiche,
enfant.cle_pere,
enfant.cle_mere,
enfant.kle_dossier,
enfant.date_naissance,
enfant.annee_deces,
ne.ev_ind_cp,
ne.ev_ind_ville,
enfant.num_sosa,
enfant.date_deces,
deces.ev_ind_cp,
deces.ev_ind_ville,
enfant.annee_naissance
FROM individu enfant
LEFT JOIN evenements_ind ne
ON (enfant.cle_fiche = ne.ev_ind_kle_fiche and
ne.ev_ind_type = 'BIRT')
LEFT JOIN evenements_ind deces
ON (enfant.cle_fiche = deces.ev_ind_kle_fiche and
deces.ev_ind_type = 'DEAT' )
where
enfant.kle_dossier = :I_DOSSIER
ORDER BY enfant.nom
INTO :NOM,
:PRENOM,
:SURNOM,
:SEXE,
:CLE_FICHE,
:CLE_PERE,
:CLE_MERE,
:KLE_DOSSIER,
:DATE_NAISSANCE,
:ANNEE_DECES,
:CP,
:VILLE,
:NUM_SOSA,
:DATE_DECES,
:CP_DECES,
:VILLE_DECES,
:ANNEE_NAISSANCE
do
suspend;
if ((I_LETTRE = '*' ) AND (I_SEXE > 0)) then /* Toutes lettres et un sexe */
for
SELECT Upper(enfant.nom),
enfant.prenom,
enfant.surnom,
enfant.sexe,
enfant.cle_fiche,
enfant.cle_pere,
enfant.cle_mere,
enfant.kle_dossier,
enfant.date_naissance,
enfant.annee_deces,
ne.ev_ind_cp,
ne.ev_ind_ville,
enfant.num_sosa,
enfant.date_deces,
deces.ev_ind_cp,
deces.ev_ind_ville,
enfant.annee_naissance
FROM individu enfant
LEFT JOIN evenements_ind ne
ON (enfant.cle_fiche = ne.ev_ind_kle_fiche and
ne.ev_ind_type = 'BIRT')
LEFT JOIN evenements_ind deces
ON (enfant.cle_fiche = deces.ev_ind_kle_fiche and
deces.ev_ind_type = 'DEAT' )
where
enfant.kle_dossier = :I_DOSSIER AND
enfant.sexe = :I_SEXE
ORDER BY enfant.nom
INTO :NOM,
:PRENOM,
:SURNOM,
:SEXE,
:CLE_FICHE,
:CLE_PERE,
:CLE_MERE,
:KLE_DOSSIER,
:DATE_NAISSANCE,
:ANNEE_DECES,
:CP,
:VILLE,
:NUM_SOSA,
:DATE_DECES,
:CP_DECES,
:VILLE_DECES,
:ANNEE_NAISSANCE
do
suspend;
end
et pareil avec celle ci
ALTER PROCEDURE PROC_TROUVE_IND_PAR_LETTRE (
A_LETTRE VARCHAR (1) CHARACTER SET ISO8859_1,
I_DOSSIER INTEGER)
RETURNS (
NOM VARCHAR (40) CHARACTER SET ISO8859_1)
AS
BEGIN
/*---------------------------------------------------------------------------
Copyright Philippe Cazaux-Moutou. Tout droits réservés.
Créé le : 31/07/2001
à : 19:47:54
Modifiée le :
à : :
par :
Description :
Usage :
---------------------------------------------------------------------------*/
A_LETTRE = UPPER(A_LETTRE);
FOR
SELECT DISTINCT NOM
FROM INDIVIDU
WHERE nom STARTING WITH :A_LETTRE AND
KLE_DOSSIER = :I_DOSSIER
ORDER BY nom
INTO :NOM
DO
BEGIN
SUSPEND;
END
END