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 :

Sélection des colonnes pleines uniquement


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut Sélection des colonnes pleines uniquement
    bonjour

    jai une table je veux selectionner avec une requete selement les colonnes pleinne les colonnes vides non donc jai fait une requete mais ell maffiche lerreur suivante
    ''invalid use of keyword
    Token:').
    Line number: 1' ''

    voila la requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TCompte.Active := True;
    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('select * From TCompte where (R1 <>'' or R2 <>'' or R3 <>'' or R4 <>'' or R5 <>'' or R6 <>'' or R7 <>'')');
    query1.Prepare;
    query1.Open;

    si quelqu'un peu maider

    merci

  2. #2
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Dans une chaîne Delphi, lorsque tu veux écrire une simple quote ('), il faut la doubler, la première servant de caractère d'échappement. Donc ici, tu ne transmets qu'une quote là ouù tu penses en transmettre 2, d'où l'erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    query1.SQL.Add('select * From TCompte where (R1 <>'''' or R2 <>'''' or ...;
    Roland

  3. #3
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut
    bonjour

    merci je test et je vou rond la reponse


    merci

  4. #4
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut
    bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    query1.SQL.Add('select * From TCompte where (R1 <>'''' or R2 <>'''' or ...;
    je vien de teste cette requete mais elle maffiche meme les colonnes vide

    et moi jaimerai afficher les colonnes pleinne seulement

    merci

  5. #5
    Expert éminent sénior

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Points : 19 101
    Points
    19 101
    Par défaut
    Par vide tu entends "Non renseignée" ? Dans ce cas ce n'est pas '' mais Null qu'il faut tester. Chaine vide et Null ne sont pas identiques (sauf pour certains SGBD comme.... Oracle )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    query1.SQL.Add('select * From TCompte where (Not (R1 is null) or not( R2 in null ) or ...;
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

  6. #6
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut
    bonsoir
    oui not null c sa ce que je veux les colonnes not null
    je test et je vous repond merci

    merci

  7. #7
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut
    bonsoir
    avec cette requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ('select * From TCompte where (Not (R1 in null) or not( R2 in null ) or not (R3 in null))')
    il maffiche lerreur suivante :
    '' invalid use of keyword
    token : null)''

    merci

  8. #8
    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
    Points : 4 384
    Points
    4 384
    Par défaut

    utilise IS en lieu et place de IN

  9. #9
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut
    bonsoir

    j'ai utilisé ''is'' sa donne une autre erreur

    ''table does not exist
    file or directory does not exist'

    je pense que l'erreur de in c mieux faux juste la corrigé



    merci

  10. #10
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    Citation Envoyé par delphino7 Voir le message
    bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    query1.SQL.Add('select * From TCompte where (R1 <>'''' or R2 <>'''' or ...;
    je vien de teste cette requete mais elle maffiche meme les colonnes vide

    et moi jaimerai afficher les colonnes pleinne seulement

    merci
    remplace or par and dans ta requete, en plus je crois que tu spécifie tout tes champs
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    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 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    ta question est ma formulée .
    Si ce que tu veux c'est :
    tous les enregistrements (tuples) où les colonnes R1,R2,R3,R4 sont différents de Null
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM TCOMPTE WHERE NOT (r1 is null) and NOT(r2 is null) and NOT (r3 is null) and NOT (r4 is null)
    tous les enregistrements où au moins l'une des colonnes R1,R2,R3,R4 est différent de null
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT * FROM TCOMPTE WHERE (NOT r1 is null) OR (NOT r2 is null) OR (NOT r3 is null) OR (NOT r4 is null)
    ou
    SELECT * FROM TCOMPTE WHERE NOT ((r1 is null) AND (r2 is null) AND (r3 is null) AND (r4 is null))

    par contre si ce que tu veux c'est une colonne particulière selon une de ces conditions ce n'est pas avec * qu'il faudra la faire puisque * récupére toutes les colonnes. dans ce cas il faudra jouer avec les UNION(s) .

    enfin le is null fonctionne trés bien . Quoique tu n'indiques pas de quel type de BDD il s'agit
    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

  12. #12
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut
    bonjour

    je vien de teste cette requete mais elle maffiche meme les colonnes vide
    moi aussi sa marche bien mais ce que je veux seulement les colonnes pleinne avec ta requete il affiche toute les colonnes

    enfin le is null fonctionne trés bien . Quoique tu n'indiques pas de quel type de BDD il s'agit
    jai fait mes tables avec paradox
    par contre si ce que tu veux c'est une colonne particulière selon une de ces conditions ce n'est pas avec * qu'il faudra la faire puisque * récupére toutes les colonnes. dans ce cas il faudra jouer avec les UNION(s) .
    oui je veux selectioner que les colonnes vides par exemple la requete test si les colonnes sont remplient elle affiches sinon elle ne les affiches pas

    c'est exactement ça je teste la requête et je vous donne la réponse


    merci

  13. #13
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut
    bonjour

    avec cette requete il me selectionne toute les colonnes meme les vides:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM TCOMPTE WHERE (NOT r1 IS NULL) OR (NOT r2 IS NULL) OR (NOT r3 IS NULL) OR (NOT r4 IS NULL)
    avec cette requete aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM TCOMPTE WHERE NOT ((r1 IS NULL) AND (r2 IS NULL) AND (r3 IS NULL) AND (r4 IS NULL))
    j'ai fait cette requete apres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    query2.Close;
    query2.SQL.Clear;
    query2.SQL.Add('select R1 From TCompte  where (NOT R1 IS NULL)') ;
    query2.SQL.Add('union');
    query2.SQL.Add('select R2 From TCompte  where (NOT R2 IS NULL)');
    query2.SQL.Add('union');
    query2.SQL.Add('select R3 From TCompte  where (NOT R3 IS NULL)');
    query2.Prepare;
    query2.Open;
    ici il maffiche seulement la colonnes R1 en plus il naffiche pas tout les resultats il affiche seulement les chiffres qui sont different de different colonnes un exemple : une table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Lignes------- ----R1------R2-----R3 
     
    paris---- -- ----- 33------33------
     
    marsseille--------33------66-------
     
    monaco---------44------33-------
    dans la colonnes R3 c'est vide donc il maffiche ce resultat avec la derniere requete :

    mais moi je veux se resultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Lignes-------R1----R2
     
    paris--------33-----33
     
    marseille----33------66
     
    monaco-----44------33
    et la colonnes R3 il ne laffiche pas parce que elle est vide voila le resultat que jaimerai avoir svp

    merci

  14. #14
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Je ne suis pas sûr qu'on comprenne bien que tu veux . Tu parles toujours de "sélectionner les colonnes", mais il faut bien comprendre qu'une requête ne peut pas sélectionner des colonnes. Elle affiche les valeurs des colonnes que tu choisis.
    Si ce que tu veux, ce sont les valeurs non nulles des colonnes R1 .. R4, tu vas dans la bonne direction avec l'union. Simplement UNION ne renvoie que les valeurs distinctes. Pour avoir toutes les valeurs, il te suffit d'utiliser UNION ALL au lieu d'UNION. Quant au nom de colonne renvoyé (R1), il ne signifie rien : ce n'est que le nom de la colonne R1 dans le 1er SELECT.
    Roland

  15. #15
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut
    ok elle affiche les valeurs des colonnes non null

    je test la requete avec ''union all'' et je vous rond la reponse


    merci

  16. #16
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut
    avec voila ce quil me donne :

    - il mafffcihe la colonnes R1 et justea la suite il affiche les donnees de R2 comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    R1
    33
    33
    44
    33
    66
    33
    et R3 il ne laffiche pas tres bien c est un bon debut

    mais il me manque cet affichage :

    R1-----R2
    33-----33
    33-----66
    44-----33

    es quil ya un moyen dorganisé l'affichage comme ça ?

    merci

  17. #17
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    A mon avis non : Il ne peut afficher sur la même ligne que des données provenant du même enregistrement ou d'enregistrements liés par une jointure.
    Si tu veux, tu peux obtenir ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    R1-----R2
    33-----Null
    33-----Null
    44-----Null
    Null----33
    Null----66
    Null----33
    avec la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select R1, Null AS R2 From TCompte  where (NOT R1 IS NULL)
    UNION ALL
    select Null AS R1, R2 From TCompte  where (NOT R2 IS NULL)
    mais c'est tout.
    Roland

  18. #18
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut
    avec la requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select R1, Null AS R2 From TCompte  where (NOT R1 IS NULL)
    UNION ALL
    select Null AS R1, R2 From TCompte  where (NOT R2 IS NULL)
    il m'affiche un message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    invalid use of keyword 
    token Null
    mais avec la requete que vous vennez de me donner a mon avis il faut savoir dé le debut quelle colonnes ne sont pas vide en plus je ne peux pas faire le test pour les autres colonnes ( 10 colonnes en tout )


    mais moi 'jignore les colonnes je veux une requete qui parcour toutes les colonnes et celle qui est comporte des données il affiche


    merci

  19. #19
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Pour le Nul, chez moi (Firebird), il passe. On peut contourner le problème en utilisant une valeur "factice" (-999 par exemple) pour indiquer qu'il n'y pas de valeur dans la colonne en question.

    Maintenant, si ce que tu as dans l'idée, c'est une réponse du style :
    R1 ----- 33
    R1 ----- 44
    R2 ----- 33
    etc...
    R10 ---- 55

    Tu ne l'obtiendras pas en une seule requête, mais en dix

    Ne sachant pas ce que représentent tes colonnes, je ne peux pas être affirmatif, mais ça ressemble à une mauvaise modélisation de tes données.
    Roland

  20. #20
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 92
    Points
    92
    Par défaut
    bonjour

    ok mes colonnes representes des quantités de livraison de type numerique avec des tables paradox j'ai aussi une colonne qui représente les lignes et une autre la date

    exemple :
    il se peux que tel date paris je lui livre le produit R1 ,marseille aussi, monaaco aussi

    la meme date le produit R2 aucune region ne le prend donc c'est une colonne vide

    la meme date le produit R3 paris prend ,marseille aussi ,monaco aussi

    la meme date produit R4 aucune region ne prend donc c'est une colonne vide


    pour faire mon etat sur quickreport je doit faire apparaitre seulement les produit livré

    je l' ai fait par programmation mais ce que j'aimerai aussi le faire par requete pour vir es que c'est possible sinon je garde mon programme comme il est



    merci

Discussions similaires

  1. Table avec uniquement des des colonnes primary key
    Par BenoitM dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/03/2012, 11h58
  2. [XL-2002] Sélection des cellules visibles d'une colonne dans un filtre
    Par pitoumad dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/06/2010, 11h33
  3. Sélection de données séparées par des lignes et/ou des colonnes vides
    Par Crystalle dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/12/2007, 20h02
  4. Sélection du nom des colonnes
    Par Sorcier157 dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 06/04/2007, 11h08
  5. Réponses: 7
    Dernier message: 11/08/2006, 14h26

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