stampa report con formato diverso per ogni record

Anonimo
2016-07-20T10:54:03+00:00

Buongiorno,

provo a descrivere nel dettaglio il mio problema

ho una tabella creata in access dove al suo interno ci sono alcuni attributi che possono assumere valore nullo.

Ora sto cercando di creare un report che mi stampi la tabella, solo che vorrei evitare di stampare i campi vuoti.

Ho prova a risolvere rendendo non visibile la casella di testo, ma questa procedura mi lascia un "buco" nella pagina di stampa.

Ho provato anche ad impostare come dimensione della riga 0, ma questo non mi permette di visualizzare il campo per i record che hanno l'attributo valorizzato.

In poche parole vorrei controllare il valore di un attributo e in base a quel valore decidere se visualizzarlo nel report e vorrei che la scelta fatta per un record r1 non influenzi la struttura del report per il record r2.

Spero di essere stato chiaro

Grazie per l'aiuto

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2016-07-25T20:38:20+00:00

ciao Luca,

crea questa nuova tabella nella demo:

scrivi questo codice nell'evento su apertura:

Private Sub Report_Open(Cancel As Integer)

If DCount("*", "T_controlli") = 0 Then

    Dim ctl As Access.Control

    Dim i   As Long

    For Each ctl In Me.Section(0).Controls

        If TypeName(ctl) = "textBox" Or TypeName(ctl) = "label" Or _

           TypeName(ctl) = "combobox" Then

            DBEngine(0)(0).Execute "insert into t_controlli (nomeControllo,dtop,dleft) values ('" & _

                                ctl.Name & "'," & ctl.Top & "," & ctl.Left & ")", 128

        End If

    Next

    Set ctl = Nothing

End If

End Sub

la tabella si popola come segue:

sono le posizioni in twip dei controlli del report dai qui salta fuori la posizione zero 225, quindi nessun tentativo casuale.

Anche la distanza è di 495 non è causale, ma può essere reimpostata come ti dicevo in precedenza, analogamente per 225.

Cosa succede quanto lanci il report in anterprima.

imposta un punto di interruzione come vedi qui sotto essendo certo che la finestra di visualizzazione immediata sia visibile ( per questi due aspetti non di do ulteriori indicazioni....)

aprendo nuovamente il report con la tabella aperta, vedi i valore nella finestra immediata relativi al nome del controllo e alla distanza in twip dal top ( scusa il gioco di parole... :-) ):

concentrati ora sul top lbl_nome e lbl_posizione che nella tuo scenario incrementano sempre nella mio demo invece no.

Perché? perché devi aumentare sempre la variabile contenente la proprietà top tranne quando il controllo è nullo o lunghezza 0.

se scorri passo a passo con F8 le istruzioni ad una ad una capisci meglio cosa fa il codice, fallo magari.

Vedrai che quando il ciclo individua l'etichetta lbl_nome sottrae 495 in modo da riportare indietro il valore top per poi aggiungere lo stesso valore, in modo che il controllo posizione, il successivo, sia posizionato esattamente alla stessa distanza del precedente, che in questo caso è nullo.

così' per tutti gli altri, più chiaro così?

Ciao, Sandro.

La risposta è stata utile?

0 commenti Nessun commento

19 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2016-07-20T13:39:17+00:00

    Ciao Luca,

    potresti creare una tabella temporanea impostando tante righe per ogni record in inpur con una struttura come ad es.

    Id  NomeCampo ValoreCampo

    123  Nome           Pippo

    123  Cognome     Rossi

    125  Nome           Pluto

    125  Indirizzo       Via Roma

    omettendo le righe che non risultanop valorizzate. A questo punto potresti basare la report su questa tabella e raggruppare per Id.

    Spero di essermi spiegato

    Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-07-20T12:47:23+00:00

    ciao Luca,

    non ho capito al 100%.

    supponiamo la tabella :

    nome cognome indirizzo
    pippo rossi
    pluto via roma
    bianchi via venezia
    mario verdi via dolo

    se intendi non voglio  visualizzare la riga che contiene un campo null, filtrando la tabella con una query adatta visualizzi solo mario verdi  via dolo.

    se invece è un problema di formattazione legato  al fatto che visualizzi il rettangolo che delimita il controllo( parlo del report) potresti semplicemente impostare il bordo del  controllo a trasparente.

    Facci sapere.

    Ciao,  Sandro.

    Ciao Sandro,

    grazie per la risposta!

    si vorrei far sparire dal report gli attributi con valore nullo.

    continuando ad usare la tabella fatta da te come esempio provo a descrivere meglio il mio problema:

    nel report mi ritrovo questa struttura

    Report1

    nome:              pippo

    cognome:        rossi

    indirizzo:         (null)

    Report2

    nome:              pluto

    cognome:        (null)

    indirizzo:         via roma

    vorrei che nel Report1 non compaia la riga relativa all'indirizzo, mentre nel Report2 vorrei che non compaia la riga del cognome

    Questo è il risultato che vorrei ottenere:

    Report1

    nome:          pippo

    cognome:    rossi

    Report2

    nome:          pluto

    indirizzo:     via roma

    ne approfitto anche per chiederti se sia possibile farlo tramite vba

    Luca

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Eliminata

    Questa risposta è stata eliminata a causa di una violazione del codice di comportamento. La risposta è stata segnalata manualmente o identificata tramite il rilevamento automatizzato prima dell'esecuzione dell'azione. Per ulteriori informazioni, fai riferimento al codice di comportamento.


    I commenti sono stati disattivati. Ulteriori informazioni

  4. Anonimo
    2016-07-20T12:10:41+00:00

    ciao Luca,

    non ho capito al 100%.

    supponiamo la tabella :

    nome cognome indirizzo
    pippo rossi
    pluto via roma
    bianchi via venezia
    mario verdi via dolo

    se intendi non voglio  visualizzare la riga che contiene un campo null, filtrando la tabella con una query adatta visualizzi solo mario verdi  via dolo.

    se invece è un problema di formattazione legato  al fatto che visualizzi il rettangolo che delimita il controllo( parlo del report) potresti semplicemente impostare il bordo del  controllo a trasparente.

    Facci sapere.

    Ciao,  Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento