+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Aiuto Report Delphi(con quick report)

  1. #1
    delphino non  in linea Novello
    Salve a tutti, sono nuovo del forum, avrei bisogno del vostro aiuto, perche non riesco a fare alcune cose con delphi + db access..
    vi dar delle specifiche sulla mia configurazione e sul problema;

    ho un database access nel quale ho 5 tabelle... in 4 tabelle ho i soliti campi di registrazione record, mentre 1 la tabella intestazione..
    le 4 tabelle sono degli elenchi che racchiudono soci di diversi tipi... ogni tabella rappresenta un elenco di soci diviso per categoria es. tabella 1 soci A tabella 2 soci B tabella 3 soci C ecc... ovviamente i soci che sono registrati nella tabella A nn sono quelli della tabella B e cosi via.... (non hanno relazioni di nessun tipo fra di loro)...

    ora io ho questo problema e questa necessit....
    le maschere ed i report li sto creando con Delphi( che fra l'altro sono autodidatta, quindi molte cose sicuramente non le conosco, ed per questo che mi affido a voi anime buone: ) Devo creare un report o piu report(consigliatemi voi), che mi crea un elenco di tutti i soci numerato dalla pagina uno alla pagina x (dove x corrisponde all'ultimo record della tabella 4 soci D, che l'ultima tabella)... COME POSSO FARE?? SAPETE aiutarmi magari anche postandomi qualche riga di codice da integrare, o qualche metedo da usare per fare questo??? vi ringrazio della pazienza e di qualsiasi aiuto, spero di aver descritto in modo esaustivo il mio problema...


    GRAZIE

  2. Ciao e benvenuto.
    Non sei stato proprio chiaro (cosa sono "i soliti campi di registrazione record"???), e non ci hai nemmeno detto la versione di Delphi o di QR che usi, quindi tento di interpretare la tua richiesta.
    Hai una tabella "master" collegata a pi tabelle "detail".
    Vorresti stampare l'intestazione con il record "master", quindi a seguire tutte le tabelle "detail" con i loro record.

    Se ho indovinato, credo tu debba usare TQRCompositeReport, che ti permette di "fondere" pi TQuickRep distinti in uno solo. Nel tuo caso, quindi, ogni report si appoggia ad una sola delle tabelle "detail".
    Sul primo dei 4 report (ma puoi farlo su tutti se vuoi) puoi mettere i dati del record "master" all'interno della band "Detail", quindi aggiungere un TQRSubDetail collegato alla prima tabella (dove andrai a mettere i relativi campi).

    Credo comunque che tu possa trovare documentazione sufficiente sul sito di QuickReport:

    http://www.qusoft.com/

    Ciao!
    Ultima modifica di cyberlaundry; 20-11-2009 01:32 
    ℹ️ Leggi di pi su cyberlaundry ...

  3. #3
    delphino non  in linea Novello
    Ciao,
    intanto grazie della risposta...
    provo a spiegarti meglio... (cosa sono "i soliti campi di registrazione record"???) volevo dire che nelle quattro tabelle di registrazione soci, ho 5 campi all'interno della tabella, e questi 5 campi si chiamano allo steso modo in tutte e 4 le tabelle...

    """"Se ho indovinato, credo tu debba usare TQRCompositeReport, che ti permette di "fondere" pi TQuickRep distinti in uno solo.""""

    puoi dirmi con piu precisione questo passaggio, magari facendomi un esempio??
    in pratica devo creare 4 report contenente in ogni report la tabella 1, la tabella 2, la tabella 3 e la 4??
    e come faccio poi a richiamare questi quattro report con il componenete "TQRCompositeReport"??

    ti sarei grato se mi potessi fare un piccolo esempio con il codice da integrare per il componente "TQRCompositeReport", se deve essere integrato..ovvio...


    " Nel tuo caso, quindi, ogni report si appoggia ad una sola delle tabelle "detail"""
    - il mio report dovrebbe avere la tabella intestazione, che uguale per tutti,
    ma stampare in unica stampa il risultato "detail" di 4 tabelle... cosi facendo, avrei un elenco completo di tutte e 4 le tabelle e risolverei il mio problema della numerazione delle pagine... avrei un progressivo che va da 1 a x con dentro tutte le tabelle e tutti i record...


    Se hai altre soluzioni da propormi per risolvere tutto questo, sono ben accette...

    GRAZIE ANCORA

  4. Ancora non sappiamo che versione di Delphi/QR stai usando...
    Deduco che NON hai scaricato la documentazione dal sito che ti ho indicato

    Quindi ti dico:

    1) Vai su questa pagina: Quickreport - FAQS
    2) Scarica il file di help di QR4 cliccando su "QR4 Help File" oppure qui
    3) Cerca nell'help la parola "Composite"

    Troverai questo esempio:
    procedure Tmainfrm.MakeComp;
    begin
        comprep := TQRCompositeReport.Create( mainfrm);
        comprep.OnAddReports := mainfrm.CompRepAddReports;
        comprep.Preview;
        comprep.free;
    end;
    
    procedure Tmainfrm.SpeedButton1Click(Sender: TObject);
    begin
        MakeComp;
    end;
    
    procedure Tmainfrm.CompRepAddReports(Sender: TObject);
    begin
       comprep.Reports.Add( repfrm1.quickrep1 );
       comprep.Reports.Add( repfrm2.quickrep1 );
    end;
    
    Cosa fa?
    Suppone di avere due form (repfrm1 e repfrm2) che contengono ognuna un report. Sulla form "principale" (mainfrm) istanzia un componente TQRCompositeReport e gli aggancia i due report precedenti, che quindi vengono stampati "come se fosse uno".
    Ti consiglio di leggerti il manuale e di scaricarti e studiare i (numerosi) esempi

    Uso QR da dieci anni e ti posso garantire (nonostante quel che si dice in giro) che un buon prodotto, con un buon supporto, con il quale sono riuscito veramente ad accontentare tutti.
    ℹ️ Leggi di pi su cyberlaundry ...

  5. #5
    delphino non  in linea Novello
    Scusami, hai ragione, mi sono dimenticato di dirti la versione, uso delphi 5 e se nn sbaglio la versione di quick report la 3.0...

    altra domanda;
    dove lo devo associare questo codice ;

    procedure Tmainfrm.MakeComp;
    begin
    comprep := TQRCompositeReport.Create( mainfrm);
    comprep.OnAddReports := mainfrm.CompRepAddReports;
    comprep.Preview;
    comprep.free;
    end;


    a qualche evento della form principale?

  6. Non un evento... una procedura...
    ℹ️ Leggi di pi su cyberlaundry ...

  7. #7
    delphino non  in linea Novello
    ok sono daccordo che una procedura...

    il mio codice da inserire diventer questo ;

    procedure TForm1.MakeComp;
    begin
    comprep := TQRCompositeReport.Create(Form1);
    comprep.OnAddReports := Form1.CompRepAddReports;
    comprep.Preview;
    comprep.free;
    end;

    ............................


    quando lo inserisco sulla form, mi da errore di compilazione, si ferma esattamente subito dopo il "procedure TForm1.MakeComp"

    se ti utile ti specifico l'errore(che ora nn ho davanti, perche il compilatore installato su un altro pc, ma se ti serve il tipo di errore chiedimi...)

    che cosa makecomp? dove lo devo dichiarare? scusami ancora, ma nn riesco a capire dove devo inserire questa procedura...

    sei l'unico che mi risponde e che mi puo aiutare, a quanto vedo.... abbi pazienza, sono poco abile con Delphi, e capisco che una rottura "insegnare" ad un neofita....

    fra l'altro sono un sistemista, la programmazione una cosa in piu che curo per passione, ma ripeto sono autodidatta e cerco di arrangiarmi come posso....


    di nuovo GRAZIE per le risposte molto utili...

  8. Le procedure devi dichiararle in una sezione della tua TForm (private, protected o public).
    Sono "procedure of object", quindi devono essere metodi di un oggetto (la TForm).
    Questo per esula largamente dal tema del thread, e verte tendenzialmente su un argomento che devo imparare le basi di Delphi.
    Ti consiglio di farti delle basi pi solide prima di passare a istanziare componenti a runtime. A questo proposito ti rimando alla discussione http://forum.masterdrive.it/delphi-2...hlight=manuale
    ℹ️ Leggi di pi su cyberlaundry ...

  9. #9
    delphino non  in linea Novello
    ho trovato, in effetti dichiarare una procedura molto semplice...

    ho integrato il codice dell'esempio adattato al mio progetto ed il risultato questo;

    ho associato al componente TQRCompositeReport l'evento AddReports, per caricare i report che questo;

    procedure TTStampeElencoSoci.QRCompositeReport1AddReports(Se nder: TObject);
    begin
    QRCompositeReport1.Reports.Add(TRepElencoSociA.Qui ckRepSociA);
    QRCompositeReport1.Reports.Add(TRepElencoSociBenem eriti.QuickRepSociBenemeriti);
    end;

    ho dichiarato la variabile comprep di tipo TQRCompositeReport ed ho inserito la procedura dell'esempio questo il risultato;

    procedure TTStampeElencoSoci.Markcomp;
    var comprep : TQRCompositeReport;
    begin
    comprep := TQRCompositeReport.Create(Unit10.TStampeElencoSoci );
    comprep.OnAddReports := TStampeElencoSoci.QRCompositeReport1.OnAddReports;
    comprep.Preview;
    comprep.free;
    end;

    procedure TTStampeElencoSoci.BtnStampaClick(Sender: TObject);
    begin
    markcomp;
    end;


    Il problema ora che quando vado a premere il BtnStampa mi esce fuori la preview di quick report, ma dentro non c' nessun report e mi dice page 1 of 0, in basso...


    dove cavolo sto sbagliando?????

  10. Stai facendo una confusione tremenda. Non stai capendo cosa hai scritto.
    Andiamo con ordine: procedure TTStampeElencoSoci.Markcomp;
      comprep := TQRCompositeReport.Create(Unit10.TStampeElencoSoci);
    
    Con questa linea istanzi un componente TQRCompositeReport "al volo". Se tu avessi scritto TQRCompositeReport.Create(Self) era esattamente come droppare un componente TQRCompositeReport sulla form.
    [code]
    comprep.OnAddReports := TStampeElencoSoci.QRCompositeReport1.OnAddReports;
    [/quote]

    Questa non va bene!!!
    Il componente QRCompositeReport1 l'hai droppato sulla form, ma avendone appena creato uno, ne hai DUE, quindi non ti serve a nulla!

    Se tu "ricopi" esattamente l'esempio del manuale citato (ovviamente utilizzando i nomi corretti) ti basta scrivere:
    procedure Tmainfrm.CompRepAddReports(Sender: TObject);
    begin
       comprep.Reports.Add(RepElencoSociA.QuickRepSociA);
       comprep.Reports.Add(RepElencoSociBenemeriti.QuickRepSociBenemeriti);
    end;
    
    Un'altra cosa: i "nomi" dei componenti per convenzione NON iniziano con "T". Con "T" iniziano le definizioni dei TIPI (Strutture di dati, di oggetti, di componenti ecc).

    Penso tu debba acquisire i concetti di "tipo" e "istanza".
    Una struttura semplicemente una definizione (tipo), non occupa memoria, "non esiste" e non pu fare nulla.
    Un'istanza la creazione di un oggetto definito dalla struttura: esiste e occupa memoria e fa quello che c' scritto nella sua definizione; infatti se viene creata una istanza, va "liberata" con Free.
    Per i componenti che "butti" sulla form, o quelli che crei a runtime con .Create(self), l' "owner" (cio "Self", la form) si preoccupa di fare il Free di tutti i componenti che "possiede" (infatti si chiama Owner).
    Se tu crei un componente con .Create(nil) devi fare tu il Free a mano, perch non specifichi l'owner.
    ℹ️ Leggi di pi su cyberlaundry ...

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Risposte: 4
    Ultimo Post: 12-05-2020, 23:20
  2. Delphi - Rave Report e etichette.
    Da Mameli nel forum Delphi
    Risposte: 5
    Ultimo Post: 25-02-2010, 22:47
  3. windows vista delphi 5 fuzzy report
    Da gianlorenzo nel forum Delphi
    Risposte: 1
    Ultimo Post: 05-10-2008, 00:01
  4. Access: aiuto REPORT
    Da JPetrucci nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 28-04-2005, 18:46
  5. Aiuto urgentissimo sui report!
    Da princesa nel forum Visual Basic 6
    Risposte: 1
    Ultimo Post: 13-07-2004, 17:26