Bonjour,
Dans IBOConsole, exécutez le script suivant pour créer la procédure PROC_SEPARATION_PRENOMSCOMMIT WORK;
SET AUTODDL OFF;
SET TERM ^ ;
/* Stored procedures */
CREATE PROCEDURE "PROC_SEPARATION_PRENOMS"
(
"I_DOSSIER" INTEGER,
"I_VIRGULE" INTEGER
)
AS
BEGIN EXIT; END ^
ALTER PROCEDURE "PROC_SEPARATION_PRENOMS"
(
"I_DOSSIER" INTEGER,
"I_VIRGULE" INTEGER
)
AS
DECLARE VARIABLE NOUVEAU_NOM VARCHAR(60) CHARACTER SET ISO8859_1;
DECLARE VARIABLE SEPARATION INTEGER;
DECLARE VARIABLE I INTEGER;
DECLARE VARIABLE I_LEN INTEGER;
DECLARE VARIABLE CHAINE VARCHAR(60) CHARACTER SET ISO8859_1;
DECLARE VARIABLE CAR VARCHAR(1) CHARACTER SET ISO8859_1;
DECLARE VARIABLE CLEF INTEGER;
begin
/*---------------------------------------------------------------------------
Créée le : 26/08/2006 par André
Description : Cette procédure modifie le séparateur dans les prénoms
Usage : I_VIRGULE=0 : met un seul espace de séparation
I_VIRGULE=1 : met une virgule et un espace de séparation
---------------------------------------------------------------------------*/
for select cle_fiche,RTRIM(LTRIM(prenom))
from individu
where KLE_DOSSIER=:I_DOSSIER
into :clef,
:CHAINE
do
begin
while (STRLEN(CHAINE)>0
and substring(CHAINE from 1 for 1) in(' ',',')) do
CHAINE=substring(CHAINE from 2 for 60);
while (STRLEN(CHAINE)>0
and substr(CHAINE,strlen(CHAINE),strlen(CHAINE)) in(' ',',')) do
CHAINE=substr(CHAINE,1,strlen(CHAINE)-1);
I_LEN=STRLEN(chaine);
NOUVEAU_NOM='';
SEPARATION=0;
I=1;
while (I<=I_LEN) do
begin
CAR=substr(chaine,I,I);
if (CAR in (' ',',')) then
SEPARATION=1;
else
begin
if (SEPARATION=1) then
begin
if (I_VIRGULE=1) then
NOUVEAU_NOM=NOUVEAU_NOM||', ';
else
NOUVEAU_NOM=NOUVEAU_NOM||' ';
SEPARATION=0;
end
NOUVEAU_NOM=NOUVEAU_NOM||CAR;
end
I=I+1;
end
update individu
set prenom=:NOUVEAU_NOM
where CLE_FICHE=:CLEF;
end
end ^
SET TERM ; ^
COMMIT WORK;
SET AUTODDL ON;
Dans le BOA ou autre exécutez EXECUTE PROCEDURE PROC_SEPARATION_PRENOMS(I_DOSSIER,I_VIRGULE);
où
I_DOSSIER est votre n° de dossier et
I_VIRGULE=0 pour avoir un seul espace de séparation
I_VIRGULE=1 pour avoir une virgule et un espace de séparation
dans le BOA cliquez sur "Exécutez procédure", parce que la procédure ne retourne pas de données.
Est-il nécessaire de vous rappeler les précautions d'usage?
Dites-moi si çà correspond à votre besoin.
A+
André