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 :

requete SQL sous delphi


Sujet :

Bases de données Delphi

  1. #1
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 12
    Par défaut requete SQL sous delphi
    Bonjour tout le monde,

    je voudrai savoir comment executer une requete "select" dans un programme delphi.

    voila une portion de mon programme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    query1.SQL.Clear;
     
    query1.SQL.Add('select nom');
    query1.SQL.Add('from matable);
    query1.SQL.Add('where mat=une valeur donnee');
    query1.Open;
    ........
    NB:je voudrai que lorsque je clique sur un boutton,la requete sera executee et affiche le resultat dans Tedit.

    un tuto si vous en avez?

    Merci.

  2. #2
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      with query1 do
      begin
        SQL.Clear;
        SQL.Add('select nom');
        SQL.Add('from matable');
        SQL.Add('where mat=une valeur donnee');
        Open;
        // Placer la valeur retournée dans le Edit
        Edit1.Text := FieldByName('NOM').Value;
      end;
    @+ Claudius

  3. #3
    Inactif
    Homme Profil pro
    Analyste-programmeur Delphi
    Inscrit en
    Décembre 2003
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-programmeur Delphi

    Informations forums :
    Inscription : Décembre 2003
    Messages : 490
    Par défaut
    Cher Cl@udius,
    une précision pour moi :

    vaut-il mieux utiliser "FieldByName('NOM').Value"
    ou bien "FieldByName('NOM').AsString" ?

    Et pourquoi, si ce n'est pas abuser.

    Merci d'avance.

  4. #4
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Citation Envoyé par od.dev
    Cher Cl@udius,
    une précision pour moi :

    vaut-il mieux utiliser "FieldByName('NOM').Value"
    ou bien "FieldByName('NOM').AsString" ?

    Et pourquoi, si ce n'est pas abuser.

    Merci d'avance.

    + 1 Remarque judicieuse ! Il est préférable d'utiliser AsString pour s'assurer de bien affecter une chaîne de caractères à l'Edit (au cas où NOM serait égal à NULL).

    @+ Claudius

  5. #5
    Inactif
    Homme Profil pro
    Analyste-programmeur Delphi
    Inscrit en
    Décembre 2003
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-programmeur Delphi

    Informations forums :
    Inscription : Décembre 2003
    Messages : 490
    Par défaut
    Ok, merci.

    La réponse est claire, mais je m'attendais à une réponse concernant les variants, que j'ai un peu de mal à appréhender.
    J'ai lu quelque part, et c'est logique, que les variants sont hyper gourmands en ressources,
    mais laquelle des deux expressions utilise un variant :
    .Value
    ou bien .AsString,
    ou encore aucune ?

    J'avoue que j'ai quelques lacunes de ce côté, et j'aimerai beaucoup être sûr de ne pas employer des variants sans m'en rendre compte.

    Merci encore.

  6. #6
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut

    Citation Envoyé par od.dev
    Ok, merci.

    La réponse est claire, mais je m'attendais à une réponse concernant les variants, que j'ai un peu de mal à appréhender.
    J'ai lu quelque part, et c'est logique, que les variants sont hyper gourmands en ressources,
    mais laquelle des deux expressions utilise un variant :
    .Value
    ou bien .AsString,
    ou encore aucune ?
    eh bien, il aurait suffit d'un petit sur ces 2 propriétés pour savoir que Value est de type Variant et AsString est de type String

  7. #7
    Inactif
    Homme Profil pro
    Analyste-programmeur Delphi
    Inscrit en
    Décembre 2003
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-programmeur Delphi

    Informations forums :
    Inscription : Décembre 2003
    Messages : 490
    Par défaut
    Ok merci.

    Donc quel peut être l'intérêt d'utiliser ".Value" ?

  8. #8
    Membre éclairé
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Par défaut
    je l'utilise uniquement pour les dates

  9. #9
    Membre Expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Par défaut
    si le Value est la c'est qu'il a certainement une utilité, moi j'utilise toujours le value, cela m'évite plusieurs peine de conversion de type.

  10. #10
    Inactif
    Homme Profil pro
    Analyste-programmeur Delphi
    Inscrit en
    Décembre 2003
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-programmeur Delphi

    Informations forums :
    Inscription : Décembre 2003
    Messages : 490
    Par défaut
    Citation Envoyé par Mihalis
    je l'utilise uniquement pour les dates
    ben, ily aAsDateTime

    Citation Envoyé par aityahia
    si le Value est la c'est qu'il a certainement une utilité
    cela ne nous dis pas laquelle.

  11. #11
    Membre éclairé Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    Par défaut

    alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      with QSelect do
            begin
                    SQL.Clear;
                    SQL.Add('SELECT Name,LogDate,LogTime FROM Thistory');
                    SQL.Add('WHERE Name = :Name');// 1ere parametre
                    SQL.Add('AND LogDate = :LogDate'); // 2eme parametere
                    Parameters[0].Value := edit1.text;   // la variable Name
                    Parameters[1].Value := DateToStr(Ldate); // la variable logDate
                    ExecSQL;
                    Open;
            end;

  12. #12
    Inactif
    Homme Profil pro
    Analyste-programmeur Delphi
    Inscrit en
    Décembre 2003
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-programmeur Delphi

    Informations forums :
    Inscription : Décembre 2003
    Messages : 490
    Par défaut
    Et :

    Parameters[0].AsString := edit1.text; // la variable Name
    Parameters[1].AsDate := DateToStr(Ldate); // la variable logDate

    ça devrait marcher.

  13. #13
    Inactif
    Homme Profil pro
    Analyste-programmeur Delphi
    Inscrit en
    Décembre 2003
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-programmeur Delphi

    Informations forums :
    Inscription : Décembre 2003
    Messages : 490
    Par défaut
    Tiens, ben ton code ne marche même pas chez moi.
    Il ne connaît pas Parameters.

    De plus je le trouve bizarre, pourquoi tu fais un ExecSQL avant l'Open ?

  14. #14
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Citation Envoyé par od.dev
    Tiens, ben ton code ne marche même pas chez moi.
    Il ne connaît pas Parameters.
    Cela dépend des compos que tu utilises. Cette syntaxe doit correspondre au compos ADO (sauf erreur).

    Citation Envoyé par od.dev
    De plus je le trouve bizarre, pourquoi tu fais un ExecSQL avant l'Open ?
    Tu as parfaitement raison !! +1
    Le ExecSQL est en trop. Seul le Open est nécessaire puisque c'est une requête SELECT.

    @+ Claudius

  15. #15
    Membre éclairé Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    Par défaut
    Citation Envoyé par od.dev
    Tiens, ben ton code ne marche même pas chez moi.
    Il ne connaît pas Parameters.

    De plus je le trouve bizarre, pourquoi tu fais un ExecSQL avant l'Open ?


    alors le code travaille tres bien avec moi ADO compsant.

    pour le ExecSQL je l'oublie mais ca marche normal avec ou sans.

  16. #16
    Inactif
    Homme Profil pro
    Analyste-programmeur Delphi
    Inscrit en
    Décembre 2003
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-programmeur Delphi

    Informations forums :
    Inscription : Décembre 2003
    Messages : 490
    Par défaut
    Ok, ceci explique cela.

    Mais je maintiens qu'il vaut mieux, et de loin, utiliser .As... qu'utiliser des variants avec .Value.
    Dans certains cas (rares ?), effectivement, je n'ai pu faire autrement que d'utiliser .Value, p.e. :

    pour tester une valeur dont on ne sait pas si elle est Null :
    "FieldByName('DateFact').AsDate <> Null" va évidemment planter si DateFact est Null,

    j'ai donc dû faire :
    "FieldByName('DateFact').Value <> Null" qui marche très bien.

    Je dis tout cela en espérant que des experts me le confirment.
    De plus quelqu'un pourrait-il confirmer ou infirmer que l'utilisation des variants pénalise lourdement une application, et, tant qu'à faire, pourquoi ?
    (on peut toujours demander )

    Merci d'avance.

  17. #17
    Inactif
    Homme Profil pro
    Analyste-programmeur Delphi
    Inscrit en
    Décembre 2003
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-programmeur Delphi

    Informations forums :
    Inscription : Décembre 2003
    Messages : 490
    Par défaut
    Citation Envoyé par aliwassem


    alors le code travaille tres bien avec moi ADO compsant.

    pour le ExecSQL je l'oublie mais ca marche normal avec ou sans.
    Ok, ceci explique cela.

    Je maintiens qu'il vaut mieux, et de loin, utiliser .As... que de passer par les variants avec .Value.

    Le seul cas rencontré où j'ai été obligé d'utiliser .Value, c'était pour tester une valeur à Null :

    "FieldByName('DateFact').AsDate <> Null" plante si DateFact est Null.
    "FieldByName('DateFact').Value <> Null" marche très bien dans tous les cas.

    Je dis tout cela en espérant que des experts me disent si je suis à côté de mes pompes ou non.
    J'aimerais qu'on me confirme que l'utilisation des variants pénalise lourdement une application, et pourquoi (on peut toujours demander ).

  18. #18
    Membre Expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Par défaut
    Citation Envoyé par od.dev
    Ok, ceci explique cela.

    pour tester une valeur dont on ne sait pas si elle est Null :
    "FieldByName('DateFact').AsDate <> Null" va évidemment planter si DateFact est Null,
    Merci d'avance.
    (Not FieldByName('DateFact').IsNull ) c'est encore mieux.

  19. #19
    Inactif
    Homme Profil pro
    Analyste-programmeur Delphi
    Inscrit en
    Décembre 2003
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-programmeur Delphi

    Informations forums :
    Inscription : Décembre 2003
    Messages : 490
    Par défaut
    Hé ben super, voilà qui ne me fait pas regrêter mon post.

    Merci pour l'info aityahia, je n'y avais pas pensé, du coup je n'ai plus besoin des variants (pour l'instant).

Discussions similaires

  1. Recherche de requete sql sous access
    Par climz dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 15/05/2006, 09h16
  2. [sql]Probleme de count dans une requete sql (sous access)
    Par castelligreg dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 14/04/2006, 16h06
  3. 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
  4. Requete imbriqué sous delphi avec SGBD oracle accepté ?
    Par EssaiEncore dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/09/2005, 09h55
  5. Optimiser une Requetes SQL sous ASP
    Par NeHuS dans le forum ASP
    Réponses: 8
    Dernier message: 18/04/2005, 16h26

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