IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Appeler une procédure stockée


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué Avatar de Daniel MOREAU
    Inscrit en
    Décembre 2004
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 372
    Points : 142
    Points
    142
    Par défaut Appeler une procédure stockée
    Bonjour à tous,

    Je n'ai pas beaucoup de connaissance en DELPHI, néanmoins je souhaiterai ajouter une procédure stockée sur le clic d'un bouton.

    La procédure fait appel à un paramètre qui est la RefClient.

    En recherchant, j'ai ajouté le code suivant sur mon bouton

    procedure AjouterReg_OnClick(Sender);
    begin
    SysExecNotifyEvent(vAjouterReg_OnClick, AjouterReg);
    Buro_NotesFacturesEchues.parambyname('@RefClient').asstring :=dsFacture.Dataset.FieldByName('CLI_CODCLI').AsString;
    Buro_NotesFacturesEchues.execproc;
    end;
    Lorsque je clic sur le bouton de mon écran, j'ai le message suivant suivant qui s'affiche

    Symbole Buro_NotesFacturesEchues non trouvé. Position (406)
    Pouvez-vous m'aider à règler ce problème.

    Merci d'avance

    Daniel

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Procédure stockée ok , mais de quel SGBD et renvoie t'elle des données ? et quels composants d'accès a la Base?

    Perso , j'utilise Firebird , pour une procédure stockée 2 solutions
    - avant , avec le BDE , j'utilisais TStoredProc
    avec DBExpress ( peu utilisé)

    Maintenant , j'utilise une procédure me renvoyant des données comme une Query 'classique' (Zeos, Firedac)
    et ce via une Query
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM PROCEDURE(:Param)
    et un Open
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre habitué Avatar de Daniel MOREAU
    Inscrit en
    Décembre 2004
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 372
    Points : 142
    Points
    142
    Par défaut
    Re,

    Merci pour la réponse.

    C'est une procédure créée sous sql server studio express dont voici le code :

    ALTER PROCEDURE [dbo].[IncCompteur]
    @compteurID integer,
    @newValue varchar(20) output,
    @RefClient varchar(20)
    AS
    Declare @n integer
    Declare @mes varchar(50)
    Declare @CodeClient varchar(20)
    begin transaction

    select @n = compteur from compteurs c (tablock) where c.code = @compteurID

    update compteurs
    set compteur = compteur + 1
    where code = @compteurID

    select @newValue = convert(varchar(20), @n)
    select @RefClient = @CodeClient
    commit transaction
    Le bouton de mon écran fait appel à cette procédure.

    Je l'ai donc modifié (couleur orange) en sorte de pouvoir récupérer le paramètre RefClient utilisé dans la seconde procédure stockée Buro_NotesFacturesEchues.

    Le code est-il correct ?
    Faut-il procéder différemment ?

    Merci pour ton aide.

    Daniel

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Quelle est le type du composant Buro_NotesFacturesEchues ? (TStoredProc, TAdoStoredProc, TBiduleStorecProc, TQuery, etc ...)
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    output affecte-il juste newValue ? ou newValue ET RefClient ?
    Je pense qu'il manque output sur RefClient pour indiquer que c'est un paramètre de retour !
    @CodeClient n'étant jamais alimenté, cela ne sert à rien !
    Tu ne sembles pas du tout savoir ce que tu fais !

    Difficile de comprendre le lien entre IncCompteur et Buro_NotesFacturesEchues !
    Avec le code fourni, on ne voit pas de lien !

    Est-ce le bon utilisateur ?
    Peut-être que ton utilisateur DB en cours n'a pas le droit d'utiliser (ou même de connaitre) l'existence de Buro_NotesFacturesEchues dans ta DB SQL Server (je ne connais pas les droits sur le schéma de ce SGBD)

    Pourquoi ne pas plutôt faire un CREATE SEQUENCE ?
    la SEQUENCE est justement conçu pour gérer un compteur robuste à l'accès
    concurrentiel
    Cela évitera de calculer soit même le compteur !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre habitué Avatar de Daniel MOREAU
    Inscrit en
    Décembre 2004
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 372
    Points : 142
    Points
    142
    Par défaut
    Re,

    C'est une procédure stockée sous SQL SERVER (.

    Je pense que c'est une TStoredProc

    Voici le début du code de la procédure

    set ANSI_NULLS OFF
    set QUOTED_IDENTIFIER OFF
    GO

    ALTER PROCEDURE [dbo].[Buro_NotesFacturesEchues]
    @RefClient char(20)
    AS
    SET LANGUAGE US_ENGLISH
    declare @MaxNum int
    declare @NbFEch int
    declare @NbFTot int
    declare @NomClient char(20)
    declare @TotEchu float
    declare @TotEncours float
    declare @CodeCompta char(10)
    declare @CodeCial char(10)
    declare @blocage char(20)
    declare @MaxDateEch char(10)

    SET ANSI_NULL_DFLT_ON ON
    SET NOCOUNT OFF



    Declare Cur_art insensitive Cursor for
    select G.CLI_CODCLI, sum(g.NbFreEchu) as NbFactEchue, sum(g.TotalEchu) as TotEchu, sum(G.totalNonRgl) as totEncours, sum(g.nbfactMOIS) as nbfact, G.ANOMFAC, G.CODE_COMPTABLE, g.REP_CODE, g.blocage, max(g.DepasEch) as MaxdateEch
    Merci

Discussions similaires

  1. Appeler une procédure stockée a partir d'une autre
    Par wodel dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 29/11/2006, 14h07
  2. Réponses: 1
    Dernier message: 07/02/2006, 00h11
  3. Réponses: 3
    Dernier message: 17/01/2006, 17h12
  4. Update appelant une procédure stockées
    Par meufeu dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 06/10/2005, 18h31
  5. [appeler une procédure stockée]
    Par viny dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 10/03/2005, 22h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo