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

C++Builder Discussion :

[TADOStoredProc] initialisation des paramètres et lancement


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 14
    Points : 14
    Points
    14
    Par défaut [TADOStoredProc] initialisation des paramètres et lancement
    bonjour, Après avoir fait des recherches sur Internet et sur ce forum, je n'ai pas vraiment trouvé ce que je voulais alors je vous expose mon problème :

    j'ai un logiciel de base de donnée (oracle) sur lequel j'ai une procédure stockée (ajoutpersonne(nom varchar2, prenom varchar2)).
    J'aimerai savoir exactement la manipulation pour déclencher cette procédure à partir de mon programme.
    j'ai un élément TADOConnection et un élément TADOStoredProc.
    la connection est initialisée, et l'objet TADOStoredProc possede pour propriété connection la connection ci dessus et en membre "ProcedureName" : "ajoutpersonne". Il me manque plus qu'à initialisé les paramètre avec les champs texte et l'executer. (la procedure ou plutot fonction retourne une valeur)

    Pouvez vous m'indiquer la marche a suivre pour initialiser les paramètres. Car pour executer la procedure c'est ExecProc().
    Merci d'avance

  2. #2
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 26
    Points : 30
    Points
    30
    Par défaut
    Utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Proc->Parameters->CreateParameter(Nom,Type,Direction,Taille,NULL);
    Extrait de l'aide de Builder :
    Ajoute un paramètre à l'ensemble de paramètres.

    TParameter* __fastcall CreateParameter(const WideString Name, Db::TFieldType DataType, TParameterDirection Direction, int Size, const OleVariant &Value);

    Description

    Appelez CreateParameter pour créer un seul objet TParameter et l'ajouter à l'ensemble TParameters. Les valeurs des propriétés du nouvel objet TParameter aojuté sont fournies via les paramètres CreateParameter.

    Name est une valeur de type WideString contenant le nom du nouvel objet TParameter créé.

    DataType est une valeur de type TDataType indiquant le type de données du paramètre que le nouvel objet TParameter représente.

    Direction est une valeur de type TParameterDirection indiquant le type du paramètre. Un paramètre représenté par un TParameter peut être un des types : entrée, sortie, entrée-sortie ou valeur renvoyée. Désignez un paramètre inconnu si le type de paramètre est inconnu au moment de la création du TParameter.

    Size est une valeur entière indiquant la taille maximale de la valeur du paramètre.

    Value est du type OleVariant contenant la valeur du paramètre. Il n'est pas nécessaire de transmettre de valeur à Value lors de la création du TParameter. Elle peut être affectée plus tard. Si aucune valeur n'est affectée à ce moment, transmettez NULL à Value.

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 14
    Points : 14
    Points
    14
    Par défaut oki mais
    merci pour l'info car moi j'hesitais avec addparameter(...).

    mais pour cette methode :

    Proc->Parameters->CreateParameter(Nom,Type,Direction,Taille,NULL);
    le nom correspond au nom d'un parametre de la méthode ou je lui fourni le nom du paramètre correspondant au paramètre nom de ma procédure stockée.

    Je sais c'est des questions bêtes mais je n'ai pas d'exemples

  4. #4
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 26
    Points : 30
    Points
    30
    Par défaut
    J'utilise cela avec SQL server.

    Dans ce cas là, il faut que tous les paramètres (Nom,Type,Taille,Direction) correspondent EXACTEMENT à ceux décrit dans la procédure Stockée.

    Contrairement à ce que l'on pourrait croire, l'ordre de création des paramètres n'est pas suffisant pour faire le lien entre le TADOStoredProc et la procédure stockée.

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 14
    Points : 14
    Points
    14
    Par défaut ca marche aps
    il me dit erreur d'acces dans le module etc.. (acces violation at adress ... in module ...) j'ai juste fait ca.
    mais je ne sais pas si cela convient avec oracle:
    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
     
    maprocstoc->Active = true;
            maprocstoc->Parameters->AddParameter();
            maprocstoc->Parameters->CreateParameter("titre",ftString,pdInput,4,edtitre->Text);
            maprocstoc->Parameters->CreateParameter("nom",ftString,pdInput,128,ednom->Text);
            maprocstoc->Parameters->CreateParameter("prenom",ftString,pdInput,128,edprenom->Text);
            maprocstoc->Parameters->CreateParameter("adr1",ftString,pdInput,128,edadr->Text);
            maprocstoc->Parameters->CreateParameter("adr2",ftString,pdInput,128,edadr2->Text);
            maprocstoc->Parameters->CreateParameter("cp",ftString,pdInput,5,edcp->Text);
            maprocstoc->Parameters->CreateParameter("ville",ftString,pdInput,128,edville->Text);
            maprocstoc->Parameters->CreateParameter("tel",ftString,pdInput,12,edtel->Text);
            maprocstoc->Parameters->CreateParameter("fax",ftString,pdInput,12,edfax->Text);
            maprocstoc->Parameters->CreateParameter("gsm",ftString,pdInput,12,edport->Text);
            maprocstoc->ExecProc();
            maprocstoc->Active = false;
    merci de me repondre rapidement si vous en avez la possibilité

  6. #6
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 26
    Points : 30
    Points
    30
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maprocstoc->Active = true;
    Demande l'exécution de la procédure stockée.
    C'est donc normal que ça plante vu qu'il y a pas de paramètres.

    D'ailleurs, on utilise ExecProc() dans le cas d'une procédure stockée ne renvoyant pas de jeu d'enregistrement et Active=true dans le cas contraire

    Ce qui nous fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    maprocstoc->Parameters->Clear(); // pour supprimer tous les paramètres si'il y an avait
    maprocstoc->Parameters->AddParameter();
            maprocstoc->Parameters->CreateParameter("titre",ftString,pdInput,4,edtitre->Text);
            maprocstoc->Parameters->CreateParameter("nom",ftString,pdInput,128,ednom->Text);
            maprocstoc->Parameters->CreateParameter("prenom",ftString,pdInput,128,edprenom->Text);
            maprocstoc->Parameters->CreateParameter("adr1",ftString,pdInput,128,edadr->Text);
            maprocstoc->Parameters->CreateParameter("adr2",ftString,pdInput,128,edadr2->Text);
            maprocstoc->Parameters->CreateParameter("cp",ftString,pdInput,5,edcp->Text);
            maprocstoc->Parameters->CreateParameter("ville",ftString,pdInput,128,edville->Text);
            maprocstoc->Parameters->CreateParameter("tel",ftString,pdInput,12,edtel->Text);
            maprocstoc->Parameters->CreateParameter("fax",ftString,pdInput,12,edfax->Text);
            maprocstoc->Parameters->CreateParameter("gsm",ftString,pdInput,12,edport->Text);
            maprocstoc->ExecProc();

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/02/2013, 11h41
  2. Réponses: 0
    Dernier message: 22/02/2010, 14h03
  3. Réponses: 9
    Dernier message: 29/08/2008, 08h38
  4. Réponses: 3
    Dernier message: 21/08/2008, 23h13
  5. Réponses: 10
    Dernier message: 13/09/2006, 09h13

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