Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [Rave Report] Salvare un report in automatico

    Buongiorno a tutti,
    io sto usando Delphi XE con rave report 9 integrato.
    devo riuscire a fare in modo che ogni tot tempo, il file di report (già impostato) in formato pdf, venga generato in automatico e salvato in una cartella (senza che venga fuori la finestra per scegliere il tipo di formato e per mandare l'effettivo comando di stampa).
    E' possibile fare una cosa del genere? se sì, come?

    Grazie, Mary
    Mary

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Cosa non riesci a fare di specifico? Il problema è la temporizzazione oppure la generazione del report in sé?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    La generazione del report: in questo caso la creazione del report non è associata ad un evento particolare (per esempio, onClick di un pulsante), ma allo scadere del timer. scaduto il timer, il file di report si deve generare in automatico in formato pdf senza che l'utente selezioni niente e venga salvato in una cartella.
    Mary

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    ttimer

  5. #5
    Come spiegato nel post precedente, il mio problema non è l'intervallo di tempo tra una creazione e l'altra, ma la creazione effettiva del file.
    Mary

  6. #6
    Ho risolto,
    incollo qui il link della documentazione che ho trovato nel caso qualcuno avesse lo stesso problema:

    http://www.nevrona.com/rave/tips/rvtip24.html

    nel mio caso, tutte le righe di codice che sono dentro l'evento on click dell'esempio, sono state inserite nell'evento onTimer dell'oggetto TTimer.

    Ciao, Mary
    Mary

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    Originariamente inviato da mariliana
    Come spiegato nel post precedente, il mio problema non è l'intervallo di tempo tra una creazione e l'altra, ma la creazione effettiva del file.
    OK direi allora che non capito nulla, anche perchè non uso RAVE

    Attenzione però (=> nota sempre non uso RAVE quindi non ti so dire) se la funzione è sincrona o asincrona.

    Se è sincrona => bon. Il programma si "ferma" finquando non ha finito di generare il report PDF.
    Se è asincrona (es. crea un thread separato)=> fai attenzione se il PDF viene generato in un tempo X.

    Se il report è "gigante" può capitare infatti che la "stampa" richieda che anche minuti e se il tuo programma "pensa" che sia già stata completata puoi trovarti con un file ancora in fase di scrittura (o neppure iniziata).

    In questo caso (soluzione generale, non specifica di RAVE) devi testare la "fine" dei lavori di chi ci sta lavorando sopra (il file) il che si può fare con un "trucchetto fetente" tipo questo

    codice:
    function fileInCreazione(i_file:string):boolean;
    var       f: file of byte;
           hFile:THandle;
    begin
       result:=false;
       hfile:=0;
       hfile := FileOpen(Pchar(i_file), OF_READ or fmsharedenynone);
       if hfile>0 then
       begin
           fileclose(hfile);
           result:=true;
       end;
    end;
    in pratica fai un ciclo (con dentro un delay) che "testa" se puoi aprire in lettura (ma esclusivamente) il file che ti interessa.
    quando ci riesci => è finita la generazione [ad esempio puoi spostare il file, cancellarlo etc]

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.