View Full Version : [access] far aprire un report diverso in base al valore di una casella
Ciao a tutti,
ho una tabella con alcune informazioni:
nome prodotto, numero di serie del prodotto, nazione di destinazione etc.
poi ho creato un report che in pratica èuna etichetta da stampare con alcune scritte precompilate (perchè non variano) e altre completate con i valori che ci sono nella tabella (nome prodotto, numero serie, nazionalità...)
Ora questo report-etichetta ha le scritte precompilate in italiano.
Vorrei creare ora un report con le varie lingue e far si che quando clicco nella maschera una certa riga, mi appaia il report in base a cosa cè scritto nella colonna NAZIONALITÀ (ora si apre ovviamente solo quello in italiano).
Per capirci: se nella colonna c'è scritto IT vorrei che si aprisse il report in italiano.
Se c'è scritto GB, vorrei che si aprisse quello in inglese...
Sapreste aiutarmi?
Grazie infinite
Ciao a tutti,
ho una tabella con alcune informazioni:
nome prodotto, numero di serie del prodotto, nazione di destinazione etc.
poi ho creato un report che in pratica èuna etichetta da stampare con alcune scritte precompilate (perchè non variano) e altre completate con i valori che ci sono nella tabella (nome prodotto, numero serie, nazionalità...)
Ora questo report-etichetta ha le scritte precompilate in italiano.
Vorrei creare ora un report con le varie lingue e far si che quando clicco nella maschera una certa riga, mi appaia il report in base a cosa cè scritto nella colonna NAZIONALITÀ (ora si apre ovviamente solo quello in italiano).
Per capirci: se nella colonna c'è scritto IT vorrei che si aprisse il report in italiano.
Se c'è scritto GB, vorrei che si aprisse quello in inglese...
Sapreste aiutarmi?
Grazie infinite
fai tutto con quattro righe in vba
if campoNazionalità.value="IT" then
DoCmd.OpenReport "ReportItaliano", acViewPreview
elseif campoNazionalità.value="GB" then
DoCmd.OpenReport "ReportInglese", acViewPreview
else
a=msgbox("lingua non specificata")
end if
Prima di tutto grazie.
lo devo inserire nell'evento con il doppio click?
(io voglio che il report appaia con due click)
poi ho selezionato generatore di codice e ho inserito il tuo codice modificando solo il nome dei campi e dei report, inserendolo tra le righe
Private Sub ID_DblClick(Cancel As Integer)
End Sub
So che non si fa cosi, altrimenti avrebbe funzionato.
Era solo per spiegarti le stupide operazioni che o compiuto
Non ho specificato che sono abbastanza a digiuno di access e programmazione.
Sto imparando un po' alla volta
Prima di tutto grazie.
lo devo inserire nell'evento con il doppio click?
(io voglio che il report appaia con due click)
poi ho selezionato generatore di codice e ho inserito il tuo codice modificando solo il nome dei campi e dei report, inserendolo tra le righe
Private Sub ID_DblClick(Cancel As Integer)
End Sub
So che non si fa cosi, altrimenti avrebbe funzionato.
Era solo per spiegarti le stupide operazioni che o compiuto
non sono stupide operazioni, vba funziona esattamente così doppio click sull'evento e generatore di codice per impostare il codice per l'evento, fai un debug passo passo per vedere cosa succede (in vba clicca sulla barra grigia a sinistra del codice e apparirà un pallino, poi esegui il codice e vedrai che si fermerà sulla riga dove hai messo il pallino e da li puoi eseguire passo passo le istruzioni
Questo è quello che appare:
http://imageshack.com/a/img713/1046/10v0.jpg (http://imageshack.com/i/jt10v0j)
nella mia tabella il campo Nazione è un elenco di valori (casella combinata).
Il report si chiama ETICHETTA ITA e quella di prova ETICHETTA EN
Quando faccio doppio click nella casella ID della maschera mi appare:
"errore di runtime '424':
Necessario oggetto"
Questo è quello che appare:
http://imageshack.com/a/img713/1046/10v0.jpg (http://imageshack.com/i/jt10v0j)
nella mia tabella il campo Nazione è un elenco di valori (casella combinata).
Il report si chiama ETICHETTA ITA e quella di prova ETICHETTA EN
Quando faccio doppio click nella casella ID della maschera mi appare:
"errore di runtime '424':
Necessario oggetto"
perchè non hai un oggetto che si chiama campoNAZIONE quale è il name della tua combobox?
Allora cancella campo
Inviato dal mio Nexus 5 utilizzando Tapatalk
niente, continua a non funzionare
Se il nome è giusto deve funzionare ( PS il nome non è l'etichetta
Inviato dal mio Nexus 5 utilizzando Tapatalk
E' passato qualche giorno perchè purtroppo non ho avuto tempo da dedicare alla cosa.
Ho rimesso le mani oggi, ma non riesco a venirne a capo.
L'avrei messo qui:
non voglio che me lo ridai sistemato, ma vorrei capire cosa non funziona.
Grazie
p.s.
poi toglierei il link
E' passato qualche giorno perchè purtroppo non ho avuto tempo da dedicare alla cosa.
Ho rimesso le mani oggi, ma non riesco a venirne a capo.
L'avrei messo qui:
non voglio che me lo ridai sistemato, ma vorrei capire cosa non funziona.
Grazie
p.s.
poi toglierei il link
scaricato
edit non hai maschere ne nulla per lanciare i report penso che ti risulta facile facile con 2 query spe
fatto
così funziona
i 2 report si basano su due query diverse che selezionano per nazionalità
avvisa che poi cancello
fatto.
La maschera si apriva facendo doppio click sull'ID della maschera "questo o quello"
(questo era un database di prova).
Ora guardo il tuo.
Grazie
rimetto il file modificato come era inizialmente (non quello che ti ho allegato) per farti capire cosa volevo fare:
https://drive.google.com/file/d/0B1k9cg1o01LbS0toVjJyM2lHeTA/edit?usp=sharing
Se nella maschera "questo o quello" fai doppio click nell'ID, si apre il report già filtrato con la sola riga di interesse.
Fatto questo io stampo l'etichetta (il report) con una stampante apposita per etichette.
Nella versione piu' evoluta, vorrei che si aprisse (sempre filtrato), l'etichetta personalizzata con la lingua in base alla nazione (ci sono due report, uno in italiano e l'altro parzialmente in inglese).
Grazie infinite per il tempo che mi stai dedicando
rimetto il file modificato come era inizialmente (non quello che ti ho allegato) per farti capire cosa volevo fare:
https://drive.google.com/file/d/0B1k9cg1o01LbS0toVjJyM2lHeTA/edit?usp=sharing
Se nella maschera "questo o quello" fai doppio click nell'ID, si apre il report già filtrato con la sola riga di interesse.
Fatto questo io stampo l'etichetta (il report) con una stampante apposita per etichette.
Nella versione piu' evoluta, vorrei che si aprisse (sempre filtrato), l'etichetta personalizzata con la lingua in base alla nazione (ci sono due report, uno in italiano e l'altro parzialmente in inglese).
Grazie infinite per il tempo che mi stai dedicando
ok ci guardo
Ok,
https://dl.dropboxusercontent.com/u/3996732/prova%20per%20inglese%20di%20ETICHETTE%20ITA.accdb
così funziona
il problema è che nella maschera non avevi il campo nazione (devi metterlo non visibile nella maschera )oltre a fare un filtraggio non corretto (si filtrano i dati nella query a seconda di quanto vale il valore del campo )
Perfetto.
Ti ringrazio.
Domani a mente fresca capisco bene il tutto e poi lo traslo nel database vero.
Grazie infinite
Perfetto.
Ti ringrazio.
Domani a mente fresca capisco bene il tutto e poi lo traslo nel database vero.
Grazie infinite
fai con calma
comunque il tuo codice aveva grossi problemi a livello concettuale (te lo scrivo qui così ti dò una chiave di lettura)
1) usavi una query che non faceva nulla su cui applicavi un altra query (autogenerata) per selezionare il report... i filtri sui report / maschere (condizione where all'apertura) non sono un gran che utilizzali solo se hai già una maschera che fà qualcosa e che in certi casi la puoi utilizzare per fare altro (il classico esempio di una maschera inserimento dati che vuoi riutilizzare per modificare un record) per altri usi meglio fare una query parametrica ovvero una query che prende i parametri per il where direttamente dalla maschera richiamandola con Forms!NomeMaschera!nomeControllo] (in colorato quello che devi cambiare per adattarlo alla tua maschera)
riguardo alla scelta di che report aprire la scelta devi farla su un controllo della maschera, nel tuo caso nella tua maschera mancava il combobox nazione ed era per quello che ottenevi l'errore necessario oggetto, nazione non esisteva (il codice vba lavora sulla maschera non sulla tabella associata) devi aggiungere il controllo e se non ti serve metterlo invisibile (Visibile no nella tabella della proprietà del controllo)
avevi un errore nell'if avevi controllavi che il campo avesse con valore EN invece di EX (che avevi nella tabella)
Ci siamo quasi, ma riportato il tutto nel database originale si presenta un ulteriore problemino.
Si apre il report nella lingua corretta, ma si riferisce sempre alla prima riga del database.
come hai visto ci sono dei numeri di serie.
Se faccio doppio click sull'ID del prodotto numero 3 che richiede il report in inglese, il report è in inglese, ma i dati sono quelli del prodotto numero 1.
Su quello che mi hai passato te invece funziona tutto.
Ci siamo quasi, ma riportato il tutto nel database originale si presenta un ulteriore problemino.
Si apre il report nella lingua corretta, ma si riferisce sempre alla prima riga del database.
come hai visto ci sono dei numeri di serie.
Se faccio doppio click sull'ID del prodotto numero 3 che richiede il report in inglese, il report è in inglese, ma i dati sono quelli del prodotto numero 1.
Su quello che mi hai passato te invece funziona tutto.
*hai modificato la query come l'ho modificata io con la parametrizzazione del campo ID?
* hai spostato l'origine del report alla query modificata?
Ora sono in questa situazione.
Quando clicco sul pulsante che dovrebbe generarmi il report filtrato, mi appare una finestra con scritto: "immettere valore paramentro".
Io gli scrivo un ID e lui mi apre il report filtrato sull'ID che gli ho detto. (e quindi corretto).
Solo che sul tuo questo lo fa in automatico!
Ora sono in questa situazione.
Quando clicco sul pulsante che dovrebbe generarmi il report filtrato, mi appare una finestra con scritto: "immettere valore paramentro".
Io gli scrivo un ID e lui mi apre il report filtrato sull'ID che gli ho detto. (e quindi corretto).
Solo che sul tuo questo lo fa in automatico!
ti appare perchè il campo non trova il campo ID
guarda e sistema il parametro della query (probabilmente non hai il campo ID nella maschera oppure hai dato al controllo contenente l'IDun (nome) diverso) oppure la maschera ha un altro nome e devi modificarla come ti ho scritto sopra
Risolto,
mi son fatto ingannare dal termine maschera (l'ho considerata come tipo di oggetto e non come nome proprio della maschera).
Rinominata con il nome della mia maschera, la query si è sistemata e ora tutto funziona!
Grazie infinite
Risolto,
mi son fatto ingannare dal termine maschera (l'ho considerata come tipo di oggetto e non come nome proprio della maschera).
Rinominata con il nome della mia maschera, la query si è sistemata e ora tutto funziona!
Grazie infinite
pensa che avevo cambiato il nome apposta per rendertelo più chiaro :D comunque l'importante che hai capito come si lavora con access
In verità non ho ancora capito perchè è stato necessario passare tramite una query che filtrasse la riga.
E' proprio per fare in modo che apparisse solo il report della riga interessata?
In verità non ho ancora capito perchè è stato necessario passare tramite una query che filtrasse la riga.
E' proprio per fare in modo che apparisse solo il report della riga interessata?
perchè è così che funziona un database
con un database relazionale tu hai una serie di dati suddivise in tabelle legate da una serie di relazioni e l'operazione che ti permette di estrarre i dati voluti è proprio la query
quindi si per creare un report con una sola etichetta ti serve proprio una query
if campoNazionalità.value="IT" then
DoCmd.OpenReport "ReportItaliano", acViewPreview
elseif campoNazionalità.value="GB" then
DoCmd.OpenReport "ReportInglese", acViewPreview
else
a=msgbox("lingua non specificata")
end if
Se volessi aggiungere una seconda condizione ad ogni se?
Cioè se e se allora..
Cosa dovrei scrivere a livello di sintassi?
Grazie
Se hai due condizioni da verificare nello stesso if :
If condizione1 AND condizione2 then
Inviato dal mio Nexus 5 utilizzando Tapatalk
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.