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 :

Filtrer une table


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 105
    Points : 45
    Points
    45
    Par défaut Filtrer une table
    Bonsoir à toutes et à tous,

    J'ai monté une base de données Firebird avec un composant Database, un Transaction, et un Table. Tout se passe bien sauf que j'ai des soucis avec la fonction Filtre qui ne veut rien savoir quand je lui demande de trier le champ 'Date' (table.filtre:='Date=01/01/2010' ne fonctionne pas) alors que d'autres filtres avec d'autres champs fonctionnent parfaitement.
    J'ai tenté avec et sans guillemets, j'ai renommé le champ 'Date' en 'Datez' mais j'ai toujours "Attempt to execute an unprepared dynamic SQL statement".

    Quelqu'un aurait-il une solution ???

    Merci de m'aider.

  2. #2
    Expert éminent sénior
    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 : 61
    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
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Effectivement, un champ nommé DATE, cela est franchement à proscrire, DATE étant un mot-clé réservé.
    Attempt to execute an unprepared dynamic SQL statement
    Par contre ceci m'interpelle!
    Comment construis-tu ton filtre ?

    @+

  3. #3
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 105
    Points : 45
    Points
    45
    Par défaut
    Merci de ton aide Cl@udius,

    Mon filtre est tout bête, je l'inscris dans le champ 'filter' de la Table, je passe 'filtered' à True et hop... ou plutôt... boum pour mon cas avec 'Date' et même 'Datez' .

    Une idée ?

  4. #4
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 105
    Points : 45
    Points
    45
    Par défaut
    Y aurait-il un rapport avec la bibliothèque de caractères ?

    Je vois pas pourquoi mais il semblerait que ce message s'affiche pour chaque filtre appliqué à un champ écrit en minuscules .

  5. #5
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 105
    Points : 45
    Points
    45
    Par défaut
    Ca vient du nom du champ...

    Si je mets dans 'filter' "Distance>0", l'erreur se produit.

    Si je renomme le champ 'Distance' en 'DISTANCE' tout fonctionne.

    Il n'y a vraiment pas moyen d'utiliser des noms de champs en minuscules ?

  6. #6
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mai 2006
    Messages : 249
    Points : 165
    Points
    165
    Par défaut
    Citation Envoyé par jackvpt Voir le message
    Ca vient du nom du champ...

    Si je mets dans 'filter' "Distance>0", l'erreur se produit.

    Si je renomme le champ 'Distance' en 'DISTANCE' tout fonctionne.

    Il n'y a vraiment pas moyen d'utiliser des noms de champs en minuscules ?


    Ah, je ne le pense pas.
    Je dirais plutôt qu'il ne faut pas utiliser la valeur '01/01/2010' dans le filtre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table.filtre:='Date=01/01/2010'
    essai par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table.filtre:='"Date" = '+Quotedstr('01/01/2010');
    Mais minuscule ou majuscule je pense que ça n'a rien n'a voir
    Deux personnes n'apprennent pas, un arrogant et un timide.

  7. #7
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 105
    Points : 45
    Points
    45
    Par défaut
    Merci kaouane,

    Effectivement, avec les guillemets autour du champ ça fonctionne.

    Parc contre, je me demandais si je n'avais pas plutôt intérêt à passer par les codes SQL car j'ai de nombreuses fonctions de filtres à insérer à ma base de données.
    Quelqu'un peut me conseiller une arborescence simple pour utiliser le SQL ?

    Encore merci du coup de main.

  8. #8
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mai 2006
    Messages : 249
    Points : 165
    Points
    165
    Par défaut
    Citation Envoyé par jackvpt Voir le message
    Merci kaouane,
    Parc contre, je me demandais si je n'avais pas plutôt intérêt à passer par les codes SQL car j'ai de nombreuses fonctions de filtres à insérer à ma base de données.
    ça je vous le conseil; c'est propre et rapide.


    Citation Envoyé par jackvpt Voir le message
    Merci kaouane,
    Quelqu'un peut me conseiller une arborescence simple pour utiliser le SQL ?
    Ce n'est pas claire ce que vous demander.
    Deux personnes n'apprennent pas, un arrogant et un timide.

  9. #9
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 105
    Points : 45
    Points
    45
    Par défaut
    Disons que je me perds un peu avec toutes les possibilités de base de données (Bde, dbExpress, Oracle, Interbase, Firebird, Paradox,...) et avec les composants pour les utiliser (ADO, SQL, XML, IB,...).

    Comme je crée ma propre base de données et mon propre logiciel, je peux utiliser n'importe quoi mais je ne m'y connais pas suffisamment pour savoir quoi choisir.

    A l'heure actuelle, j'utilise une base Firebird 2.5 et je pense utiliser des composants SQL pour la piloter.

    Quels composants me conseilles-tu d'utiliser ?

  10. #10
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mai 2006
    Messages : 249
    Points : 165
    Points
    165
    Par défaut
    Citation Envoyé par jackvpt Voir le message
    Disons que je me perds un peu avec toutes les possibilités de base de données (Bde, dbExpress, Oracle, Interbase, Firebird, Paradox,...) et avec les composants pour les utiliser (ADO, SQL, XML, IB,...).
    Vous n'êtes pas le premier et vous ne serez jamais le dernier.
    Toute personne (sauf peu de chanceux) ont passée la même étape et se sont perdus entre l'existant.
    Et chacun a pris la décision suivant son propre contexte.
    Mais vous avez de la chance car déjà vous avez plein de parties qui peuvent vous donner d'aide et vous enrichir par le retour d'expérience.


    Citation Envoyé par jackvpt Voir le message
    A l'heure actuelle, j'utilise une base Firebird 2.5 et je pense utiliser des composants SQL pour la piloter.
    Quels composants me conseilles-tu d'utiliser ?
    Vous êtes tomber sur un choix qui (je pense) ne trouve moins de critiques.
    Il y a beaucoup de discussion sur ce forum et sur le net débâtant déjà ce labyrinthe.
    Deux personnes n'apprennent pas, un arrogant et un timide.

  11. #11
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Bonsoir,

    Citation Envoyé par jackvpt Voir le message
    Quels composants me conseilles-tu d'utiliser ?
    En gratuit et à l'heure actuelle il y a UIB
    qui est, d'aprés son auteur, 100 % compatible avec Firebird 2.5 donc il n'y a pas de risque, ces composant suivent l'evolution de FB.

    FibPlus est efficace mais payant

    Sinon il y a une panoplie de composants gratuit et payant Ici
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

  12. #12
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 105
    Points : 45
    Points
    45
    Par défaut
    Bonjour,

    Merci Freud pour ta réponse.

    J'essaie de me débrouiller avec les composants de Delphi 2010 et la Jedi VCL.
    Je galère encore et toujours... mais je ne désespère pas...

  13. #13
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 105
    Points : 45
    Points
    45
    Par défaut
    Bonsoir tout le monde,

    Me re-voilà avec un nouveau souci (un de plus) mais je devrais peut-être ouvrir un nouveau POST car cela porte sur les accents des noms des champs.

    Ma base de données dispose maintenant d'un SQLConnection, d'un SQLQuery et de plein d'autres choses.
    Pour des raisons de simplification de l'affichage dans un DBGrid, j'ai nommé les champs avec des minuscules et des accents ("Catégorie", "Règles",...) mais quand j'importe les champs dans le SQLQuery, les accents ne sont pas pris en compte et des caractères inexploitables apparaissent (©, Ã,...).

    Ma question: comment faire pour que les composants SQL reconnaissent les accents de l'ISO8859_1 comme défini dans ma base de données ?

    Merci une nouvelle fois de votre aide.

  14. #14
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Règle de base : Ne jamais mettre de caractère spéciaux ou accentués dans les noms des champs.

  15. #15
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 105
    Points : 45
    Points
    45
    Par défaut
    C'est noté,

    Je vais renommer tous mes champs.

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

Discussions similaires

  1. filtrer une table excel avant de remplir un combobox
    Par alexsolex dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 21/10/2007, 19h56
  2. filtrer une table par programmation
    Par programeur dans le forum Delphi
    Réponses: 2
    Dernier message: 11/01/2007, 12h38
  3. Réponses: 5
    Dernier message: 06/06/2006, 14h12
  4. [C#] Filtrer une table
    Par diaboloche dans le forum ASP.NET
    Réponses: 8
    Dernier message: 05/12/2005, 15h17
  5. comment filtrer une table avec deux criteres càd 2 colonnes
    Par athmane2dz dans le forum Bases de données
    Réponses: 7
    Dernier message: 28/07/2004, 15h25

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