REPORT

di il
10 risposte

REPORT

Salve, sono novizio in questo forum ed ho bisogno di consigli per un report di acces abbastanza particolare. In pratica ho fatto un db access 2003 per registrare i vari rifornimeti di carburate della mia auto, io dispongo di fogli di cartoncino formato A5 prestampati con 25 righe per facciata. ho formattato un report tabellare per stampare i vari record, e si quì nulla di eccezzionale. Il mio cruccio è poter stampare solo l'ultimo record successivo utilizzando la stessa scheda nella stampante sino a che non si riempie. Cioè se sono già presenti 5 record/righe stampate sul foglio, vorrei che alla prossima stampa dell'ultimo record, usando la stessa scheda, mi stampasse solo il 6° record alla prima posizione utile dopo il 5°...e così via. Un pò come avviene per le operazioni bancarie sui libretti di deposito che registra l'operazione attuale nella prima posizione vuota dopo le atre presenti sul libretto.
Spero di essere stato eloquente e che qualcuno mi dia una mano.
Saluti a tutti
Pino63

10 Risposte

  • Re: REPORT

    Il tuo problema non è semplice da risolvere tecnicamente. Personalmente avevo (ancora oggi ho) un problema simile anch'io e mi sono accorto che faccio prima a stampare "il grosso" e proseguire a mano nei righi successivi. Quando tutto diventa troppo disordinato e/o scomodo da leggere, periodicamente ristampo tutto.
    Io avrei una soluzione tanto spartana quanto "hai davvero voglia di perderci del tempo"...
    1) Fai una copia del tuo report (Report2)
    2) Dovresti applicare un filtro su Report2, OGNI VOLTA CHE VUOI STAMPARE, che escluda i record già stampati
    3) In visualizzazione struttura Report2 dovresti, sempre OGNI VOLTA CHE VUOI STAMPARE, ridimensionare alcune aree (adesso non saprei spiegarti nei particolari) che ti permettano la stampa da un certo centimetro/altezza in poi......ma fai attenzione che questo può andar bene solo se stampi su una pagina sola, perchè poi alla pagina successiva ti ristampa da metà foglio ecc......praticamente dovresti fare un po' di prove per vedere l'effetto.

    Decidere di automatizzare tutto questo, non è affatto semplice, con la dovuta competenza si dovrebbe poter fare, ma occorrerebbe mettere in piedi un lungo codice (o lunga sequenza di azioni macro), da perderci davvero la testa.
    Fin qui ho detto la mia.
  • Re: REPORT

    Io ti ringrazio tantissimo anche per il fatto che almeno ci hai provato. Si lo so, non è facile scrivere righe di codice per fare quello che ho elencato, però sai com'è, i forum servono proprio a questo, hai visto mai che Bill Gates leggesse questo argomento?
    Naturalmente scherzo e ringrazio chiunque intervenga.

    Saluti Pino63
  • Re: REPORT

    Mi sa che la mia precedente risposta ha un po' il sapore di bufala.
    Prova a dare un'occhiata a questo altro post, con susseguente rimando ad un altro link, che mi sembra essere attinente al tuo problema.

    https://www.iprogrammatori.it/forum-programmazione/access/colorare-base-loro-valore-alcuni-campi-report-t14316.html

    Presupponendo che tu stampi Nero su Bianco, se tu imposti da qualche parte i seguenti valori
    0 corrispondente al Nero
    16777215 corrispondente al Bianco
    potresti dire a qualche filtro da impostare che i record che non ti interessano devono essere stampati in Bianco. I restanti in Nero cominceranno ad essere stampati in Nero da una certa riga in poi proprio come vorresti tu.
    Dimenticavo di dirti che sul Report2 dovresti eliminare, nascondere o colorare di Bianco i rettangoli di intestazione e tutti quei controlli che non ti interessa stampare dalla 2a volta in poi.
  • Re: REPORT

    Grazie per la "dritta" Osvaldo, adesso lo studio un pò poi vedo quello che mi viene fuori.
    Ti farò sapere.

    Saluti Pino63
  • Re: REPORT

    Niente da fare, ho seguito le istruzioni del blog al link che mi hai suggerito, ma non succede nulla.
  • Re: REPORT

    Io imposterei il problema così:

    A) Ho i seguenti campi da stampare
    Campo1: Contatore (ordinato Crescente)
    Campo2: Testo
    Campo3: Testo
    Campo4: Testo

    B) Si vuole stampare i record dal 6° in poi (cioè avente [Campo1]>5), continuando la sequenza di stampa dei righi precedenti.

    Ecco la mia soluzione:

    1) Fare una copia di Report1 che chiamerei Report2 (Report1 rimane per stampare sempre tutto, Report2 dovrà stampare soltanto dalla 2a volta in poi)
    2) Aprire Report2 in visualizzazione struttura
    3) Selezionare tutti i campi, controlli e linee che si trovano nelle aree Intestazione report, Intestazione pagina, Piè di pagina e impostare la proprietà Visibile: No
    Lasciare Visibile: Sì soltanto ai campi da stampare nella zona Corpo (cioè Campo1, Campo2, Campo3, Campo4)
    4) Impostare per ognuno di questi campi, la proprietà
    Nome elemento: attribuire un nome diverso dal nome del campo di origine, ci sono problemi di confusione per quello che esprimerò più avanti
    5) Impostare per ognuno di questi campi, la proprietà Origine controllo, scrivendo per ogni campo le seguenti 4 sintassi
    =IIf([Campo1]>5;[Campo1];"")
    =IIf([Campo1]>5;[Campo2];"")
    =IIf([Campo1]>5;[Campo3];"")
    =IIf([Campo1]>5;[Campo4];"")
    la funzione IIf dice in sostanza che alla condizione [Campo1]>5 vera, stampa quello che c'è scritto nel 2° campo dell'espressione, cioè il valore del campo. Quando è falsa (cioè per tutti i record precedenti già stampati in passato), stampa una stringa vuota. All'interno delle espressioni ho usato i nomi dei campi di origine che, se avessero avuto lo stesso nome della proprietà "Origine controllo", avrebbero generato errori di confusione per Access.
    6) Salva Report2, inserisci il vecchio foglio e stampa.

    Osservazioni:
    Ogni volta che devi stampare uno o più righi successivi, devi sempre prima aprire Report2 in visualizzazione struttura e correggere il punto 5) modificando il valore dopo il simbolo > a tutti e 4 i campi. Salvare e poi stampare.
    Se hai un solo report concepito così, direi che questo fastidio non ti costa caro. Certamente si può rendere tutto più elegante ed automatizzato con alcune opportune istruzioni di codice Visual Basic.
  • Re: REPORT

    Buona giornata, Pino;
    hai pensato di applicare la "Formattazione condizionale" sui campi interessati nella stampa?
    Cerco di spiegarmi; nei Report, come nelle Maschere, è possibile attribuire una formattazione ai campi desiderati.

    Nel Tuo caso proverei a pensare di:
    1) aggiungere alla Maschera inserimento dati, se già non previsto, un pulsante dedicato all'apertura del Report aggiungendo, alla fine del codice VBA, un ImputBox che determini la data di partenza, poniamo DataStart; precedentemente DataStart sarà stata dichiarata come Public DataStart As Date
    2 )nel Report imposterei la codizione su ogni campo:

    Condizione 1
    L'espressione é: [TuoCampoData] < [DataStart] ---> Colore cattere primo piano ---> Bianco

    Credo che a questo modo i Record con data maggiore o uguali a DataStart verrebbero stampati in coda ai Record precedentemente stampati.

    Nel caso in cui non desideri impiegare ImputBox, ci possono essere soluzioni alternative.

    A disposizione.

    Buon fine settimana.
  • Re: REPORT

    Faccio fatica a capire... ma quello che chiedi non corrisponde a stampare un NUMERO FISSO di righe per pagina...?

    Se la risposta è SI esiste la proprietà FORCENEWPAGE da usare su Corpo_Format dopo aver implementato un minimo di codice che conta i Records...

    Se non ho capito... cancella.
  • Re: REPORT

    Per prima cosa buon ritorno a tutti sperando che le vacanze siano state bellissime (Monti permettendo). Vi ringrazio per essere accorsi numerosi al mio problema. Proverò i consigli sia di Osvaldo che di GiuseppeMN anche se mi sa che ho già provato nella direzione dei codice colori senza ottenere nulla. Per chiarire le idee ad @Alex, la questione è questa: Posseggo delle schede prestampate (ma può essere benissimo un qualsiasi foglio bianco), con 25 righe per facciata, io su queste schede ci stampo la data, i litri e l'importo di ogni pieno che effettuo in un mese, p.e. il mese scorso ho effettuato 3 pieni e quindi la stampa del report mi ha stampato i primi 3 righi, rigo 1, rigo 2, rigo 3; questo mese ho effettuato nr 4 pieni e mettendo le stessa scheda nella stampante, voglio che il report mi stampi i record dal nr. 4 in poi dopo il nr.3 che già esiste, fino al riempimento dei 25 righi. Spero di essere riuscito a farmi capire.
    Un saluto a tutti

    Pino63
  • Re: REPORT

    HO RISOLTO RAGAZZI!!! Grazie ai suggerimenti di Giuseppe ho risolto il problema, adesso se ci sono nuovi record me li stampa accodandoli a quelli già esestenti, altimenti nulla. Grazie a tutti.

    Pino
Devi accedere o registrarti per scrivere nel forum
10 risposte