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 Et CombosBox


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 176
    Points : 78
    Points
    78
    Par défaut Requete SQL Et CombosBox
    Bonjours a tous,
    j'ai 2 question pour vous,

    1) je cherche un moyen de lister dans un ComboBox les valeurs (sans doublons) des entrées de ma base de données (ex si dans le champs 'language' j'ai delphi php delphi C et bien je voudrais retrouver ces valeurs dans le combo), puis-je le faire avec un combobox ordinaire ? dois je utiliser un DBcombobox ? par ou débuter ? quelle est le principe ?

    2) j'ai un datasource relié au clientdataset relié au clientsetprovider relié au query relié a la connection, quand je lance mon application les champs de DBGrid sont bien remplis néanmoins la seul requete que j'arrive a faire c'est celle que je tape a la main dans la propriété SQL du composant SQLquery (si je met rien dans cette propriété, delphi rale des le début me disant qu'il attend quelquchose, (j'ai essayer sqlquery1.sql.add('ma requete'); puis un open ou Execsql mais sa a pas l'air de fonctionner , voila si quelqu'un peut m'aiguiller un peu

    mercii )
    Ice Tea FrEsH

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 901
    Points : 6 026
    Points
    6 026
    Par défaut
    Pour le 1/ : tu peux effectivement faire avec un simple TCombobox:
    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
    MonComboBox.Clear;
         With CustomerData do begin
            IBQueryG.Transaction:=IBTransaction1;
            IBQueryG.SQL.Clear;
            IBQueryG.SQL.Text:='SELECT DISTINCT LANGAGE as LANG FROM MaTable';
            IBQueryG.Active:=True;
            if (IBQueryG.RecordCount > 0) then begin
               IBQueryG.FetchAll;
               IBQueryG.First;
               While not IBQueryG.Eof do begin
                 MonComboBox.Items.Add(IBQueryG.FieldByName('LANG').AsString);
                 IBQueryG.Next;
               end;
            end;
     end;
    A adapter selon tes besoins.
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 176
    Points : 78
    Points
    78
    Par défaut re
    Merci de ta réponse (je debut) et il ya a quelques points que je ne comprend pas pourrais tu m'expliquer rapidement :

    -le CustomerData je ne sais pas a quoi il correspond pour moi

    -LE IBqueryD jl'ai remplacer par SQLQuery (IBqueryD = composant pour les bases interbase ? ou c'est juste un SQLquery que tu as renomé ?

    et :
    IBQueryG.FetchAll;
    IBQueryG.First

    Voila merci de ton aide
    (je sais pas si ca change quelques choses (donc c'est p-e un peu tard pour le dire) mais j'utilise une base sur un serveur MySql)

  4. #4
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 901
    Points : 6 026
    Points
    6 026
    Par défaut
    Le customerdata est une unité sans composant graphique servant à héberger les composants non graphiques utilisés par les autres unités, ainsi que des variables globales de l'appli.
    On y trouve les composants database, query etc... mais on peut faire sans pour de petites applis

    IBQueryG est un TIBQuery (Interbase donc), le G signifiant Général.

    Dans le traitement que je t'ai donné, tu peux le remplacer par un simple TSQL puisque qu'on n'a pas besoin de se déplacer en arrière de le "Result-set".

    Le FetchAll demande l'acquisition complète des lignes correspondant à la requète. Il me semble que cette méthode n'existe pas pour les simples TSQL car l'acquisition est complète dès l'ordre exécuté.

    le First demande de se positionner sur la première occurrence retournée dans le result-set.

    Quant à l'utilisation d'un serveur MySQL, je pense qu'il vaut mieux utiliser les composants dbExpress.
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 176
    Points : 78
    Points
    78
    Par défaut
    j'ai adapter ton code comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      SQLQuery1.SQL.Clear;
      SQLQuery1.SQL.Text:='SELECT DISTINCT NOM FROM personne';
      SQLQuery1.Active:=True;
      if (SQLQuery1.RecordCount > 0) then begin
        SQLQuery1.First;
        While not SQLQuery1.Eof do begin
          ComboBox1.Items.Add(SQLQuery1.FieldByName('LANG').AsString);
          SQLQuery1.Next;
          end;
      end;
    end;
    SQLQuery1.SQL.Text:='SELECT DISTINCT NOM as LANG FROM personne';
    => je ne sais pas As lang correspond, quand jexecute la requete il me dis qu'il y a une erreur dans la syntax SQL. (si j'enleve le As LANG il me dit opération non suporté).

    ComboBox1.Items.Add(SQLQuery1.FieldByName('LANG').AsString); (fieldByName il sert a koi ? )

  6. #6
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 901
    Points : 6 026
    Points
    6 026
    Par défaut
    Oui, dans ton contexte, le "as lang" est de trop.

    Quant à l'erreur, elle doit se produire sur le RecordCount...

    Il y a aussi le FieldByName qui n'est plus "LANG", mais NOM"
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 176
    Points : 78
    Points
    78
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    begin 
     SQLQuery1.SQL.Clear;
      SQLQuery1.SQL.Text:='SELECT DISTINCT AGENCE FROM personne';
      SQLQuery1.Active:=True;
      SQLQuery1.First;
        While not SQLQuery1.Eof do begin
          ComboBox1.Items.Add(SQLQuery1.FieldByName('AGENCE').AsString);
          SQLQuery1.Next;
          end;
    end;
    Merci ca marche bien comme ca,
    j'ai enlever if sqlqueryRecord > 0 enlevé et le SQLQury1.first ca risque pas de me poser des pbs par la suite ?

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

Discussions similaires

  1. Problème Requete SQL et QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/01/2004, 09h31
  2. Prob de requete sql et variable
    Par agent-zaizai dans le forum ASP
    Réponses: 11
    Dernier message: 21/10/2003, 16h54
  3. requete sql
    Par autumn319 dans le forum ASP
    Réponses: 22
    Dernier message: 10/09/2003, 16h46
  4. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43

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