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 :

Combobox et requête sql


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut Combobox et requête sql
    Bonjour à tous,

    J'ai une problème avec une requête sql que voici: J'utilise des Combobox comme critère de recherche dans la base de donnée Oracle.
    J'ai saisie les valeurs dans propriété item de la combobox.
    Il se trouve qu'il ya un vide comme suit :
    Valeur saisie dans le Item 15013.
    Quand j'exécute la requête il se présente comme ceci '15013 '. ce vide ne donne aucun résultat dans QReport.
    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Form2.Query_Edit.sql.Clear;
    Form2.Query_Edit.sql.Add('Select ABOBT_EXPL#, ABOBT_SECTION, ABOBT_ILOT, ABOBT_PARCELLE, ABOBT_RANG, ABOBT_NUMPOL#, ABOBT_CLEPOL#, ABOBT_NOM, ABOBT_PRENOM, ABOBT_CODSIT, ABOBT_TAR, ABOBT_TYABO from GC_ABONNE');
    Form2.Query_Edit.sql.Add('Where ABOBT_TAR = ' + QuotedStr(combobox1.Text));
    Form2.Query_Edit.sql.Add('And  ABOBT_SECTION = '+ QuotedStr(Combobox2.text));
    Form2.Query_Edit.sql.Add('And  ABOBT_TYABO = '+ QuotedStr(Combobox3.text));
    Form2.Query_Edit.sql.Add('And  ABOBT_CODSIT = '+ QuotedStr(Combobox4.text));
    Form2.Query_Edit.sql.Add('And  ABOBT_EXPL# = '+ QuotedStr(ExplEdit.text));
    Showmessage(Form2.Query_Edit.Text);
    Form2.Query_Edit.Open;
    Form2.QuickRep1.Preview;
    Showmessage(Form2.Query_Edit.Text) affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Where ABOBT_TAR = '15013                                            '
    Alors ce devait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Where ABOBT_TAR ='15013'
    Comment suprimer le vide entre la valeur sélectionnée dans la combobox et le prochaine cote?.
    Je pense que je me suis fait comprendre.
    Merci pour toutes interventions.

  2. #2
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Bizarre, je n'ai pas ce soucis.

    J'ai fait vite fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Query_Edit.sql.Clear;
    Query_Edit.sql.Add('Select ABOBT_EXPL#, ABOBT_SECTION, ABOBT_ILOT, ABOBT_PARCELLE, ABOBT_RANG, ABOBT_NUMPOL#, ABOBT_CLEPOL#, ABOBT_NOM, ABOBT_PRENOM, ABOBT_CODSIT, ABOBT_TAR, ABOBT_TYABO from GC_ABONNE');
    Query_Edit.sql.Add('Where ABOBT_TAR = ' + QuotedStr(combobox1.Text));
    Query_Edit.sql.Add('And  ABOBT_SECTION = '+ QuotedStr(Combobox2.text));
    Query_Edit.sql.Add('And  ABOBT_TYABO = '+ QuotedStr(Combobox3.text));
    Query_Edit.sql.Add('And  ABOBT_CODSIT = '+ QuotedStr(Combobox4.text));
    Query_Edit.sql.Add('And  ABOBT_EXPL# = '+ QuotedStr(ExplEdit.text));
    Showmessage(Query_Edit.Text);
    end;
    Et Voilà le résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Select ABOBT_EXPL#, ABOBT_SECTION, ABOBT_ILOT, ABOBT_PARCELLE, ABOBT_RANG, ABOBT_NUMPOL#, ABOBT_CLEPOL#, ABOBT_NOM, ABOBT_PRENOM, ABOBT_CODSIT, ABOBT_TAR, ABOBT_TYABO from GC_ABONNE
    Where ABOBT_TAR = 'ComboBox1'
    And  ABOBT_SECTION = 'ComboBox2'
    And  ABOBT_TYABO = 'ComboBox3'
    And  ABOBT_CODSIT = 'ComboBox4'
    And  ABOBT_EXPL# = 'ExplEdit'
    Bizarre ...

  3. #3
    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 : 48
    Localisation : Algérie

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    pour suprimmer les blanc vous pouvez utilsez la fonction Trim.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Form2.Query_Edit.sql.Clear;
    Form2.Query_Edit.sql.Add('Select ABOBT_EXPL#, ABOBT_SECTION, ABOBT_ILOT, ABOBT_PARCELLE, ABOBT_RANG, ABOBT_NUMPOL#, ABOBT_CLEPOL#, ABOBT_NOM, ABOBT_PRENOM, ABOBT_CODSIT, ABOBT_TAR, ABOBT_TYABO from GC_ABONNE');
    Form2.Query_Edit.sql.Add('Where ABOBT_TAR = ' + QuotedStr(Trim(combobox1.Text)));
    Form2.Query_Edit.sql.Add('And  ABOBT_SECTION = '+ QuotedStr(Trim(Combobox2.text)));
    Form2.Query_Edit.sql.Add('And  ABOBT_TYABO = '+ QuotedStr(Trim(Combobox3.text)));
    Form2.Query_Edit.sql.Add('And  ABOBT_CODSIT = '+ QuotedStr(Trim(Combobox4.text)));
    Form2.Query_Edit.sql.Add('And  ABOBT_EXPL# = '+ QuotedStr(Trim(ExplEdit.text)));
    Showmessage(Trim(Form2.Query_Edit.Text);
    Form2.Query_Edit.Open;
    Form2.QuickRep1.Preview;
    ou encore utilisez l'opérateur LIKE a la place du = si votre égalité peut être non littérale.

    mais le mieux c'est de placez vos valeurs dans des tables de votre base de données avec des clef que vous utiliserez dans vos requette le choix se fera par des DbLookupCombox1 .

    @+ aityahia

  4. #4
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Citation Envoyé par sondo Voir le message
    Bonjour à tous,

    Showmessage(Form2.Query_Edit.Text) affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Where ABOBT_TAR = '15013                                            '
    Alors ce devait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Where ABOBT_TAR ='15013'
    Comment suprimer le vide entre la valeur sélectionnée dans la combobox et le prochaine cote?.
    Ah, pardon!

    Autant pour moi, j'ai mal lu la question

    Je pensai qu'il manquai un guillemet

    Pour supprimer les esapces, tu peux utiliser :

    - TrimLeft() = Supprimer les espaces superflus en début de chaine
    - TrimRight() = Supprimer les espaces superflus en fin de chaine
    - Trim() = TrimLeft+TrimRigth() ... tu as deviné je pense

    Bon courage.
    A+

  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
    Sur de grosse requete de ce style, le mieux serait d'utiliser les paramètres

    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
    21
    22
     
    With Form2,Query_Edit do
    begin
      sql.Clear;
      sql.Add('Select ABOBT_EXPL#, ABOBT_SECTION, ABOBT_ILOT, ABOBT_PARCELLE, ABOBT_RANG, ABOBT_NUMPOL#, ABOBT_CLEPOL#, ABOBT_NOM, ABOBT_PRENOM, ABOBT_CODSIT, ABOBT_TAR, ABOBT_TYABO from GC_ABONNE');
      sql.Add('Where ABOBT_TAR = :PTAR');
      sql.Add('And  ABOBT_SECTION = :PSECTION');
      sql.Add('And  ABOBT_TYABO = :PTYABO');
      sql.Add('And  ABOBT_CODSIT = :PCODSIT');
      sql.Add('And  ABOBT_EXPL# = :PEXPL');
      ParamCheck := True;
      // Pas besoin des quotedStr avec les paramètres
      ParamByName('PTAR').Value := Trim(combobox1.Text);
      ParamByName('PSECTION').Value := Trim(Combobox2.text);
      ParamByName('PTYABO').Value := Trim(Combobox3.text);
      ParamByName('PCODSIT').Value := Trim(Combobox4.text);
      ParamByName('PEXPL').Value := Trim(ExplEdit.text);
    // La seule chose c'est que l'affichage du text du SQL ne sert plus à rien
    //  Showmessage(Text);
      Open;
      QuickRep1.Preview;
    end;
    Modérateur Delphi

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

  6. #6
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Salut,

    Merci pour votre aide. J'ai beaucoup appris de tous ce que vous avez dit.
    Seulement, après 3 jours, j'ai remarqué que c'est parce que j'ai copié les éléments dans un bloc note, et après j'ai collé dans items de la combobox1. Ce qui provoque ce vide bizarre. (une leçon pour la prochaine fois).
    J'ai saisie moi même les éléments dans item de la combobox, et le problème est résolu.
    Voilà. Désolé de vous avoir dérangé. Et merci pour vos suggestions combien importantes pour la prochaine fois.
    Merci et bye.

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

Discussions similaires

  1. [Débutant] comment charger combobox par une requête sql server
    Par fdaili dans le forum C#
    Réponses: 1
    Dernier message: 22/04/2012, 10h31
  2. Récupération d'une requête SQL dans un ComboBox
    Par Hoopsy dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/12/2010, 22h06
  3. Binder une ComboBox sur une requête SQL
    Par SKone dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/11/2009, 03h08
  4. ComboBox chargée depuis une requête SQL
    Par verrue dans le forum Flex
    Réponses: 10
    Dernier message: 08/10/2009, 20h42
  5. combobox html et requêtes sql
    Par biba35 dans le forum Débuter
    Réponses: 1
    Dernier message: 05/02/2009, 20h27

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