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 :

Récupération de plusieurs tuples d'une procédure stockée


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 27
    Points : 17
    Points
    17
    Par défaut Récupération de plusieurs tuples d'une procédure stockée
    Tout d'abord bonjour!

    voici ma procédure stockée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    ALTER PROCEDURE [dbo].[Fplusieursfournisseurs] (@lib varchar(50), 
    										 @id int output, 
    										 @ville varchar(50) output, 
    									     @telephone varchar(50) output)
    as
    begin
    declare C1 cursor for
    select FOURNISSEUR_ID, FOURNISSEUR_VILLE, FOURNISSEUR_TELEPHONE
    from fournisseur
    where FOURNISSEUR_LIBELLE = @lib
     
    open C1;
     
    FETCH C1 INTO @id, @ville, @telephone
     
    WHILE @@FETCH_STATUS = 0
    BEGIN
    	FETCH next from C1 INTO @id, @ville, @telephone
    END
     
    close C1
    deallocate C1;
     
    end
    J'essai sous Delphi grâce à une ADOStoredProc et à une Datasource, de récupérer les différents tuples sortant de ma procédure stockée dans un DBCtrlGrid mais cela ne fonctionne pas!

    Voila pourtant le code sous Delphi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Fplusieursfournisseurs.Parameters[1].Value:=label_nom.Caption;
    Fplusieursfournisseurs.ExecProc;
    La Datasource est bien reliée à la procédure, ainsi que le CDCtrlGrid est bien relié à la Datasource. Mais impossible de trouver des Datafield pour un DBText!
    L'erreur produite lorsque je cherche un Datafield :

    Fplusieursfournisseurs: CommandText ne renvoie pas un ensemble de résultats

    Je pense que cette erreur est logique venant d'une procédure stockée mais je ne connais pas d'alternative (étant débutant en Delphi/SQL)

    J'ai pensé à utilisé une table temporaire, mais c'est du bidouillage pour moi, j'aurai bien aimé trouver une solution...

    Merci!

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par rophi Voir le message
    Tout d'abord bonjour!
    Bonjour à toi et bienvenue sur DVP

    Ceci devrait t'intéresser:
    Citation Envoyé par Aide de Delphi
    Conseil :
    Si une application ne s'intéresse qu'à l'ensemble de résultats renvoyé par une procédure stockée,appelez la méthode Open du composant TADOStoredProc ou affectez la valeur true à sa propriété Active.
    Bref fais un Open et non ExecProc.

    @+ Claudius

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    Merci de ta réponse Cl@udius mais j'ai toujours le même message d'erreur qui s'affiche:

    Fplusieursfournisseurs: CommandText ne renvoie pas un ensemble de résultats

    Apparement rien ne ressort de la requête...
    J'ai bien mis Open à la place d'ExecProc et ce message d'erreur s'affiche au lancement de la requête lorsque je lance l'application

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    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 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut


    il ne faudrait pas plutôt faire quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM LAPROCEDURE
    et avoir un SUSPEND dans cette même procedure

    j'avoue ne pas avoir lu la dite procedure et ne pas avoir du temps pour la lire serieusement mais c'est le truc classique d'une procedure renvoyant un ensemble d'enregistrement
    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

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    SergioMaster bonjour!

    Je ne veut faire que des procédures stockées.

    J'ai beau me creuser la tête je ne trouve pas de solution

  6. #6
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    Citation Envoyé par SergioMaster
    avoir un SUSPEND dans cette même procedure
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    Salut Edam!

    J'ai essayé d'en mettre un de SUSPEND! mais le résultat est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Msg 102, Level 15, State 1, Procedure Fplusieursfournisseurs, Line 21
    Incorrect syntax near 'SUSPEND'.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 46
    Points : 58
    Points
    58
    Par défaut
    Bonjour,
    Effectivement, un suspend cela ne marche que en Interbase. En SQL Server (apparement vu ton code), créer une vue serait une bonne solution.
    Sinon, as-tu essayé de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM Fplusieursfournisseurs @lib

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    Bonjour phoenix38 et merci de ta réponse!

    Je vais essayer ce que tu me proposes!

    Je ne sais pas trop ce qu'est une vue, je pensais aussi à faire une table temporaire afin d'y accéder ensuite sous delphi mais comme je l'ai dit je ne suis qu'un débutant.
    Et les tuto. sur les procédures stockées ne sont pas nombreux ni trés complets surtout pour les récupérer sous Delphi...

    Merci à tous de votre aide

  10. #10
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/10/2011, 16h51
  2. Réponses: 2
    Dernier message: 26/01/2010, 10h05
  3. Plusieurs colonnes pour une procédure stockée.
    Par Helau dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 22/01/2008, 15h25
  4. Réponses: 3
    Dernier message: 13/10/2007, 16h31
  5. [DEBUTANT]Récupérer plusieurs champs dans une procédure stockée
    Par tripper.dim dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/06/2007, 17h58

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