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 :

[D2010] Utilisation de paramètres dans une requête SQL Oracle avec DBExpress


Sujet :

Bases de données Delphi

  1. #1
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut [D2010] Utilisation de paramètres dans une requête SQL Oracle avec DBExpress
    Mon problème :
    - 1ère requête avec un paramètre exécutée avec un TSimpleDataSet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SimpleDataSetLangueColis.DataSet.Close;
    SimpleDataSetLangueColis.DataSet.CommandText := 'select * from UneTable ';
    SimpleDataSetLangueColis.DataSet.CommandText := SimpleDataSetLangueColis.DataSet.CommandText + 'where UnChamp = :Param1 ';
    try
       SimpleDataSetLangueColis.DataSet.ParamByName('Param1').AsInteger := StrToInt(LabeledEditNumCC.Text);
       SimpleDataSetLangueColis.Open;
    except
       on E: Exception do
       begin
          ShowMessage(E.Message);
       end;
    end;
    - 2ème requête avec un paramètre (ou sans) exécutée avec le même TSimpleDataSet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SimpleDataSetLangueColis.DataSet.Close;
    SimpleDataSetLangueColis.DataSet.CommandText := 'select * from UneTable ';
    SimpleDataSetLangueColis.DataSet.CommandText := SimpleDataSetLangueColis.DataSet.CommandText + 'where UnChamp = :Param1 ';
    try
       SimpleDataSetLangueColis.DataSet.ParamByName('Param1').AsInteger := StrToInt(LabeledEditNumCC.Text);    // <-- ici la valeur du paramètre a changée.
       SimpleDataSetLangueColis.Open;
    except
       on E: Exception do
       begin
          ShowMessage(E.Message);
       end;
    end;
    Après avoir exécuté la requête (la deuxième), la DBGrid affiche toujours le résultat de la première requête. Quoi qu'on fasse, le Open n'a aucun effet.

    Ca ressemble beaucoup au problème que j'avais rencontré lors de mes tests de Delphi 2009 (http://www.developpez.net/forums/d65...cle-dbexpress/).

    Une idée ?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  2. #2
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Question subsidiaire :
    Quelle est la différence entre SimpleDataSet.Open et SimpleDataSet.DataSet.Open ?
    Quelle est la différence entre SimpleDataSet.Close et SimpleDataSet.DataSet.Close ?

    (Dommage qu'il n'y ait d'aide dans Delphi 2010).
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Si je me souviens bien les composants DbExpress sont unidirectionnels (et le SimpleDataSet aussi non ?) si oui, alors il te faut aussi rafraichir le DatasetProvider ou le ClientDataset qui fait tampon avec ta grille et le SimpleDataSet.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  4. #4
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par Rayek Voir le message
    Si je me souviens bien les composants DbExpress sont unidirectionnels (et le SimpleDataSet aussi non ?)
    Justement. Le SimpleDataSet est le seul a être bi-directionnel.
    C'est pour ça qu'on cherche à l'utiliser.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  5. #5
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Ok, alors essai comme çà

    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
     
    With SimpleDataSetLangueColis do
    begin
      DataSet.Close;
      DataSet.Params.clear;// suppression des paramètres déjà créés
      DataSet.CommandText := 'select * from UneTable ';
      DataSet.CommandText := DataSet.CommandText + 'where UnChamp = :Param1 ';
      DataSet.ParamCheck := True; // On force la recréation de nouveaux paramètres
      try
         DataSet.ParamByName('Param1').AsInteger := StrToInt(LabeledEditNumCC.Text);    // <-- ici la valeur du paramètre a changée.
         Open;
      except
         on E: Exception do
         begin
            ShowMessage(E.Message);
         end;
      end;
    End;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  6. #6
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par Rayek Voir le message
    Ok, alors essai comme çà

    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
     
    With SimpleDataSetLangueColis do
    begin
      DataSet.Close;
      DataSet.Params.clear;// suppression des paramètres déjà créés
      DataSet.CommandText := 'select * from UneTable ';
      DataSet.CommandText := DataSet.CommandText + 'where UnChamp = :Param1 ';
      DataSet.ParamCheck := True; // On force la recréation de nouveaux paramètres
      try
         DataSet.ParamByName('Param1').AsInteger := StrToInt(LabeledEditNumCC.Text);    // <-- ici la valeur du paramètre a changée.
         Open;
      except
         on E: Exception do
         begin
            ShowMessage(E.Message);
         end;
      end;
    End;
    Ca ne change rien.

    J'ai un collègue qui a trouvé quelque chose d'intéressant :
    Il faut mettre PacketRecords à sa valeur par défaut (-1) pour obtenir un fonctionnement normal.
    Mais, c'est pas une solution, parce que pour des grosses tables, ca ne va pas être possible.

    Je creuse ...
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  7. #7
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Toujours pas trouvé de solution.

    Personne n'aurait d'idées ?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  8. #8
    Membre habitué Avatar de kanzarih
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2002
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2002
    Messages : 327
    Points : 197
    Points
    197
    Par défaut
    Essaye avec ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SimpleDataSetLangueColis.DataSet.CommandText.clear;
    avant la deuxième requête.
    Bon courage

  9. #9
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par kanzarih Voir le message
    Essaye avec ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SimpleDataSetLangueColis.DataSet.CommandText.clear;
    avant la deuxième requête.
    Bon courage
    Je n'ai pas de fonction Clear derrière le CommandText, étant donné que c'est une String.

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  10. #10
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 216
    Points : 2 303
    Points
    2 303
    Par défaut
    Bonjour,

    Essaye d'utiliser la propriété Active du simpledataset plutôt que Open, je pense que Close et open agissent effectivement sur le dataset local, sans le rafraichir.

    @++
    Dany

  11. #11
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Ca ne change rien.

    Tant que le PacketRecords n'est pas à -1, ca ne veut rien savoir.

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  12. #12
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    CA Y EST !!

    J'ai l'ombre d'une solution :
    Il faut vider la liste des paramètres, si on utilise le PacketRecord.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SimpleDataSet.Params.Clear;
    Attention : ne pas confondre avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SimpleDataSet.Dataset.Params.Clear;
    Des semaines de perdues pour ça !

    Par contre, je ne trouve pas que ca soit un comportement normal.
    Quel rapport entre le PacketRecords et la liste des paramètres ?
    Et pourquoi qnand on ne spécifie pas de valeur dans le PacketRecords, la liste des paramètres se vide toute seule ?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  13. #13
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Citation Envoyé par Lung Voir le message
    Par contre, je ne trouve pas que ca soit un comportement normal.
    Quel rapport entre le PacketRecords et la liste des paramètres ?
    Et pourquoi qnand on ne spécifie pas de valeur dans le PacketRecords, la liste des paramètres se vide toute seule ?
    Avec DbExpress, les datasets sont unidirectionnels. Pour disposer malgré tout de datasets bi-directionnels indispensables aux grilles nottamment, on passe par un clientdataset et la chaîne ClientDataSet + DataSetProvider + DataSet.
    Comme c'est lourd à manipuler (devoir utiliser 3 composants juste pour exécuter une requête SQL ), tu as le composant TSimpleDataSet qui regroupe les trois composants en un seul. Le TSimpleDataSet est un ClientDataSet qui crée automatiquement son provider et son dataset.

    Donc tu dois manipuler le TSimpleDataSet de la même façon qu'un ClientDataSet.

    La propriété PacketRecords permet d'agir sur le nombre d'enregistrements à charger à la fois dans le clientDataSet.
    Lorsqu'il vaut -1, le clientdataset est chargé en une seule fois : Le dataset est lu intégralement au moment de l'ouverture du clientdataset. Le clientdataset est alors totalement déconnecté du dataset qui sert à l'alimenter.
    Lorsqu'il vaut autre chose que -1, le clientdataset va être chargé de façon incrémentale, ce qui implique de maintenir un état connecté entre le dataset et le clientdataset. Ce qui veut dire que le clientdataset va automatiquement utiliser les infos dont il dispose (sa liste de paramètres) pour faire appel au dataset.

    En fait, il ne faut pas manipuler les Params du Dataset directement, il faut uniquement utiliser les Params du ClientDataset :

    A l'initialisation de la fiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      SimpleDataSet1.DataSet.CommandText := 'select * from MaTable where UnChamp = :Param1';
      SimpleDataSet1.Params.CreateParam(ftInteger, 'Param1', ptInput).AsInteger := 0;
    On définit la commande qui permettra de lire les données, on crée manuellement le paramètre dans le clientdataset, de façon à ce qu'il soit créé sans exécuter la requête.

    Puis pour la requête 1, il suffit de définir la valeur du paramètre du clientdataset :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      SimpleDataSet1.Close;
      SimpleDataSet1.Params.ParamByName('Param1').AsInteger := 0;
      SimpleDataSet1.Open;
    Idem pour la requête 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      SimpleDataSet1.Close;
      SimpleDataSet1.Params.ParamByName('Param1').AsInteger := 1;
      SimpleDataSet1.Open;
    De cette façon, ça fonctionne quel que soit la valeur de PacketRecords et quel que soit l'état précédent du clientdataset.

  14. #14
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par Franck SORIANO Voir le message
    Comme c'est lourd à manipuler (devoir utiliser 3 composants juste pour exécuter une requête SQL )
    Tout à fait d'accord.

    Citation Envoyé par Franck SORIANO Voir le message
    tu as le composant TSimpleDataSet qui regroupe les trois composants en un seul.
    C'est bien pour ça que je compte l'utiliser.

    Citation Envoyé par Franck SORIANO Voir le message
    A l'initialisation de la fiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      SimpleDataSet1.DataSet.CommandText := 'select * from MaTable where UnChamp = :Param1';
      SimpleDataSet1.Params.CreateParam(ftInteger, 'Param1', ptInput).AsInteger := 0;
    On définit la commande qui permettra de lire les données, on crée manuellement le paramètre dans le clientdataset, de façon à ce qu'il soit créé sans exécuter la requête.

    Puis pour la requête 1, il suffit de définir la valeur du paramètre du clientdataset :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      SimpleDataSet1.Close;
      SimpleDataSet1.Params.ParamByName('Param1').AsInteger := 0;
      SimpleDataSet1.Open;
    Idem pour la requête 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      SimpleDataSet1.Close;
      SimpleDataSet1.Params.ParamByName('Param1').AsInteger := 1;
      SimpleDataSet1.Open;
    De cette façon, ça fonctionne quel que soit la valeur de PacketRecords et quel que soit l'état précédent du clientdataset.
    J'ai testé ton exemple (il marche ).
    Mais, je trouve dommage de devoir créer soi-même le ou les paramètres utiles.
    Avec le BDE, je n'avais pas ces problèmes, et il se débrouillait tout seul.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/12/2008, 08h05
  2. Comment utiliser des variables dans une requête SQL ?
    Par Ragnarok85 dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 12/02/2007, 16h23
  3. [SQL] Utilisation de variables dans une requête SQL
    Par heteroclite dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 07/09/2006, 22h38
  4. [SQL] Utilisation de variables dans une requête SQL
    Par heteroclite dans le forum Langage
    Réponses: 8
    Dernier message: 07/09/2006, 22h38
  5. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38

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