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 :

y'a pas les données quand je veux imprimer


Sujet :

Bases de données Delphi

  1. #1
    En attente de confirmation mail Avatar de StyleXP
    Inscrit en
    Juillet 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 140
    Points : 55
    Points
    55
    Par défaut y'a pas les données quand je veux imprimer
    Bonjour TLM

    j'ai developpez une petite application (Delphi6, BD Paradox)

    y'a des cas ou je veux imprimer le contenu d'un DBGrid où les données dedans ne depend d'aucune tables, et par cela j'ai créer des tables rempli par des données recupérer du DBGrid et puis je relie mon QuickReport avec ma table (et j'efface le contenu quand je ferme tout)

    et comme ça le tour est joué

    mais mon problème est quand je veux imprimer, je trouve rien comme données ! malgré que depuis l'explorateur, et quand j'ouvre ùa table, les données existent.

    je précise que l'opération d'effacement de ma table est avant l'effacement des données de ma table

    où es le problème donc et merci d'avance

  2. #2
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    hum.... il me semble que ce soit un peu confus tout ca
    Des explications plus claires ?
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  3. #3
    En attente de confirmation mail Avatar de StyleXP
    Inscrit en
    Juillet 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 140
    Points : 55
    Points
    55
    Par défaut
    je veux imprimer le contenu d'un DBGrid, ce contenu n'existe pas dans mes tables.

    j'ai créer une nouvelle table, je recupère mes données depuis mon DBGrid vers ma nouvelle table.

    avec ma nouvelle table, j'ai fais un QuickReport comme d'habitude pour imprimer les données, mais malheureusement y'a pas les données quand je veux imprimer.

    j'ai vérifier avec l'explorater si ma table reçoit des données du DBGrid, et je vois que les données existent.

    donc pourquoi quand je veux imprimer es données, je les trouve pas ???

  4. #4
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Je ne comprends une chose

    Tu as des données dans ta DBGrid, mais pas dans tes tables...
    Par définition, une DBGrid affiche les données d'une table ... ?

    Si soit, tu as une TTable pleine.

    Est-ce que ton QuickRep est lié à cette table précisément ?
    Est-ce que tu remets ta table au début ?
    Est-ce qu'il y a toujours des données lorsque tu commences ton édition ?

    Juste avant le début de l'impression, fait un showmessage( TaTble.RecordCount ) pour voir ...

    Sinon, je crois qu'il faut un peu plus d'infos... pour te dépanner
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  5. #5
    En attente de confirmation mail Avatar de StyleXP
    Inscrit en
    Juillet 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 140
    Points : 55
    Points
    55
    Par défaut
    Bonjour

    mon DBGrid affiche des données depuis une requête SQL exécuté sur une table.

    ma table n'est pas pleine car j'ai mis l'opération de supression (requête DELETE) de données aprés fermeture du programme.

    mon QReport contient un SQL qui es lié a ma table.

    j'ai remets ma table au First mais pas de changements

    j'ai les données lorsque je veux imprimer (depuis l'explorateur du Delphi je peut visualiser les données)

    <fait un showmessage( TaTble.RecordCount ) pour voir >>>> j'ai pas compris là !

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Il faudrait que l'on puisse voir la requete SQL que tu utilise dans ton QReport pour pouvoir donner un complément de réponse.

  7. #7
    En attente de confirmation mail Avatar de StyleXP
    Inscrit en
    Juillet 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 140
    Points : 55
    Points
    55
    Par défaut
    c'est pas une requête compliqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Select * from Affichage

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Essaye ce qui suit.
    Ne supprime ta table qu'apres que le programme imprime tes donnees, cad dans l'evenement after print de QReport insert ce qui suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (Query1.Prepared) then
       Begin
         Query1.Close;
         Query1.unprepare;
       End;
    ensuite supprime ta table
    mais pas avant.

    De cette maniere on est sur que la table n'est pas supprimee avant.

  9. #9
    En attente de confirmation mail Avatar de StyleXP
    Inscrit en
    Juillet 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 140
    Points : 55
    Points
    55
    Par défaut
    désolé mais ça marche pas !!!

    en plus j'ai pas supprimer ma table (les données) avant l'impression !!!

    et ce qui est bizarre dans mon problème et que une fois ou deux, j'ai dû visualiser mes données avant impression, mais quand j'ai fermer, puis reouvrire pour voir les données a imprimer, j'ai pas vue mes données pour l'edition!!! bizarre

  10. #10
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Comme il s'agit d'une petite application je pense que tu pourrais placer le code complet dans ta reponse de cette maniere ce sera possible de regler le probleme.

  11. #11
    En attente de confirmation mail Avatar de StyleXP
    Inscrit en
    Juillet 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 140
    Points : 55
    Points
    55
    Par défaut
    voici le code :

    il y'a un bouton pour vider la table (speed button 2)

    un bouton pour affichage de données sur DBGrid puis transfert de données depuis le DBGrid vers ma table (BTNoK°

    il y'a un bouton pour editer (imprimer) les données de ma table (speed button 1)

    je crois (j'ai essayé) que l'ordre n'influe pas sur la table (les données)

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
     
    procedure TFrmaffmatparchant.SpeedButton2Click(Sender: TObject);
    begin
    ////////// VIDER LA TABLE //////////
     
    Datamodule3.Taffichagechant.Active := True;
     
    query4.Close  ;
    query4.sql.clear;
    query4.sql.Add('DELETE from Affichage');
    query4.Execsql;
     
    Datamodule3.Taffichagechant.Active := False;
    Close;
    end;
     
    procedure TFrmaffmatparchant.BTNOKClick(Sender: TObject);
    var
    vchant : String;
    tot : Integer;
    begin
    datamodule3.Tgestdemat.Active := True;
    Datamodule3.Taffichagechant.Active := True;
    Datamodule3.Taffichagechant.First;
    datamodule3.Tgestdemat.First;
    vchant := CBchant.Text;
     
    query1.Close  ;
    query1.sql.clear;
    query1.Sql.add ('SELECT * From Materiel Where Posit=(:pos) ');
    query1.ParamByName('pos').AsString := vchant;
    query1.Open;
     
    query1.Active := True;
     
    query2.Close  ;
    query2.sql.clear;
    query2.sql.Add('DELETE from Affichage');
    query2.Execsql;
     
    If query1.RecordCount > 0 Then
         Begin
         query1.FetchAll;
         query1.First;
         While not query1.eof Do
             Begin
             Datamodule3.Taffichagechant.Insert;
             Datamodule3.TaffichagechantCODE.Value := query1.FieldByName('CODE').AsString;
             Datamodule3.TaffichagechantDesignation.Value := query1.FieldByName('Designation').AsString;
             Datamodule3.TaffichagechantMarque.Value := query1.FieldByName('Marque').AsString;
             Datamodule3.TaffichagechantType.Value := query1.FieldByName('Type').AsString;
             Datamodule3.TaffichagechantSerie.Value := query1.FieldByName('Serie').AsString;
             Datamodule3.TaffichagechantImm.Value := query1.FieldByName('Imm').AsString;
             Datamodule3.TaffichagechantAnc_position.Value := query1.FieldByName('Anc_position').AsString;
             Datamodule3.TaffichagechantN_Bord.Value := query1.FieldByName('N_Bord').AsString;
             Datamodule3.TaffichagechantDate.Value := query1.FieldByName('Date').AsDateTime;
             Datamodule3.TaffichagechantPosit.Value := query1.FieldByName('Posit').AsString;
             Datamodule3.TaffichagechantObservation.Value := query1.FieldByName('Observation').AsString;
             query1.Next;
             Datamodule3.Taffichagechant.Post;
             Datamodule3.Taffichagechant.Next;
     
             End;
           End;
     
    ////////// AFFICHER LA TABLE //////////
     
    query3.Close  ;
    query3.sql.clear;
    query3.sql.Add ('select * from Affichage');
    query3.open;
     
    query2.Close  ;
    query2.sql.clear;
    query2.Sql.add ('SELECT count(*) As total');
    query2.Sql.add ('From Affichage');
    query2.Active := True;
    tot := Query2.Fieldbyname('total').AsInteger ;
    Edittot.Text := IntToStr(tot);
     
     
    datamodule3.Tgestdemat.Active := False;
    Datamodule3.Taffichagechant.Active := False;
     
    end;
     
    procedure TFrmaffmatparchant.SpeedButton1Click(Sender: TObject);
    begin
    Datamodule3.Taffichagechant.Active := True;
    Datamodule3.Taffichagechant.First;
    Frmeditmatparchant.QuickRep1.Preview;
    end;

  12. #12
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Je pense que tu n'as pas besoin de tout ca pour afficher le contenu d'une table.

    A ta place j'aurai creer un dbgrid, une table, et eventuellement un composant TQuery.
    le composant dbgrid lie a un datasource qui lui meme est lie soit a la table soit a la requete.une fois qu'on affecte a la propriete active de la table ou la requete la valeure true le composant dbgrid se rempli aussitot sans qu'on fasse quoi que ce soit. d'un autre cote on associe les composants de la bande rbDetail du QReport a la table ou a la requete et le tour est joue.

    Quelques remarque concernant le code que tu as envoye.
    -pour une requete la methode open affecte a la propriete active la valeur true donc il n'est pas necessaire de faire une 2eme fois query1.active:=true.
    -query2 et query4 font exactement la meme chose.
    -query2 et query4 efface les donnes de "Affichage" ce qui semble etre une autre table.
    Simplifie au maximum ...

  13. #13
    En attente de confirmation mail Avatar de StyleXP
    Inscrit en
    Juillet 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 140
    Points : 55
    Points
    55
    Par défaut
    non, non, je pense que t'a pas compris mon problème : je réexplique encore :

    j'ai une table Materiel : contient un champs Posit qui indique la position d'un matériel, et contient d'autres champs tel que le nom du Materiel.

    j'ai créer une fiche, il y'a dans la fiche un edit text pour tapez la position souhaité, et puis dans le DBGrid j'affiche le résultat souhaité.

    maintenant je veux imprimer le contenu de mon DBGrid (résultat), là je ne peux pas (puisque il faut tapez dans le edit text de ma fiche la position, ce que je ne peut pas le faire dans le QReport).
    c'est a dire je peua pas relier le Qreport directement avec ma table Materiel.

    la solution est de créer une nouvelle table Affichage qui prend les données de mon DBGrid, puis j'ai mis une requête dans QReport relié avec la table Affichage (select * from Affichage), et là c'est facile pour imprimer le contenu de la table Affichage (qui es lui même le contenu de mon DBGrid)

    et aprés edition, il y'a un bouton (voir mon code en haut) qui se charge de vider la table Affichage, car elle doit être vide a chaque fois, et elle se remplie quand je veux le faire une autre fois et le tour et joué,

    le problème et avant que j'imprime, je vois que ma table Affichage contient des données, mais quand je clique sur mon bouton imprimer (voir le code en haut), je trouve pas les données avant impression !!!

  14. #14
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    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 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Au lieu de mettre les données dans la table affichage, cela ne serait pas plus simple de faire une requete puis de lier le QReport à cette requete ?

    Ta table affichage te fait rajouter des traitements pour rien alors qu'avec une seule requete ca ferait la meme chose sans avoir à remplir une table et à la supprimer
    Modérateur Delphi

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

  15. #15
    En attente de confirmation mail Avatar de StyleXP
    Inscrit en
    Juillet 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 140
    Points : 55
    Points
    55
    Par défaut
    comment faire une tel requête et de la relier avec le QReport alors qu'il faut préciser la position du materiel (dans un edit text de ma fiche) !!!

    je ne vois pas comment ?

  16. #16
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    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 235
    Points : 8 504
    Points
    8 504
    Par défaut
    tu le fais la

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    vchant := CBchant.Text;
     
    query1.Close  ;
    query1.sql.clear;
    query1.Sql.add ('SELECT * From Materiel Where Posit=(:pos) ');
    query1.ParamByName('pos').AsString := vchant;
    query1.Open;
    et après tu l'inseres dans une table

    Quel est l'utilité ? Alors que tu as déjà ton résultat avec le Query1
    Modérateur Delphi

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

  17. #17
    En attente de confirmation mail Avatar de StyleXP
    Inscrit en
    Juillet 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 140
    Points : 55
    Points
    55
    Par défaut
    l'utilité : comment imprimer le contenu (le résultat) du DBGrid ???
    d'une autre façon, comment avoir les résultats dans mon QReport ???

  18. #18
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    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 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Le DbGrid ne contient aucune donnée, c'est le dataset qui lui est lié qui les contients.
    Modérateur Delphi

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

  19. #19
    En attente de confirmation mail Avatar de StyleXP
    Inscrit en
    Juillet 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 140
    Points : 55
    Points
    55
    Par défaut
    et alors !

  20. #20
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    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 235
    Points : 8 504
    Points
    8 504
    Par défaut
    1- Tu fais ta requete avec la position qui va filter ton resultat
    2- Tu lies ton QReport avec cette requete.
    Modérateur Delphi

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

Discussions similaires

  1. Hibernate ne recharge pas les données
    Par CrazySeb dans le forum Hibernate
    Réponses: 2
    Dernier message: 21/07/2008, 13h57
  2. [MySQL] Tableau n'affiche pas les données sur les pages suivantes
    Par orleans dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/12/2007, 20h17
  3. Réponses: 1
    Dernier message: 11/09/2007, 17h06
  4. ClientDataSet.Refresh ne rafraichit pas les données
    Par WebPac dans le forum Bases de données
    Réponses: 4
    Dernier message: 26/04/2007, 14h32
  5. pb de syntaxe XML ne reconnais pas les données ..
    Par lolodelp dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 19/06/2006, 11h24

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