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 actif
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 265
    Points : 290
    Points
    290
    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 sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    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 actif
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Décembre 2014
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Décembre 2014
    Messages : 105
    Points : 235
    Points
    235
    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 actif
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 265
    Points : 290
    Points
    290
    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 038
    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 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    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
    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

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

    Informations forums :
    Inscription : Mai 2003
    Messages : 265
    Points : 290
    Points
    290
    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