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 :

[ORACLE][SQL] procedure sous delphi avec une requete SQL


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 23
    Points : 22
    Points
    22
    Par défaut [ORACLE][SQL] procedure sous delphi avec une requete SQL
    Je gère une base de données ORACLE via delphi. J'ai besoin de lancer une requête SQL plusieurs fois pour afficher des résultats sur un même écran.
    Pour cela, je veux créer une procédure locale contenant ma requête. Cependant, je dois passer dans ma requête divers paramêtres.
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    mabase.query.add('select * from matable where champ1= param0 or champ1= param1');
    mabase.query.params[0].value:=edit1.text;
    mabase.query.params[1].value:=edit2.text;
    mabase.query.open;
    Mon problème est le suivant:
    lorsque j'appelle ma procedure je veux lui passer en parametre le nombre de params de ma requête, car suivant ce que je veux afficher il arrive que j'ai un paramêtre supplémentaire à imposer dans les conditions de ma requête.

    Quelqu'un a-t-il une solution? Ou faut -il que je créais plusieurs procédures contenant diverses requêtes ce qui alourdira mon code et l'éxecution?

    D'avance merci.
    miliprog

  2. #2
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 43
    Points : 52
    Points
    52
    Par défaut
    Salut,
    je te propose la solution (simple) suivante :

    tu crées une méthode dans ton Datamodule (ici de classe TDataModule2 qui ouvre une Query1) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TDataModule2.OpenQuery1WithParams(aTableName, aFieldName : String; aParams: TStringList);
    var clauseWhere : string;
      i : integer;
    begin
      clauseWhere := ' ' + aFieldName + ' = ' + aParams[0];
      for i := 1 to aParams.Count - 1 do
        clauseWhere := clauseWhere + ' or ' + aFieldName + ' = ' + aParams[i];
      Query1.SQL.Text := 'Select * from ' + aTableName + ' Where ' + clauseWhere;
      Query1.Open;
    end;
    Cette procédure prend en paramètre le nom de ta table, le nom du champ sur lequel tu auras à appliquer la clause Where de ta requete et une liste de chaine contenant tes paramètres.
    Pour appeler ca, un petit exemple sur le clic d'un bouton d'une form:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.Button1Click(Sender: TObject);
    var stringList : TStringList;
    begin
      stringList := TStringList.Create;
      Try
        stringList.Add('AE');
        stringList.Add('FR');
        DataModule2.OpenQueryWithParams('V_PAYS', 'C_PAYS', stringList);
      finally
        stringList.Free;
      end;
    end;

    FRANK
    La table est donc V_PAYS, le champ C_PAYS et donc les pays à afficher seront ceux dont les codes sont AE et FR. Tout se joue donc sur la construction de ta stringList de départ.

    Voila c'est plutôt simple. En éspérant t'avoir aidé.

    PS : on peut même mettre en paramètre l'ensemble de donnée pour fabriquer une méthode complètement générique, mais bon, je te laisse faire...

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 23
    Points : 22
    Points
    22
    Par défaut requete sql sous delphi
    merci ElNam
    miliprog

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/11/2014, 13h26
  2. Réponses: 5
    Dernier message: 09/07/2008, 17h04
  3. Réponses: 2
    Dernier message: 03/09/2006, 11h02
  4. Problème avec une requete SQL sous access
    Par Luther13 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 14/12/2005, 10h39
  5. [VB.NET] Remplir une ComboBox avec une requete sql
    Par graphicsxp dans le forum Windows Forms
    Réponses: 6
    Dernier message: 22/03/2005, 15h29

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