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 :

FireDAC, requête select et array DML


Sujet :

Bases de données Delphi

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 267
    Par défaut FireDAC, requête select et array DML
    Bonjour,

    Est-il possible d'utiliser array DML dans une requête "select" par exemple avec l'opérateur "IN" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      FDQuery1.SQL.Add('select * ');
      FDQuery1.SQL.Add('from maTable');
      FDQuery1.SQL.Add('where mon_id in (:p)');
      FDQuery1.Params.ArraySize := 3;
      FDQuery1.params[0].AsStrings[0] := '1';
      FDQuery1.params[0].AsStrings[1] := '3';
      FDQuery1.params[0].AsStrings[2] := '6';
      Open;
    Avec MS SQL ça ne retourne pas d'erreur... mais pas de données non plus !

    Pour le SGBD, nous utilisons indifféremment mySQL, MS-SQL et Oracle.

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    non ce n'est pas possible
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre expérimenté
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Décembre 2014
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Décembre 2014
    Messages : 115
    Par défaut
    Bonsoir,
    Vous pouvez aussi faire une proc qui reçoit un tableau de valeurs et crée la requête SQL, par exemple:
    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
    procedure tForm2.MySelectArray(ArrValues: array of string);
    var vSql : string;
        i : integer;
    begin
      vSql := 'select * from DEFOPE where DOCOD2 in (';
      for i := Low(ArrValues) to High(ArrValues) do
      begin
        vSql := vSql + '''' + ArrValues[i] + '''';
        if i<High(ArrValues) then vSql := vSql + ',';
      end;
      vSql := vSql + ')';
      FDQuery1.SQL.Text := vSql;
      // FDQuery1.params[0].AsString := Values;
      FDQuery1.Open;
    end;
     
    procedure TForm2.Button1Click(Sender: TObject);
    begin
      MySelectArray(['DON','FAC']);
    end;
    solilog

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 267
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    non ce n'est pas possible
    Merci

    Citation Envoyé par solilog Voir le message
    Bonsoir,
    Vous pouvez aussi faire une proc qui reçoit un tableau de valeurs et crée la requête SQL, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure tForm2.MySelectArray(ArrValues: array of string);
    ...
        vSql := vSql + '''' + ArrValues[i] + '''';
    ...
    solilog
    Merci, un avantage des paramètre est de très peu se préoccuper du type de données et de la syntaxe SQL, par exemple les guillemets dans ton exemple.

  5. #5
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 654
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    non ce n'est pas possible
    Les array DML ne semblent être que pour les clauses Insert, Update et, peut-être, Delete, en gros toute requête ne retournant pas de données

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 267
    Par défaut
    On s'en passera, c’était pour le confort.

    Merci.

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

Discussions similaires

  1. Résultat commençant par un chiffre avec requête SELECT
    Par nicolas.pissard dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/04/2010, 13h31
  2. Requête SELECT dans un Array
    Par dj-julio dans le forum Langage
    Réponses: 3
    Dernier message: 26/01/2010, 15h04
  3. Insertion multiple à base de sous requête SELECT
    Par drinkmilk dans le forum Langage SQL
    Réponses: 8
    Dernier message: 14/04/2005, 16h34
  4. SQL Server 7.0 - Requête Select
    Par sangokus dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 23/03/2004, 10h32
  5. Optimisations mysql sur les requêtes SELECT: index
    Par leo'z dans le forum Débuter
    Réponses: 2
    Dernier message: 29/11/2003, 13h23

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