View Full Version : Problema report di access
federico_78
16-10-2007, 22:00
Ho già postato in un'altra sezione ma non ho trovato risposte...quindi vi posto il mio problema:
Il problema è questo:
ho un database in cui ho creato 2 report (per esempio A e B).
Nella maschera in cui inserisco i dati ho messo un pulsante che mi permette di fare l'anteprima di stampa dei report.
Questo pulsante è associato ad una macro dove ci sono due azioni (tutte e due 'ApriReport'). Una è collegata al report A, l'altra al report B.
Il problema è che quando clicco sul pulsante mi vengono fuori tutte e 2 le anteprime contemporaneamente. Io vorrei che una volta cliccato su quel pulsante mi venisse chiesto quale delle 2 anteprime voglio visualizzare (o A o B). Sò che è possibile ma non trovo il comando giusto!!!!
Non sò se avete capito bene, ma non riesco a spiegarmi meglio!!
Spero che mi possiate aiutare!!!
Ciao e grazie!!!!!!!
scusa la domanda imbecille..
ma non è + comodo fare 2 pulsanti??
federico_78
16-10-2007, 22:23
scusa la domanda imbecille..
ma non è + comodo fare 2 pulsanti??
Domanda giusta, ci avevo pensato....il problema è che dovrei aggiungere altri report e non vorrei riempire la maschera di pulsanti!
Domanda giusta, ci avevo pensato....il problema è che dovrei aggiungere altri report e non vorrei riempire la maschera di pulsanti!
beh dipende da quanti report devi fare...
io creerei una maschera con i pulsanti di tutti i report...
e nella maschera principale un pulsante che apra la maschera di scelta...
capisci cosa intendo?
tanto poi rimuovendo tutte le cose non necessarie come i vari pulsanti e le righe di scorrimento....la maschera di scelta sarebbe molto piccola :)
se no proverei un'altra cosa (ma non ho access installato al momento per verificare come farlo)
dovresti associare al pulsante una query che va a compilarti la macro a seconda del valore che inserisci...
ma ripeto nn riesco a verificare se è fattibile :)
oppure come ultima scelta dei radio button da selezionare prima di premere il tasto macro :)
insomma le soluzioni ci sono...tutto sta a quanto ne sai di access e alla voglia di sbattimento per farlo :)
io personalmente farei il mio primo modo che ti da anche la pox di aggiungere tutti i pulsanti che vuoi nella seconda maschera senza riscrivere query o altro ;)
Invece di mettere una macro che fa una cosa banale come aprire un report, mettici del codice VBA che lo fa, no ?
Clicca sul bottone, poi clicca "Proprietà", in Evento -> Click metti "Routine evento" -> Premi 'Sfoglia' -> e metti il codice per aprire un report:
DoCmd.OpenReport "Nome_Report", acViewPreview
Puoi parametrizzare "Nome_Report" in modo che venga chiesto all'utente o scelto con un radiobutton (come ti dicevano sopra) o da una casellina a discesa (scelta migliore, la puoi 'caricare' coi nomi di tutti i report presenti, così se ne aggiungi, lei si adatta automaticamente).
federico_78
18-10-2007, 23:24
beh dipende da quanti report devi fare...
io creerei una maschera con i pulsanti di tutti i report...
e nella maschera principale un pulsante che apra la maschera di scelta...
capisci cosa intendo?
tanto poi rimuovendo tutte le cose non necessarie come i vari pulsanti e le righe di scorrimento....la maschera di scelta sarebbe molto piccola :)
Ho seguito questo consiglio e mi sembra una buona idea!! :)
se no proverei un'altra cosa (ma non ho access installato al momento per verificare come farlo)
dovresti associare al pulsante una query che va a compilarti la macro a seconda del valore che inserisci...
ma ripeto nn riesco a verificare se è fattibile :)
oppure come ultima scelta dei radio button da selezionare prima di premere il tasto macro
Quì mi sono perso!!! :mc: :confused:
Invece di mettere una macro che fa una cosa banale come aprire un report, mettici del codice VBA che lo fa, no ?
Clicca sul bottone, poi clicca "Proprietà", in Evento -> Click metti "Routine evento" -> Premi 'Sfoglia' -> e metti il codice per aprire un report:
DoCmd.OpenReport "Nome_Report", acViewPreview
Puoi parametrizzare "Nome_Report" in modo che venga chiesto all'utente o scelto con un radiobutton (come ti dicevano sopra) o da una casellina a discesa (scelta migliore, la puoi 'caricare' coi nomi di tutti i report presenti, così se ne aggiungi, lei si adatta automaticamente).
Questo procedimento non l'avevo mai fatto!! Ho ancora da imparare!!!!!
Ho provato a seguire i tuoi consigli, solo che ho un problema (sicuramente ho sbagliato qlc!!).
Ho creato 2 codici sullo stesso bottone:
DoCmd.OpenReport "Report_A", acViewPreview
DoCmd.OpenReport "Report_B", acViewPreview
Solo che quando clicco mi si aprono entrambi i report. Che comando devo inserire per fargli fare la scelta?
Ho provato anche a creare una casella a discesa ma non la riesco ad associare ai due report! Help me!!!!
Ciao e grazie ancora per i consigli!!!!
Ovviamente si aprono tutti e due !
Il codice 'su click' viene eseguito in toto quando premi il bottone, quindi lui apre prima il report "A" e poi di seguito il "B".
Un modo semplice è mettere ovviamente due bottoni.
Un altro modo è usare un sistema che prima apra il "A" e poi il "B" , sempre premendo lo stesso bottone:
''Definisco una variabile che faccia da switch
Static x as boolean
''Testo il suo valore
if x = true then
DoCmd.OpenReport "Report_A", acViewPreview
else
DoCmd.OpenReport "Report_B", acViewPreview
endif
''Modifico il valore della variabile
x = not x
Così, quando premi il bottone, prima si apre "A", se premi ancora si apre "B".
Ovvio che così va bene finchè hai solo due report, ma già avrai notato che se volessi aprire prima B di A, dovrei modificare il codice.
Un altro modo potrebbe essere chiedere all'utente il nome del report da aprire:
Dim Nome_report as string
Nome_report = InputBox ("Inserisci il nome report:" , "Domanda")
''Controllo che non abbia inserito solo spazi
If trim(Nome_report) <> "" then
DoCmd.OpenReport Nome_report, acViewPreview
end if
E per caricare una casella a discesa (detta 'Casella combinata') coi nomi dei reports, c'è un modo semplice, spiegato anche nell'help di Access:
Dim obj As AccessObject, dbs As Object
Set dbs = Application.CurrentProject
' Search for open AccessObject objects in AllReports collection.
For Each obj In dbs.AllReports
''Se togli il commento alla IF che segue, ti elenca solo i rep. caricati al momento
'If obj.IsLoaded = True Then
' Print name of obj.
Debug.Print obj.Name
CasellaCombinata.AddItem obj.Name
'End If
Next obj
Nell'evento click del bottone poi, metterai:
DoCmd.OpenReport CasellaCombinata.text, acViewPreview
Ovvio che sto codice è molto 'grezzo', devi aggiungerci controlli (per evitare che dia errore se inserisce il nome di un report non valido) ecc...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.