Occorre innanzitutto specificare se si sta tentando di utilizzare un set di dati definito nell'applicazione o un set di dati definito direttamente nel report (scheda Dati nel designer FastReport)?
Se si sta tentando di utilizzare un set di dati definito all'interno dell'applicazione (ad esempio un'istanza AdoDataset definita in uno dei propri moduli dati), per tale scopo, non è necessario associare il MasterBand al set di dati. . in modo dinamico. All'interno del report, il tuo MasterBand è associato a un'istanza di TfrxDbDataset in fase di progettazione. In fase di runtime, l'istanza di frxDbDataset può essere connessa a qualsiasi set di dati nel progetto.
Ecco come sarebbe:
1- Si rilascia un componente frxReport e un componente frxDbDataset sul modulo o moduli di dati. 2- Nella finestra di progettazione report, si passa alla sezione Dataset e si aggiunge frxDbDataset disponibile all'elenco di set di dati del report. 3- Aggiungete una banda dati master e assegnate frxDbDataset alla proprietà Dataset. 4- Ora nel codice, prima di mostrare o preparazione del rapporto, si può scrivere qualcosa di simile:
if MyOption = 1 then
frxDbDataset1.Dataset := AdoDataset1
else
frxDbDataset1.Dataset := AdoDataset2;
Qualunque cosa si assegna a frxDbDataset verranno stampati dal maestro-band nel rapporto.
Se si sta definendo il set di dati direttamente all'interno del report, utilizzando il designer FastReport; allora tutto è nella tua relazione. Basta progettista fastreport aperta e fare questo:
1- Vai alla scheda dei dati e definire i set di dati (ad esempio AdoQuery1). 2- Selezionare Oggetto report dal riquadro Struttura report. 3- Nell'oggetto di ispezione dell'oggetto andare alla scheda Eventi. 4- Scegliere un evento appropriato; OnStartReport è un buon evento per il tuo lavoro. Fare doppio clic su di esso per aprire l'editor di codice. 5- Ora è possibile assegnare il set di dati definito nei dati-scheda per la fascia master-dati utilizzando il codice PascalScript. Qualcosa di simile a questo:
procedure frxReport1OnStartReport(Sender: TfrxComponent);
begin
MasterData1.Dataset := <ADOQuery1."ADOQuery1">;
end;
La soluzione non funziona con FastReports4/delphi XE2 Posso vedere la banda stampata molte volte se imposto StartNewPage, tuttavia non riesco a vedere alcun dato in esso. C'è un ulteriore passo per definire i campi per esso (dynamicaly, trascurando tipi di dati)? – ertx