mais la position n'est pas fixé, je peux (il faut) choisir n'importe quel position, !
mais la position n'est pas fixé, je peux (il faut) choisir n'importe quel position, !
Tu veux que dans le QReport il y est une seule position ou plusieurs ?
non mais "Position" est a choix, il y'a plusieurs positions, et j'ai le choix (je rempli la position de choix dans un Edit Text) pour une position et d'imprimer le résultat
Donc, comme je le disais plus haut, ca sert a rien que tu mettes les informations dans une table temporaire, car tu a déjà ton résultat depuis la requete :
Il te suffit maintenant de lier ton QReport à cette requete, rien de plus.
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;
mais ma reqête existe dans ma fiche, pour mon qreport, comment faire le lien avec cette requête ???
De la même manière que tu fais avec la table, au lieu de cibler la table, tu cibles la requete.
Un TQuery à les mêmes fonctions qu'un TTable.
s'il te plait, tu peut me donner plus de détailles, car mon Qreport ne contient aucune requête, et si je mis la requête que tu mas proposer, là je ne peux pas préciser la POSITION du Materiel !!!
peut être que j'ai pas compris ta solution, alors explique mieux !!!
Comment tu génères ton QReport alors si tu ne l'as pas lié à une table ou une requete ????
N'ayant pas QReport avec le delphi je ne peux te donner que la méthode :
1- Mise au point avant tout
CBChant contient bien la position que tu veux afficher dans ton QReport ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 vchant := CBchant.Text; (1) query1.Close ; query1.sql.clear; query1.Sql.add ('SELECT * From Materiel Where Posit=(:pos) '); query1.ParamByName('pos').AsString := vchant; query1.Open;
Cette requete (si c'est ok pour le CBChant) va aller te récupérer dans la base de données la liste des materiaux dont la position = vChant (1)
2- Quand tu contruits ton QReport, tu peux normalement le lier à une source de données qui elle même est liée à ta requete.
3- Dans une bande détail du QReport tu mets les champs à afficher de la requete.
Si tu ne sais pas faire cela, il faut absolument que tu regardes un tutoriel sur les QReport
4- Tu lances ta requete, puis tu lances le QReport après et tu as l'affichage de tes données.
Bon, pour le QReport, j'ai une certaine maitrise, et je sais que c'est simple de travaillé avec.
bon pour ta solution j'ai rien pigé dans :
" 2- Quand tu contruits ton QReport, tu peux normalement le lier à une source de données qui elle même est liée à ta requete. " >> et c'est le plus important.
je suis habitué d'en mettre une requête et de la relié avec une de mes tables, et dans ce cas , ce qui me géne vraiment, ce qu'il faut préciser une position (dans un Edit Text), et je ne vois pas comment avoir les données dans mon QReport sans construire une autre table qui rassemble les données puis je fais appel a cette table depuis une requête dans mon QReport, mais malheureusement les données n'existe pas dans mon QReport, alors qu'ils existe dans la table crée !!!
Tu es bien d'accord que cette requete va te sortir la liste des matériaux qui on pour valeur de position vChant ?????
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 query1.Close ; query1.sql.clear; query1.Sql.add ('SELECT * From Materiel Where Posit=(:pos) '); query1.ParamByName('pos').AsString := vchant; query1.Open; end;
Le composant TQuery represente au meme titre qu'un composant TTable un ensemble de donnees qui correspondent (les donnees) aux criteres de selection. Ton QReport une fois lie a la requete (Query ) les seuls donnees qui figureront sur ton etat seront ceux de la selection.
et comment expliqué que ce matin, j'ai vu les données dans mon Qrepot, puis j'ai fermé, j'ai refais l'opération, et puis, les données sont disparû, pas de données dans mon Qreport ???
Salut,
avez vous remplis votre EditText
Bonne chance.
Merci
Salut,
êtes vous sûr que le numéro entré à des infos dans la table?
l'état est vide, mais que contien la seconde page de l'état(en utilisant la barre de défilementerticale)?
si vous trouvez des résultat dans la seconde page, alors là, regardez les propriétés e votre état saut de page.
Bonne chance.
Merci.
Salut,
j'ai ait une bavure (je parlais d'access et vous parlez delphi)
dans votre query sql vous allez ajouter avec le where
cliquez 2 fois sur la query ensuite sur terms et definissez x (integer,string,..) après avoir choisi le type au dessous de 2 ou 3 cases choisissez rbput.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 votrechampsdereference=x
VCL query active FALSE
maintenant avant d'imprimer l'etat il y a un code
que je vais vopus le ralenez dès que possible.
Bonne chance.
Merci
StyleXP,
Malatar t'as donné la marche a suivre.
Au lieu de crée une table secondaire uniquement pour l'impression, utilise directement un TQuery avec comme requête :
Dans ta Fiche ou est posé le Quickreport,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT * From Materiel Where Posit= :pos
Place un TQuery qu'on va nommé QRY_REPORT avec la requête ci dessus.
Puis construit to report sur ce Query.
Declare une propriété publique Position de type entier comme suit
Depuis la fiche de selection de position, rajoute l'unité contenant le Quickreport.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 property Position : Integer read FPosition Write SetPosition .... procedure TFrm_Report.setPosition(Value : Integer); begin FPosition := Value; QRY_REPORT.ParamByName('POS').AsInteger := FPosition; QRY_REPORT.Open; end;
Normalement, tu dois avoir un bouton imprimer.
Dans l'evenement OnClic de ce bouton :
Je pense que ceci te donneras des idées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 procedure TFrm_Select.Btn_printClic(Sender : TObject); begin With TFrm_report.create(Nil) do try Frm_Report.Position := StrToInt(Ed_posit.text); Frm_report.Qreport.PreviewModal; finally Release end; end;
PS : m'excuse d'être un peu long mais il le fallait.
Bon dev.
Salut,
votre quickreport aura comme dataset votreformulaire.query1
anisi que tous les champs que voullez afficher.
revenant à votre form
sur click du boutton aperçue
si un problème se pose
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 procedure..... var mat : string; begin mat := votreedit.text ou votreformulaire.table['champdereference']; with query1 do begin close; params[0].asstring :=mat; prepare; open; end; votreetat.preview; query1.avtive:=false; end;
retourne sql de query1
Bonne chance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2and votrechampreference=:x
Merci.
salut
si ta table se remplis correctement avec les données de la requette cela ressemble a un Pb que j'ai rencontraitca fait un moment mais ce que j'ai remarquer est que si l'aaplication est sous WindowsXP et l'imprimate du type Epson Lx300+ le contenu est vide quand tu créer un Composant puis tu fait des copie coller pour les autre composant du meme genre.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager