Quoi, tu ne connais pas PB ? Va falloir parcourir tout le forum alors !

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 21-09-2007 10:30:05

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,776,000

[RESOLU] Subroutine ...

Bonjour,

Est ce que quelqu'un pourrait m'expliquer succintement comment marche les subroutines?
J'ai besoin de faire appel à une procédure stockée mais j'ai besoin aussi de passer en reférence un des paramètres de cette procédure stockée et mes recherches ont abouties sur le mot clé subroutine.

Voici le code que je voudrais quelque peu modifier pour pouvoir passer par référence la variable il_cde_num

Code: pb

//Si l'editeur n'a pas déjà une ligne dans le bloc note historique, on en insere une nouvelle
    declare proc_ins_cde procedure for OBI_I_CSI_SORTIE_CDE_ENTETE_v2
    @cde_num=:il_cde_num,
    @cde_pers=:g_str_user.s_username,
    @cde_nature=:ls_cde_nature,
    @cde_enleveur=:ls_cde_enleveur,
    @cde_ad1=:ls_cde_ad1,
    @cde_ad2=:ls_cde_ad2,
    @cde_cp=:ls_cde_cp,
    @cde_ville=:ls_cde_ville,
    @cde_sortie_date=:ldt_cde_sortie_date,
    @cde_livr_date=:ldt_cde_livr_date,
    @cde_obs_prep=:ls_cde_obs_prep,
    @cde_obs_livr=:ls_cde_obs_livr,
    @cde_transporteur=:ls_cde_transporteur
    Using SQLCA;
    
    execute proc_ins_cde;
    
    If(Sqlca.SQLCode <> 0) Then
      
      ls_msg = sqlca.SQLErrText
      rollback using sqlca;
      if IsNull (ls_msg) then ls_msg = ""
      if ls_msg = "" then ls_msg = "Erreur à la création de la commande"
      MessageBox ("Erreur à la création de la commande", ls_msg)
      return 1


Merci de bien vouloir m'eclairer sur ce sujet.

Dernière modification par Nephtis (25-09-2007 08:09:08)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#2 21-09-2007 11:19:05

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2487
Pépites: 88
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Subroutine ...

Bonjour,

Regarde ici

Tu auras un exemple de déclaration de subroutine en RPCFUNC (seule façon d'appeler des paramètres de procédures stockées en IN/OUT
depuis PB)


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#3 21-09-2007 11:51:52

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Subroutine ...

Code: pb

subroutine GIDE_POPX_CRE_OPERATION(string DSC_PARAM_I,string DATE_BANDEAU_I,string COD_COLL_I,
string COD_BUDG_I,ref string IDOPERAT_O,double COD_SECT_INV_I,double COD_SECT_FON_I,string LIC_OPERAT_I,
string LIB_OPERAT1_I,string LIB_OPERAT2_I,double IND_AP_I,double IND_HAP_I,string NUM_PROG_AP,
double DEPREVTTC_I,string REF_EXTERNE_I,double MNT_PREV_AP_DEP_I,string NUM_SERV_G_I) 
RPCFUNC ALIAS FOR "~"GIDE~".~"GIDE_POPX_CRE_OPERATION~""


Dans cette ligne je ne comprends pas trop pourquoi il faut utiliser "~" après RPCFUNC


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#4 24-09-2007 07:12:35

FMolinas  
Membre Geek
Lieu: Lyon
Date d'inscription: 12-06-2007
Messages: 87
Pépites: 97
Banque: 6,435,474,948,567

Re: [RESOLU] Subroutine ...

Ton code est un bout de PowerScript. Ta base de données est certainement configurée pour mettre les noms entre guillemets.
Le caractère d'échappement "~" suivi d'un guillemet permet de coder celui-ci à l'intérieur d'une chaîne de caractères, sans que le guillemet soit interprété comme un début ou une fin de chaîne PowerScript.

Hors ligne

 

#5 25-09-2007 08:08:45

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Subroutine ...

Merci pour l'eclaircissement FMolinas, j'avais completement zapé que le ~ est le caractère d'échapement.


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#6 25-09-2007 08:55:34

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Subroutine ...

En regardant le code déjà existant j'ai trouvé des appels a des procédures stockées du genre :

Code: pb

if sqlca.PROC_STOCK (&
      ref il_cde_num, &
      g_str_user.s_username, &
      ls_cde_nature, &
      ls_cde_enleveur, &
      ls_cde_ad1, &
      ls_cde_ad2, &
      ls_cde_cp, &
      ls_cde_ville, &
      ldt_cde_sortie_date, &
      ldt_cde_livr_date, &
      ls_cde_obs_prep, &
      ls_cde_obs_livr) <> 0 then

[le code a executer]


Seulement j'ai du créer un version 2 de cette procédure stockée et lorsque je l'apelle via cette commande cela m'affiche le message d'erreur :

Unknown function name : PROC_STOCK_v2

En regardant le code déjà existant j'ai trouvé des appels a des procédures stockées du genre :

Code: pb

if sqlca.PROC_STOCK_v2 (&
      ref il_cde_num, &
      g_str_user.s_username, &
      ls_cde_nature, &
      ls_cde_enleveur, &
      ls_cde_ad1, &
      ls_cde_ad2, &
      ls_cde_cp, &
      ls_cde_ville, &
      ldt_cde_sortie_date, &
      ldt_cde_livr_date, &
      ls_cde_obs_prep, &
      ls_cde_obs_livr) <> 0 then

[le code a executer]


Où faut t'il déclarer la liste des procédure que l'on est ammené à utiliser?


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#7 25-09-2007 09:00:23

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2487
Pépites: 88
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Subroutine ...

Bonjour Nephtis,

Tu as regardé au niveau de la déclaration des Global External Functions?


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#8 25-09-2007 09:11:57

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Subroutine ...

foon a écrit:

Bonjour Nephtis,

Tu as regardé au niveau de la déclaration des Global External Functions?

J'ai regardé dans toutes les pbl du projet et je ne l'ai pas encore trouvé (j'avais fait mes recherches avec le mot clé subroutine)

En recherchant un peut mieux il y a un appel à une fonction d'un object non visuel qui permet de déclarer la procédure qui servira pour l'insertion de données (j'ai pas encore regardé à quoi elle ressemble, j'y retourne tout de suite)
Ce code là était en commentaire, j'approfondi quand même un peu plus ...
Et dans la fonction même il n'y a qu'un commentaire : Function Stub.


Bon je viens finalement de trouver où est ce que les procédures stockées étaient déclarées, dans un object non visuel. Sujet finalement clos

Dernière modification par Nephtis (25-09-2007 10:30:53)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22