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 :

Modifier une Requête SQL


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 251
    Points : 118
    Points
    118
    Par défaut Modifier une Requête SQL

    Bonjour,

    J'utilise un composant KADAOTable (même fonction qu'un Query mais pouvant être utilisé avec des tables access). Sa propriété SQL contient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Select MaDate from MaTable
    Dans un formulaire lorsqu'une case à cocher est cochée, je modifie met la propriété SQL à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DmSQL.SQLHistorique.Active:=False;
    DmSQL.SQLHistorique.SQL.Add('WHERE MaDate between #'+DateEdit1.text+'# and #'+DateEdit2.text+'#');
    DmSQL.SQLHistorique.Active:=True;
    Mon problème est le suivant :
    Je voudrais lorsque la case à cocher est décochée, que mon composant KADAOTable ait sa propriété SQL suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Select MaDate from MaTable
    J'ai pris un exemple pour la requete, mais en réalité elle contient environ une vingtaine de ligne.

    Si quelqu'un a une idée...
    Merci d'avance
    A+

    windows 10 / DEBIAN 7.9 / Etc...

  2. #2
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 14
    Points : 17
    Points
    17
    Par défaut
    je ne connais pas le composant KADAOTable mais si j'ai bien compris ton pb tu devrais associer le code suivant à l'évenement decocher de la table à cocher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DmSQL.SQLHistorique.Active:=False;
    DmSQL.SQLHistorique.SQL.clear;
    DmSQL.SQLHistorique.SQL.Add('Select MaDate from MaTable');
    DmSQL.SQLHistorique.Active:=True;

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 251
    Points : 118
    Points
    118
    Par défaut
    SAlut,

    Non, en fait si j'ajoute une expression du style

    DmSQLHistorique.Add('WHERE MaDate between #1/1/2001# and #1/1/2002')

    lorsque une case à cocher est selectionnée, je voudrais pouvoir enlever l'expression 'WHERE MaDate between #1/1/2001# and #1/1/2002' de la requete.

    Le seul moyen que j'ai trouvé, mais qui ne me parait pas séduisant c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DMSQL.SQLHistorique.Active:=False;
    If CaseACocher.Checked then
       DmSQL.SQLHistorique.SQL[20]:=('WHERE MaDate between #1/1/2001# and #1/1/2002') 
    else
      DmSQLHistorique.SQL[20]:='';
    DMSQL.SQLHistorique.Active:=True;
    On voit bien là les limites de cette méthode, j'ai 4 cases à cocher qui doivent me faire un tri sur :

    une date
    un nombre
    du texte
    un boolean

    A+

    windows 10 / DEBIAN 7.9 / Etc...

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 218
    Points : 311
    Points
    311
    Par défaut
    Je ne comprends pas ton problème, si tu as une requête basique il suffit que tu la sauvegardes dans une variable globale avant toute manipulation de la requête.
    Tu concatènes ensuite la propriété sql.text avec la requête basique sauvée en début de programme et tes différents critères de sélection.

    Le code que tu indiques comme marchant est totalement faux et non viable dans un projet en maintenance. SQL.Text[20] modifie le 20ème caractère du SQL, quand tu affectes une expression plus longue ca doit effectivement écrire sur les autres caractères mais par contre quand tu mets blanc ca ne doit changer que le 20è caractère....

    Evite d'utiliser le Add c'est un chouille plus lent que d'affecter directement la propriété Sql.Text.

    Pourquoi faire simple quand on peut faire compliqué...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 251
    Points : 118
    Points
    118
    Par défaut

    Salut,

    Citation Envoyé par macumba
    Le code que tu indiques comme marchant est totalement faux et non viable dans un projet en maintenance. SQL.Text[20] modifie le 20ème caractère du SQL, quand tu affectes une expression plus longue ca doit effectivement écrire sur les autres caractères mais par contre quand tu mets blanc ca ne doit changer que le 20è caractère....

    Evite d'utiliser le Add c'est un chouille plus lent que d'affecter directement la propriété Sql.Text.

    Pourquoi faire simple quand on peut faire compliqué...
    Tout d'abord, il ne s'agit pas de SQL.Text[20] mais bien de SQL[20]. Et là je t'affirme que ce code fonctionne trés bien.

    Par contre je n'ai jamais penser à sauvegerder une requête dans une variable globale.
    Je vais voir si je peux l'adapter à mon code

    Merci
    A+

    windows 10 / DEBIAN 7.9 / Etc...

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 218
    Points : 311
    Points
    311
    Par défaut
    oups en effet sql[20] ca peut marcher vu que sql est un tstringlist. Mais bon ca veut dire que si tu veux faire évoluer ta requête ca te force à revoir tout ton code. Désolé pour la confusion.

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

Discussions similaires

  1. comment modifier une requête sql quand un checkbox est checked ?
    Par salyiohh dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/06/2015, 15h22
  2. Modifier une requête SQL
    Par majd91 dans le forum PL/SQL
    Réponses: 2
    Dernier message: 15/04/2013, 15h09
  3. Modifier une requête SQL
    Par islem2007 dans le forum Bases de données
    Réponses: 1
    Dernier message: 07/04/2008, 09h04
  4. Récupérer grâce à une requête SQL que les champs modifiés
    Par guigui11 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 29/08/2006, 09h58

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