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 :

Problème avec requête SQL


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Par défaut Problème avec requête SQL
    Bonjour à tous,

    Je bloque sur un truc, je vous explique :

    je veux faire une requête SQL qui me donne tous les enregistrements entre deux dates que l'utilisateur choisie à partir de deux combobox, voici mon bout de code quand je clique sur un bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var
    a:Tdate;
    b:Tdate;
    v:boolean;
    begin
    a:=strtodate(form1.ComboBox1.Text);
    b:=strtodate(form1.ComboBox2.Text);
    form1.DataSource1.DataSet:=form1.ADOQuery1;
    form1.ADOQuery1.Open;
    form1.ADOQuery1.first;
    end;
    Dans le code SQL de ADOQuery1 j'ai en déclarant les paramètres a et b comme Date :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Select Date1, Clients
    From Table
    Where Table.Date1 BETWEEN a AND b;
    Je n'ai pas d'erreur mais je n'ai rien en sortie et je ne comprends pas pourquoi .

    Merci de m'aider .

    Salutations,
    H.

  2. #2
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Slt ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    var
    a,b:Tdate;
    v:boolean;
    begin
    a:=strtodate(form1.ComboBox1.Text);
    b:=strtodate(form1.ComboBox2.Text);
    form1.DataSource1.DataSet:=form1.ADOQuery1;
    form1.ADOQuery1.Open;
    form1.ADOQuery1.first;
    end;
    ta pas affecter les valeurs des paramètres a et b
    form1.adoquery1.Parameters.ParamByName('a').value:= a; et la meme chose pour b
    là je me demande pourquoi combobox ???? tu peut utilisé datetimepicker ou un maskedit pour facilité la saisie aux utilisteurs , c'est un avis
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dm.q1.Close;
    dm.q1.Parameters.ParamByName('dt1').value:= datetostr(Date1);
    dm.q1.Parameters.ParamByName('dt2').value:= datetostr(Date2);
    dm.q1.Open;

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Mai 2006
    Messages : 249
    Par défaut
    Effectivement il vaut mieux utiliser datetimepicker DTP1 et DTP2 et écrire
    au lieu de .value -- > asDate
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    dm.q1.Close;
    dm.q1.Parameters.ParamByName('dt1').asdate:= DTP1.Date;
    dm.q1.Parameters.ParamByName('dt2').asdate:= DTP2.Date;
    dm.q1.Open;
    Bon courage;

  4. #4
    Membre confirmé Avatar de abdelghani_k
    Inscrit en
    Octobre 2002
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2002
    Messages : 184
    Par défaut
    Les valeurs de date dans SQL sont toujours enregistrées dans le format "MM/DD/YYYY".
    utilises la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FormatDateTime('mm"/"dd"/"yyyy', Date)
    donc tes paramètre deviennent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    a:=FormatDateTime('mm"/"dd"/"yyyy', strtodate(form1.ComboBox1.Text));
    b:=FormatDateTime('mm"/"dd"/"yyyy', strtodate(form1.ComboBox2.Text));

  5. #5
    Membre chevronné Avatar de archonte
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 343
    Par défaut
    En passant par l'usage des paramètres comme indiqué par Redoran et Kaouane plus haut, tu n'as pas besoin de connaitre le format de date dans ta table ! D'ailleurs celui-ci pourrait changer en cas de changement de SGDB ...

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    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 236
    Par défaut
    Citation Envoyé par kaouane Voir le message
    Effectivement il vaut mieux utiliser datetimepicker DTP1 et DTP2 et écrire
    au lieu de .value -- > asDate
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    dm.q1.Close;
    dm.q1.Parameters.ParamByName('dt1').asdate:= DTP1.Date;
    dm.q1.Parameters.ParamByName('dt2').asdate:= DTP2.Date;
    dm.q1.Open;
    Bon courage;
    Sauf que avec les composants Ado, AsDate n'existe pas pour les paramètres et c'est bien Value qui est correct.
    Il n'en reste pas moins que l'utilisation des paramètres est conseillé et surtout de ne pas oublié de les paramétrer
    Modérateur Delphi

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

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 658
    Billets dans le blog
    65
    Par défaut
    Ne manquerait-il pas les ':' devant les paramètres dans la query ?
    ceci dit , je ne suis pas un spécialiste de ADO
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Date1, Clients
    FROM TABLE
    WHERE TABLE.Date1 BETWEEN :a AND :b;
    Mais ca me permettra de le savoir Bonne Année

  8. #8
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Slt; oui serge exemple de requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT *
    FROM matable
    where
    param >=:dt1
    and
    param1 <=:dt2

  9. #9
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Par défaut
    Bonjour tout le monde,

    Merci merci merci à tous pour votre contribution, je n'avais qu'à ajouter form1.Adoquery1.Parameters.ParamByName('a').value:=a et tout c'est débloqué, ça marche tiptop maintenant . J'ai utilisé des combobox car j'aimerais qu'ils renferment que les dates que j'ai dans ma base de données, je fais ça par le biais d'une requête SQL .

    Merci encore.

    Salutations,
    H.

  10. #10
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Par défaut
    Pardon, juste pour plus d'éclaircissements, je n'ai pas changé ma requête SQL, je l'ai laissé comme suit et ça a fonctionné nickel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Date1, Clients
    FROM TABLE
    WHERE TABLE.Date1 BETWEEN a AND b;
    Salutations,
    H.

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

Discussions similaires

  1. [SQL] Problème avec requête SQL
    Par Kenya dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 28/01/2008, 22h13
  2. Problème avec requête SQL dans VBA
    Par Mimisio dans le forum VBA Access
    Réponses: 10
    Dernier message: 13/07/2007, 11h00
  3. [SQL] problème avec requête sql
    Par belakhdarbts10 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/05/2007, 11h58
  4. probléme avec requête SQL
    Par richard60 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/03/2007, 18h18
  5. Problème avec requête SQL avec variables
    Par harry25 dans le forum ASP
    Réponses: 1
    Dernier message: 03/01/2007, 03h41

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