Newsgroup: it.comp.appl.access
Titolo: report senza record

Ho la necessità di, qualora un report fosse vuoto, aprire un msgbox
(e fin qui tutto ok su evento no_data) e di chiudere il report.
Ma in questo caso, se dopo il msgbox metto il comando
docmd.close
mi da errore.
come posso fare per chiuderlo?
grazie mille
Riccardo

 ha scritto nel messaggio
news:9n222u$k9r$1...@news.panservice.it...

Sull'evento Report Vuoto (NoData) oltre al messaggio e dopo di esso scrivi:
Cancel = -1 o Cancel = True.
Ricorda che la guida è sempri lì, in agguato...non farti fregare.
Ciao, Carlo


grazie, ho provato:
ho scritto:
Private Sub Report_NoData(Cancel As Integer)
MsgBox "........"
Cancel = -1
End Sub
 pero' poi mi dice:
L'azione openreport è stata annullata.
E' stato utilizzato un metodo dell'oggetto docmd per eseguire un'azione
visual basic ma poi è stato scelto Annulla in una finestra di dialogo...
.....
come risolvo?
grazie Riccardo

 ha scritto nel messaggio
news:9n23gr$klg$1...@news.panservice.it...

L'istruzione è perfetta. Deve funzionare. Accertati che non vi sia altro
codice o macro eseguiti o elaborati.
Usa il debug e segui la routine passo passo.
Per fare ciò entra nel modulo del report vai alla sub Private Sub
Report_NoData(Cancel As Integer)
e clicca in corrispondenza della sub sulla barra grigia lateralmente a
sinistra. Compare un pallino marrone. Ora apri il report e vedrai che il
codice si interrompe alla sub. Per proseguire passo passo premi F8 e segui
il codice.
Scusa queste spiegazioni banali.
Ciao, Carlo


___________
Figurati...per me non sono state molto banali :-(
Ho provato e l'errore me lo dava ritornando sulla maschera dove c'è il
pulsante
che mi apre il report proprio in questo punto:
Err_StpTotaliCodice_Click:
    'MsgBox err.Description
    Resume Exit_StpTotaliCodice_Click
ho disattivato il msgbox del form ed ora va bene.
come mai il codice ritorna al form in errore?
(con l'autocomposizione crea quelle righe, e su errore va in quel punto
e mi visualizzava il msgbox!)
comunque ho risolto disattivandolo.
grazie mille
Riccardo


Per capire bene come Access gestisce gli errori datti uno sguardo alla guida
alla voce Errori.... e seguenti.
Le autocomposizioni pulsanti o controlli inseriscono in automatico la
gestione degli errori.
Il primo gestore (On Error) che il codice incontra diventa il gestore
predefinito. Sono possibili altri gestori "Nidificati" successivi al primo
ma, alla fine, tornerà alle istruzioni del primo gestore.
Nella tua routine il pulsante apre il report, il gestore degli errori viene
avviato (quello del pulsante), il report prende il focus e con esso le
ruotine associate, il report viene chiuso, il focus o l'esecuzione del
codice ritorna al pulsante, all'istruzione successiva. Siccome nel codice
del pulsante c'è un gestore degli errori (On Error) e siccome l'oggetto Err
ha un valore, la routine continua con l'istruzione di valutazione
dell'errore.
Questa gestione è fondamentale per scrivere un buon programma...meditate
gente...meditate.
Ciao, Carlo

 wrote in message
y71l7.26548$MO.9...@news.infostrada.it...

quindi eliminando il msgbox, sbaglio e debbo utilizzare qualche altro
metodo,
oppure va bene così?
thank's Riccardo

 ha scritto nel messaggio
news:9n27gq$li6$1...@news.panservice.it...

In questo caso va bene eliminarlo.
Ciao, Carlo

 ha scritto:

Se apri il report con doppio click o simile basta OnError del report:
MsgBox "Il report contiene nulla.", _
vbInformation + vbOKOnly, "Vuoto"
Cancel = True
Se apri il report da un form debbe gestire l'errore 2501. Come
On Error GoTo ErrVuoto
DoCmd.OpenReport "TuoReport"
ErrVuoto:
If Err = 2501 Then Resume Next  'o Exit Sub ecc.
--
HTH
Karl
*********
Access-FAQ (tedesco): 
http://www.donkarl.com

 ha scritto:

Se apri il report con doppio click o simile basta OnNoData del report:


 wrote in message
9n2ems$4osph$1...@ID-46617.news.dfncis.de...

grazie
Riccardo