Report e sottomaschere filtrare

di il
32 risposte

32 Risposte - Pagina 2

  • Re: Report e sottomaschere filtrare

    Mi spieghi perché devi esportare delle maschere in un report?

  • Re: Report e sottomaschere filtrare

    Hanno già i campi necessari per la stampa come detto prima non dovrei creare una Query specifica che combina tutti i campi il report sarebbe un ‘’ collage ‘’  di sottomaschere filtrate 

  • Re: Report e sottomaschere filtrare

    Solo x conferma e chiusura richiesta….  Non ci sono altri metodi alternativi? 

  • Re: Report e sottomaschere filtrare

    Continuo a non capire perché non realizzare un report standard con la sua query associata ed eventualmente un sottoreport se occorre.

  • Re: Report e sottomaschere filtrare

    Semplicemente perché volevo evitare di creare una ‘super query’  le sottomaschere contengono tantissimi campi e non voglio riformattare il report da zero 

  • Re: Report e sottomaschere filtrare

    La maschera A contiene diverse sottomaschere anagrafica, interventi, controlli, specifiche tecniche, rilievi temperature…. Creare una Query univoca diventa non gestibile 

  • Re: Report e sottomaschere filtrare

    Se non esiste altra via userò la maschera A con la Combo x filtrare e stampare senza report

  • Re: Report e sottomaschere filtrare

    28/03/2024 - ornello ha scritto:


    Creare una Query univoca diventa non gestibile 

    Questo dipende da come è strutturato il db. C'è sempre una soluzione in questo senso se le cose sono fatte bene.

  • Re: Report e sottomaschere filtrare

    27/03/2024 - ornello ha scritto:


    La maschera A poi la importo trascino nel report Z per la stampa  dei record selezionate dalla Combo tramite ID selezionato, qui inizia il problema…  non riesco a trovare il modo per aggiornare la maschera A e le sottomaschere che importo nel report 

    Ciao,

    per fare questo è molto semplice… 

    • Apri in struttura la tua maschera e un report vuoto.
    • Porta in Copia gli oggetti della maschera, vai nella struttura del report e fai Incolla
    • A questo punto nel report hai la struttura identica a quella della form e se vuoi personalizzare qualcosa adesso lo puoi fare…
    • Chiudi tutto e Salva
    • Apri la Maschera, seleziona con la combo un certo ID, a questo punto stai visualizzando i dati di un certo record.
    • Premi il pulsante per generare il report … per esempio CmdMyReport e inserisci un codice di questo tipo :
    Private Sub CmdMyReport_Click()
        ' set filter
        Dim idRecord As Variant
        idRecord = Me.YourComboName.Value
        ' report open
        DoCmd.OpenReport "TourReportName", acViewPreview, , "ID = " & idRecord
    End Sub

    N.B. Questo metodo funziona se hai impostato sulla Maschera l'utilizzo del Filtro (Me.Filter) da applicare alla form quando viene selezionato qualcosa dalla combobox. 
    Se filtri il record per esempio nella stringa sql di una query, allora dovrai tenerne conto e applicare la selezione nella where condition… ecc.ecc…

    Prova a provare … Ciao… ;-)

  • Re: Report e sottomaschere filtrare

    Ciao ringrazio per i suggerimenti appena ho modo provo il metodo proposto ed aggiorno la tematica… 

  • Re: Report e sottomaschere filtrare

    Scusa Franco ma il codice che hai indicato, in cosa differisce da questo?

    27/03/2024 - ornello ha scritto:


    Private Sub btnStampaReport_Click()
       Dim strReportName As String
       Dim strWhereClause As String

       ' Imposta il nome del report che desideri aprire
       strReportName = "NomeDelTuoReport"

       ' Costruisci il criterio WHERE per filtrare il report
       strWhereClause = "[ID_Anag] = " & Me.cmbFiltro.Value

       ' Apri il report passando il criterio WHERE
       DoCmd.OpenReport strReportName, acViewPreview, , Strauss

    End Sub

  • Re: Report e sottomaschere filtrare

    29/03/2024 - Antony73 ha scritto:


    Scusa Franco ma il codice che hai indicato, in cosa differisce da questo?

    27/03/2024 - ornello ha scritto:


    Private Sub btnStampaReport_Click()
       Dim strReportName As String
       Dim strWhereClause As String

       ' Imposta il nome del report che desideri aprire
       strReportName = "NomeDelTuoReport"

       ' Costruisci il criterio WHERE per filtrare il report
       strWhereClause = "[ID_Anag] = " & Me.cmbFiltro.Value

       ' Apri il report passando il criterio WHERE
       DoCmd.OpenReport strReportName, acViewPreview, , Strauss

    End Sub

    E' solo un esempio il mio… 

    Ad ogni modo di differenze ce ne sono diverse… 
    Per esempio 
    -dichiarazioni inutili di variabili
    -la clausola where condition e filter sono due metodi diversi
    -il filtro si può passare passare direttamente come da esempio, per una sola condizione usare una variabile ha poco senso, si fa prima e meglio 
    -le parentesi Quadre sono inutili

    Insomma …. il codice deve essere snello, leggibile e di facile manutenzione nel tempo…
    Una riga di codice basta e avanza per un filtro di questa entità:

    DoCmd.OpenReport "TourReportName", acViewPreview, , "ID = " & Me.cmbFiltro.Value

    Poi si possono anche scrivere 20 righe di codice per fare la stessa cosa … ma non mi pare utile e bello ;-))

  • Re: Report e sottomaschere filtrare

    Si hai pienamente ragione ma il risultato mi pare uguale alla fine.

  • Re: Report e sottomaschere filtrare

    27/03/2024 - ornello ha scritto:


    Hanno già i campi necessari per la stampa come detto prima non dovrei creare una Query specifica che combina tutti i campi il report sarebbe un ‘’ collage ‘’  di sottomaschere filtrate 

    quando crei una maschera ed una sottomaschera tipo:

    tabellaA 1 a molti tabellaB

    pensi che access o qualsiasi database mandino come comando: 

    “FammiVedereSuMaschera2 IdatiPresentiSuMaschera1 ComeDaAssociazioneUnoaMolti”

    oppure quello che vedi graficamente viene tradotto in un linguaggio conosciuto al database tipo:

    select [campi] from tabellaB Right join tabellaA on TabellaA.[campotabellaA]=TabellaB.[CampotabellaB]

    hai n tabelle figlie?

    select * from tabellaA

    left join tabellaB on TabellaA.campo=TabellaB.Campo

    left join TabellaC on TabellaA.Campo=TabellaC.Campo

    ecc….

    per filtrare aggiungi:

    where tabellaB.campodafiltrare (like; =; >; <; not; ecc…) [tuocriteriodifiltro]

    and TabellaC.campodafiltrare  (like; =; >; <; not; ecc…) [tuocriteriodifiltro]

    ecc…

    28/03/2024 - ornello ha scritto:


    La maschera A contiene diverse sottomaschere anagrafica, interventi, controlli, specifiche tecniche, rilievi temperature…. Creare una Query univoca diventa non gestibile 

    se lo dici tu… e pensare che hai a disposizione pure il disegnino con tutte le relazioni.

  • Re: Report e sottomaschere filtrare

    29/03/2024 - By65Franco ha scritto:


     ' Apri il report passando il criterio WHERE
       DoCmd.OpenReport strReportName, acViewPreview, , Strauss

    End Sub

    Direi di no… quello Straus cos'è ? una variabile locale ? una variabile Public ? una costante ? un refuso ?  ;-))

    A vederlo così non potrebbe mai funzionare …  

    Ma comunque ognuno giustamente, dal mio punto di vista, ha la sua tecnica. Non ci vedo niente di male.

    Per esempio mancano alcune cose importanti. Ci vorrebbe una bella IF per controllare che il valore della combobox sia valido prima di aprire il report. Il controllo viene fatto a monte? … non si sa e pertanto ci si limita semplicemente nel fare degli esempi.
    Poi sta all'OP sistemare il proprio codice in modo consono e appropriato.

    L'importante che passi il concetto, l'idea … 

    Io per esempio scrivo il codice sempre commentandolo e se necessario riga per riga e quando vedo di poterlo semplificare lo riduco all'indispensabile come ad esempio eliminando definizione di variabili che vengono poste in memoria inutilmente. Alla fine perchè il compilatore si deve far carico di risolvere il contenuto delle variabili quando in certi contesti si possono passare i valori in modo esplicito ? 
    Beh, alla fine gli famo fa meno fatica ;-))

    (scherzo)   ;-)  

Devi accedere o registrarti per scrivere nel forum
32 risposte