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

Langage Delphi Discussion :

[DELPHI 7]Afficher des données à partir d'un TDateTimePicker


Sujet :

Langage Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 9
    Points : 7
    Points
    7
    Par défaut [DELPHI 7]Afficher des données à partir d'un TDateTimePicker
    Bonjour à tous,

    J'utilise un TDateTimePicker et une DBGrid, en choisissant une date dans mon TDateTimePicker j'aimerais n'afficher que les données (se trouvant dans une base SQL SERVER EXPRESS 2005) qui sont à cette date.

    Exemple:Avec des produits achetés à différentes dates. En choisissant une date, seuls les produits qui ont été acheté à cette date seront affichées dans la DBGrid.

    Comment pourrais-je faire ???

  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 : 38
    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 et Bienvenue sur Developpez.com

    Pour faire ce que tu souhaites, il te faut un TQuery, un TDataSource et un TDBGrid.

    Tu lies le TDBGrid avec le TDataSource (propriété DataSource de la DBGrid) et tu lies le TDataSource au TQuery ( propriété DataSet tu DataSource à renseigner).

    Ensuite, tu as bien évidemment un TDatePicker sur ta Form. On va travailler avec l'événement OnChange... comme ça, a chaque fois que tu changeras de date, ta DBGrid sera mise à jour automatiquement.
    Logiquement, les dates sont enregistrées sous ce format (si je ne me trompe pas) : ANNEE-MOIS-JOUR.

    Voici un exemple qui liste les clients inscrits à une date T :
    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
    procedure TForm1.DateTimePicker1Change(Sender: TObject);
    var
      RequeteSQL:String;
      formatDate:TFormatSettings;
    begin
      // On formate notre date pour qu'elle soit sous le même format que celle de la BDD
      formatDate.DateSeparator:='-';
      formatDate.ShortDateFormat:='yyyy-mm-dd';
     
      // On écrit notre requête SQL
      RequeteSQL:='SELECT * FROM CLIENT WHERE DateInscription ="'+ DateToStr(DateTimePicker1.DateTime,formatDate)+'"';
     
      // On prend soin de toujours vider le TQuery avant chaque requête (sinon, soucis)
      Query1.SQL.Clear;
      // Ajout de la requête dans le TQuery
      Query1.SQL.Add(RequeteSQL);
      // Exécution de la requête
      Query1.Open;
    end;
    Voilà, j'espère que ça réponds correctement à ta demande
    A+
    Ero-Sennin

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    En sélectionnant que les colonnes que j'ai besoin de ma table et donc a la place de * je mets le nom des colonnes, l'erreur ''E2056 Les chaînes ne doivent pas dépasser 255 caractères'' s'affiche..
    Existe-il un moyen pour que j'écrive ma requête sur plusieurs lignes dans le code ou une autre solution ?

  4. #4
    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

    Montre nous le code avec lequel tu as construit ton instruction SQL ?

    @+ Claudius

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.DateTimePicker1Change(Sender: TObject);
    VAR
      RequeteSQL:String;
    begin
      RequeteSQL := 'SELECT NUM_FID_CLIENT,NOM_CLIENT, PRE_CLIENT, TYP_CLIENT, NOM_PRODUIT,DAT_ACHAT_PRODUIT,LIEU_MAGASIN,DEBHEURE_OUV_MAGASIN, FINHEURE_OUV_MAGASIN FROM dbo.CLIENT, dbo.MAGASIN, dbo.PRODUITS, dbo.HORAIRE, dbo.FIDELITE WHERE NUM_FID_CLIENT = NUM_CLIENT AND NUM_PRODUIT_MAG = NUM_PRODUIT AND NUM_MAG_HOR = NUM_HORAIRE AND DAT_ACHAT_PRODUIT ="'+ DateToStr(DateTimePicker1.DateTime)+'"';
      QueryProduit.SQL.Clear;
      QueryProduit.SQL.Add(RequeteSQL);
      QueryProduit.Open;
    end;

  6. #6
    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 : 38
    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
    Re,

    Je ne sais pas si ça peut / va régler le soucis mais essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Query1.SQL.Text:=RequeteSQL;
    A+

    PS: Sinon, pour les requêtes, ce que je fais en général pour m'y retrouver dans mon code, c'est de mettre les instructions à la ligne ...
    Avec ton code, ça donnerait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      Query1.SQL.Clear;
      Query1.SQL.Add('SELECT NUM_FID_CLIENT,NOM_CLIENT, PRE_CLIENT, TYP_CLIENT, NOM_PRODUIT,DAT_ACHAT_PRODUIT,LIEU_MAGASIN,DEBHEURE_OUV_MAGASIN, FINHEURE_OUV_MAGASIN');
      Query1.SQL.Add('FROM dbo.CLIENT, dbo.MAGASIN, dbo.PRODUITS, dbo.HORAIRE, dbo.FIDELITE');
      Query1.SQL.Add('WHERE NUM_FID_CLIENT = NUM_CLIENT');
      Query1.SQL.Add('AND NUM_PRODUIT_MAG = NUM_PRODUIT');
      Query1.SQL.Add('AND NUM_MAG_HOR = NUM_HORAIRE');
      Query1.SQL.Add('AND DAT_ACHAT_PRODUIT ="'+ DateToStr(DateTimePicker1.DateTime)+'"');
      Query1.Open;

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    J'ai essayé cette solution mais le problème reste toujours cette erreur des chaînes qui ne doivent pas dépasser les 255 caractères.. A cause de la longueur de ma requête..

  8. #8
    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
    Re

    Construit plutôt une requête paramétrée, surtout lorsque tu travailles avec des dates (on s'affranchit ainsi de devoir formater la date selon le SGBD utilisé).

    Essaye ainsi:

    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
     
    With Query1 do
    begin
      SQL.Clear;
      SQL.Add( 'SELECT NUM_FID_CLIENT, NOM_CLIENT, PRE_CLIENT,');
      SQL.Add('TYP_CLIENT, NOM_PRODUIT, DAT_ACHAT_PRODUIT,');
      SQL.Add('LIEU_MAGASIN, DEBHEURE_OUV_MAGASIN, FINHEURE_OUV_MAGASIN');
      SQL.Add('FROM dbo.CLIENT, dbo.MAGASIN, dbo.PRODUITS, dbo.HORAIRE,'); 
      SQL.Add('dbo.FIDELITE');
      SQL.Add('WHERE NUM_FID_CLIENT = NUM_CLIENT AND');
      SQL.Add('NUM_PRODUIT_MAG = NUM_PRODUIT AND');
      SQL.Add('NUM_MAG_HOR = NUM_HORAIRE AND');
      SQL.Add('DAT_ACHAT_PRODUIT = :PARAM_DATE');
     
      ParamByName('PARAM_DATE').AsDate := DateTimePicker1.Date;
      Open;
    end;
    @+ Claudius

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merciii pour votre aide ça marche correctement !
    Je ne pensais pas que l'on pouvait construire une requête comme ça

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

Discussions similaires

  1. Afficher des données à partir d'un serveur distant
    Par Landolsi dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 13/06/2010, 11h24
  2. Réponses: 2
    Dernier message: 22/12/2009, 16h35
  3. [MySQL] afficher des données à partir d'une date selectionnée
    Par rane dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 21/11/2007, 15h21
  4. Afficher des données dans un datagrid à partir d'une base de données MySQL
    Par General_Garrisson dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 13/07/2006, 15h14
  5. [FLASH 8] Afficher des images à partir d'une base de données
    Par developpeur_mehdi dans le forum Flash
    Réponses: 9
    Dernier message: 15/03/2006, 10h43

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