Vous devez d'abord indiquer si vous essayez d'utiliser un ensemble de données défini dans votre application ou un ensemble de données défini directement dans votre rapport (onglet Données dans le concepteur FastReport)? Si vous essayez d'utiliser un ensemble de données défini dans votre application (par exemple, une instance AdoDataset définie dans l'un de vos modules de données), vous n'avez pas besoin de lier le MasterBand à votre ensemble de données . dynamiquement. Dans le rapport, votre MasterBand est lié à une instance TfrxDbDataset au moment du design. Au moment de l'exécution, votre instance de frxDbDataset peut être connectée à n'importe quel ensemble de données dans votre projet.
Voici comment il serait:
1- Vous déposez un composant frxReport et un composant frxDbDataset sur votre formulaire ou module de données. 2- Dans le concepteur de rapport, accédez à la section Jeux de données et ajoutez le fichier frxDbDataset disponible à la liste des jeux de données du rapport. 3- Vous ajoutez une bande de données maître et affectez le paramètre frxDbDataset à sa propriété Dataset. 4- Maintenant, dans votre code, avant de montrer ou de la préparation du rapport, vous pouvez écrire quelque chose comme ceci:
if MyOption = 1 then
frxDbDataset1.Dataset := AdoDataset1
else
frxDbDataset1.Dataset := AdoDataset2;
Tout ce que vous attribuez à frxDbDataset sera imprimé par le maître-bande dans votre rapport.
Si vous définissez l'ensemble de données directement dans le rapport, utilisez FastReport Designer; alors tout est dans votre rapport. Il suffit d'ouvrir le concepteur fastreport et de le faire:
1- Allez dans l'onglet Données et définissez vos ensembles de données (par exemple, AdoQuery1). 2- Sélectionnez l'objet Rapport dans le volet Arbre du rapport. 3- Dans l'inspecteur d'objets, accédez à l'onglet Evénements. 4- Choisissez un événement approprié; OnStartReport est un bon événement pour votre travail. Double-cliquez dessus pour ouvrir l'éditeur de code. 5- Vous pouvez maintenant affecter l'ensemble de données défini dans l'onglet de données à la bande de données maître en utilisant le code PascalScript. Quelque chose comme ceci:
procedure frxReport1OnStartReport(Sender: TfrxComponent);
begin
MasterData1.Dataset := <ADOQuery1."ADOQuery1">;
end;
Votre solution ne fonctionne pas en utilisant FastReports4/delphi XE2 Je peux voir la bande imprimée plusieurs fois si je règle StartNewPage, mais je ne vois aucune donnée dedans. Existe-t-il une étape supplémentaire pour définir les champs pour cela (dynamiquement, sans tenir compte des types de données)? – ertx