+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Stampa su report di record filtrati e visaulizzati su listbox con campi calcolati

  1. #1
    domedele non è in linea Novello
    Post
    9

    Stampa su report di record filtrati e visaulizzati su listbox con campi calcolati

    Come suggeritomi apro nuovo thread per un problema conseguente al precedente.

    Ho creato una maschera con due filtri che mi danno i risultati in una listbox.
    Vorrei aggiungere
    -un pulsante che mi permatta di stampare i record selezionati dai filtri e visibili il listbox
    -un campo totale per sommare i prezzi

    Aggiungo il file db da cui ho preso spunto su sitocomune in formato A2003 che ha però il report che non seleziona i record in base ai filtri.

    Ricerche.mdb

    Grazie dell'aiuto!

  2. #2
    Phil_cattivocarattere non è in linea Scribacchino
    Luogo
    Verona-Mantova
    Post
    1,751
    Quote Originariamente inviato da domedele Visualizza il messaggio
    Come suggeritomi apro nuovo thread per un problema conseguente al precedente.
    Il suggeritore sono io ed in quanto tale intervengo per primo
    Quote Originariamente inviato da domedele Visualizza il messaggio
    Ho creato una maschera con due filtri che mi danno i risultati in una listbox.
    Vorrei aggiungere
    -un pulsante che mi permatta di stampare i record selezionati dai filtri e visibili il listbox
    ...
    Aggiungo il file db da cui ho preso spunto su sitocomune in formato A2003 che ha però il report che non seleziona i record in base ai filtri.
    Il file che hai pubblicato stampa correttamente quello che viene filtrato. Non so quindi se è un problema legato alle modifiche che hai introdotto sul tuo db.
    Quote Originariamente inviato da domedele Visualizza il messaggio
    -un campo totale per sommare i prezzi
    Nel report? dai, è facile aggiungere i totali ai report... cerca nella guida in linea, altrimenti crea un report con la procedura guidata, uno qualsiasi, ti propone anche di mettere i totali e guarda le proprietà del controllo per vedere cosa si deve scrivere.

  3. #3
    domedele non è in linea Novello
    Post
    9
    Quote Originariamente inviato da Phil_cattivocarattere Visualizza il messaggio
    Il suggeritore sono io ed in quanto tale intervengo per primo
    Il file che hai pubblicato stampa correttamente quello che viene filtrato. Non so quindi se è un problema legato alle modifiche che hai introdotto sul tuo db.
    Non credo di sbagliare personalizzando il codice del bottone

    codice:
    Private Sub StampaManu_Click()
    Dim StrSQL As String
    StrSQL = Me.ListRicerca.RowSource
    
    DoCmd.OpenReport "rManutenzioni", acViewPreview, StrSQL
    End Sub
    ma il report non capisco come è fatto. Se lo realizzo da una delle query (lo ricordo c'è una query per ogni filtro che fa capo alla stessa tabella) premendo il tasto poi mi riesce una maschera dove mi richiede il parametro di ricerca.


    EDIT: Se lo realizzo dalla tabella funziona ma non posso inserire un campo che è frutto di un collegamento con altra tabella e che la query integra.

    Quanto al totale lo volevo vedere nella listbox non nel report

    Grazie
    Ultima modifica di domedele; 21-10-2015 14:28 

  4. #4
    Phil_cattivocarattere non è in linea Scribacchino
    Luogo
    Verona-Mantova
    Post
    1,751
    Quote Originariamente inviato da domedele Visualizza il messaggio
    Quanto al totale lo volevo vedere nella listbox non nel report
    La metto per prima per dire che la lascio per ultima.
    Quote Originariamente inviato da domedele Visualizza il messaggio
    codice:
    Private Sub StampaManu_Click()
    Dim StrSQL As String
    StrSQL = Me.ListRicerca.RowSource
    
    DoCmd.OpenReport "rManutenzioni", acViewPreview, StrSQL
    End Sub
    ma il report non capisco come è fatto. Se lo realizzo da una delle query (lo ricordo c'è una query per ogni filtro che fa capo alla stessa tabella) premendo il tasto poi mi riesce una maschera dove mi richiede il parametro di ricerca.
    No, c'è qualcosa che non va, perché se è fatto bene il criterio nella query è preso automaticamente dalla maschera.
    Posto il codice che è presente nel db dimostrativo così tutti possono capire
    codice:
    Private Sub Cerca_Click()
    ' In Base allo stato delle caselle per la ricerca viene '
    ' impostato il RowSource della List alla query adatta '
    If Not IsNull(Me.ID) Then Me.List.RowSource = "Cerca_ID"
    If Not IsNull(Me.Ditta) Then Me.List.RowSource = "Cerca_Ditta"
    If Not IsNull(Me.Loca) Then Me.List.RowSource = "Cerca_Località"
    If Not IsNull(Me.Prov) Then Me.List.RowSource = "Cerca_Prov"
    ' Se non viene trovato nulla allora appare un MsgBox '
    If Me.List.ListCount = 0 Then
        strmsg = MsgBox("Nessun record trovato !", vbExclamation, "Attenzione...")
    End If
    End Sub
    
    Private Sub Ditta_AfterUpdate()
    Me.ID = Null
    Me.Loca = Null
    Me.Prov = Null
    End Sub
    
    Private Sub ID_AfterUpdate()
    Me.Ditta = Null
    Me.Loca = Null
    Me.Prov = Null
    End Sub
    
    Private Sub Loca_AfterUpdate()
    Me.Ditta = Null
    Me.ID = Null
    Me.Prov = Null
    End Sub
    
    Private Sub Prov_AfterUpdate()
    Me.Ditta = Null
    Me.Loca = Null
    Me.ID = Null
    End Sub
    
    Private Sub List_DblClick(Cancel As Integer)
    DoCmd.OpenForm "Anagrafica", , , "[ID]=" & Me.List
    End Sub
    
    Private Sub Stampa_Click()
    Dim StrSQL As String
    StrSQL = Me.List.RowSource
    DoCmd.OpenReport "Anagrafica", acViewPreview, StrSQL
    End Sub
    Presupposto fondamentale per il funzionamento (così com'è) è che la maschera sia aperta, che tu abbia indicato almeno un criterio di selezione e fatto click su Cerca. A quel punto viene popolata la listbox alla quale viene assegnata come RowSource una delle query presenti.
    Le query, una per ogni criterio di selezione, hanno tutte la stessa struttura, cambia solo il campo in cui è inserito il criterio di selezione che fa comunque sempre riferimento alla maschera (ecco perché serve la maschera aperta e con un criterio inserito).
    Il report può prendere come "origine" indifferentemente una delle query nel momento in cui queste hanno la stessa struttura (quindi stessi campi).
    Il report ha come origine dati la tabella Anagrafica e sfrutta poi il comando di apertura
    codice:
    DoCmd.OpenReport "Anagrafica", acViewPreview, StrSQL
    in cui StrSQL è il nome di una delle query che si basano interamente e solo su quella tabella. Se tu nelle query hai altri campi il sistema salta.
    Se vuoi mantenere il sistema così com'è, devi avere un'origine dati unica, ad esempio una query che mette in relazione varie tabelle senza criteri di selezione. Su questa query "globale" costruisce le singole query di ricerca e sempre sulla query "globale" crei il report.
    Prova ad illustrare le tabelle e i campi coinvolti. Forse adesso hai ancora le idee più confuse di prima. Pian piano si schiariranno.

  5. #5
    domedele non è in linea Novello
    Post
    9
    Scusa l'ignoranza. A parte che ho risolto impostando il report sulla tabella (ma mi manca un campo che nella query era ottenuto da un collegamento con una tabella)
    ma non mi è chiaro questo StrSQL...
    Io lo vedo scritto una volta sola in tutto il codice è pensavo fosse la variabile che tenesse in memoria le riga della Listbox. Tu invece dici che è il nome di una qualsiasi query (con omogenea struttura).

    Il problema è che ho un altro report che si basa su un incrocio di tre tabelle quindi ho una query che unisce due tabelle e poi una seconda che viene utilizzata dalla maschera coi filtri e la listbox.
    Questa che ho parzialmente risolto era più facile!

  6. #6
    Phil_cattivocarattere non è in linea Scribacchino
    Luogo
    Verona-Mantova
    Post
    1,751
    Quote Originariamente inviato da domedele Visualizza il messaggio
    ...
    ma non mi è chiaro questo StrSQL...
    Io lo vedo scritto una volta sola in tutto il codice è pensavo fosse la variabile che tenesse in memoria le riga della Listbox. Tu invece dici che è il nome di una qualsiasi query (con omogenea struttura).
    ...
    Non lo dico io, lo dice il codice. Riassunto dell'uso di strSQL
    codice:
    Private Sub Cerca_Click()
    ' In Base allo stato delle caselle per la ricerca viene '
    ' impostato il RowSource della List alla query adatta <=== leggere il commento
    If Not IsNull(Me.Ditta) Then Me.List.RowSource = "Cerca_Ditta"
    If Not IsNull(Me.Loca) Then Me.List.RowSource = "Cerca_Località"
    If Not IsNull(Me.Prov) Then Me.List.RowSource = "Cerca_Prov"
    ...
    End Sub
    
    Private Sub Stampa_Click()
    Dim StrSQL As String
    StrSQL = Me.List.RowSource '<=== Ecco qua
    DoCmd.OpenReport "Anagrafica", acViewPreview, StrSQL
    End Sub
    Alla variabile StrSQL viene essegnato il valore della proprietà RowSorce della listbox che, a seguito della Sub Cerca_Click(), contiene il nome di una delle query.

+ Rispondi al Thread

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi