22/10/2023 - gigia2710 ha scritto:
Le sto provando tutte! ma niente da fare…
Il pulsante per avviare il report si trova nella sottomaschera …
Ho inserito i due codici che mi hai proposto , ma entrambi non vanno
Ciao, purtroppo sei molto lontano dal concetto e dalla soluzione che ripeto, è molto semplice… quindi devi approfondire l'argomento e non fare le prove sperando di prenderci ;-))
prima di tutto : Come accennava @Alex, lavora con gli oggetti puliti e quindi non memorizzare nella query o nelle proprietà del report condizioni e regole che rendono meno flessibile gli oggetti stessi.
secondo : Per quasi tutti gli oggetti è possibile eseguirli passando dei parametri. In questo caso devi approfondire gli argomenti di come passare i parametri quando mandi in esecuzione una Query, una Form, un Report, etc etc…
Riepilogando il tuo caso, abbiamo:
- un Form
- un Report
- una Query
- nella Form, per ogni record, hai i campi ID_Personale e ID_Malattie
- nel Report hai come origine dati una Query e questa contiene delle colonne. ID_Personale e ID_Malattie
- lasciare gli oggetti puliti si intende:
- non mettere nessun criterio nella Query riferito alle due colonne di cui sopra
- non mettere nessun criterio nelle proprietà del Report
- quando ti posizioni su un record della form e premi il pulsante "Stampa" hai a disposizione, per il record corrente, ID_Personale e ID_Malattie
- quando premi il Pulsante Stampa sul record della Form esegui il comando per eseguire il Report
Bene, a questo punto hai tutto quello che ti occorre per eseguire il report per un determinato record selezionato nella Form.
Il report dovresti eseguirlo con il comando OpenReport: Metodo DoCmd.OpenReport (Access) | Informazioni su Microsoft
La sintassi e i parametri, come da documentazione che ti ho allegato sopra, sono :
Bene … a questo punto mi pare di aver capito che:
- il report si chiama R_Stampa_Malattie
- l'origine dati del report è la query Q_Stampa_Malattie
- nell'origine hai due colonne da filtrare che si chiamano:
- la Form dalla quale avviare l'esecuzione del Report, hai due textbox nel record corrente e si chiamano:
Come abbiamo visto dalla documentazione allegata sopra, eseguirai il report con la riga di comando inserita nel Pulsante “Stampa” :
DoCmd.OpenReport "TuoNomeReport", acViewPreview, , “TuaCondizioneWhere”
Adesso devi costruire la condizione Where e per farlo dovrai creare una stringa che concatena le colonne della “origine dati” del report con i valori del record corrente della Form… per esempio:
DoCmd.OpenReport "R_Stampa_Malattie", acViewPreview, , "ID_Personale=" & Me.ID_Personale & “ AND ID_Malattie=” & Me.ID_Malattie
che, come da documentazione di cui sopra :
Sintassi
espressione. OpenReport (ReportName, View, FilterName, WhereCondition, WindowMode, OpenArgs)
in rosso sono i parametri da utilizzare nel tuo caso, per i quali si definisce il nome del Report, il tipo di Vista e la condizione Where Condition che rappresenta i criterie per i quali viene filtrata l'origine dati del Report.
In questo caso vai a filtrare, nell'origine dati del report, tutti i records in cui la colonna della Query ID_Personale sia uguale al campo della form Me.ID_Personale e (AND) tutti i records in cui la colonna della Query ID_Malattie sia ugale al campo della Form Me.ID_Malattie.
Come puoi vedere non è necessario “provarle tutte” ma semplicemente sarà necessario approfondire l'argomento nella documentazione del supporto tecnico Microsoft e applicare le sintassi e i metodi messi adisposizione.
Fai test e verifica i nomi delle colonne della Query e dei campi della Form e se la condizione Where soddisfa le tue esigenze. ;-)
Questa rappresentata è solo una strada percorribile, ma ci sono anche altri sistemi per raggiungere lo stesso scopo.
P.S.
ti consiglio, se posso permettermi, di fare sempre riferimento al suppporto Microsoft, trovi tutto quello che ti occorre, con spiegazione ed esempi. Questa documentazione che trovi online, è il tuo manuale da tenere sempre sotto mano. E' indispensabile.