Evento report vuoto

di bruma il
14 risposte

Ciao a tutti

impostando all'evento

Private Sub Report_NoData(Cancel As Integer)
   msgbox “Non ci sono dati”
   Cancel = True
End Sub

il codice VBA va in errore con “l'azione di apertura è stata annullata” alla riga di codice 

        DoCmd.OpenReport nomereport, acViewPreview

ho risolto con uno stupido on error resume next, ma mi pare che ho tappato un buco ma non ho capito la logica…

Mi potete aiutare a capire?

Grazie

14 Risposte

  • 17/05/2024 - bruma ha scritto:


    ho risolto con uno stupido on error resume next, ma mi pare che ho tappato un buco ma non ho capito la logica…

    Nel tuo caso non la chiamerei gestione dell' errore. Come dire… ho messo la testa sotto la sabbia e va bene così. Hai provato a visualizzare il report senza vba?

  • In effetti quel report si basa su una qry che, in questo caso, non rende alcuna riga; se lo lancio da solo mostra lo stesso errore (se elimino il codice al report_nodata)

    So che avrei potuto testare il recordset vuoto dalla maschera che lancia il report, ma quella maschera lancia 9 report diversi (per ora, ma cresceranno) su recordset diversi, ed è già abbastanza incasinata…

    Grazie

  • 17/05/2024 - bruma ha scritto:


    In effetti quel report si basa su una qry che, in questo caso, non rende alcuna riga; se lo lancio da solo mostra lo stesso errore (se elimino il codice al report_nodata

    A questo punto non capisco il tuo stupore.

  • 17/05/2024 - bruma ha scritt

    So che avrei potuto testare il recordset vuoto dalla maschera che lancia il report, ma quella maschera lancia 9 report diversi (per ora, ma cresceranno) su recordset diversi, ed è già abbastanza incasinata…

    Grazie

    Lancia 9 report che significa?

  • Ha una serie di combo e bottoni per cui in una sola maschera ho centralizzato diversi tipi di report selezionando per mese, per azienda, per regione ecc.

  • Diversi tipi di report? Sono associati a query differenti o sempre la stessa query?

  • Apparte questo devi un po' aggiustare il tiro sui termini tecnici. Bottone???

  • Su qry tutte differenti 

    non ti piace “bottone”? meglio “pulsante”? sei un accademico della Crusca? ;-) allora ho sbagliato sito per fare le mie domande…

  • 17/05/2024 - bruma ha scritto:


    Su qry tutte differenti 

    non ti piace “bottone”? meglio “pulsante”? sei un accademico della Crusca? ;-) allora ho sbagliato sito per fare le mie domande…

    Visto che zip è usato per i file compressi… li chiamo alamari.

    17/05/2024 - bruma ha scritto:


    Ha una serie di combo e bottoni per cui in una sola maschera ho centralizzato diversi tipi di report selezionando per mese, per azienda, per regione ecc.

    Perdonami… questo sarebbe sempre lo stesso report ma filtrato a seconda dei criteri…

    Più report si intende formato tabellare o formato etichetta o formato scheda nel caso di anagrafica..

    Cioè, a prescindere dai filtri cambia il layout di stampa.

    Per più report si intende anche la fonte dati… cliente o fornitore ad esempio.

    Comunque, oltre la pessima idea di usare un form per filtrare la stampa (se ho una lista e lancio la stampa è perché ho già filtrato quello che cerco e voglio la stampa), sai prima di stampare se hai dati da stampare… se non hai clienti caricati quale utente stupido pigia l'alamaro (per non usare il bottone) per vedersi il messaggio “nessun dato da stampare”?

    Usa sempre il form che mostra i dati per la stampa.

    Magari se usi due finestre, una clienti e una fornitori e vuoi contemporaneamente le anteprime di stampa cosa fai? Prima filtri per pippo e contemporaneamente per pluto?

    Tornando alla questione del 3d, sai prima di lanciare la stampa se ci sono dati da stampare.

  • 17/05/2024 - bruma ha scritto:


    Su qry tutte differenti 

    Peggio! Hai n dataset da utilizzare con un solo controllo da associare a seconda della stampa? Mah!

    Spesso i clienti vogliono da 1 a 10 modelli di stampa… auguri!

  • 17/05/2024 - bruma ha scritto:


    Ciao a tutti

    impostando all'evento

    Private Sub Report_NoData(Cancel As Integer)
       msgbox “Non ci sono dati”
       Cancel = True
    End Sub
    

    il codice VBA va in errore con “l'azione di apertura è stata annullata” alla riga di codice 

            DoCmd.OpenReport nomereport, acViewPreview
    

    ho risolto con uno stupido on error resume next, ma mi pare che ho tappato un buco ma non ho capito la logica…

    Mi potete aiutare a capire?

    Grazie

    Meno male che restituisce l'errore…!!!!

    Nel Report:

    Private Sub Report_NoData(Cancel As Integer)
       msgbox “Non ci sono dati”
       Cancel = True
    End Sub
    Private Sub ButtonOpenReport_Click()
    	On Error GoTo ErrNoData
    	DoCmd.OpenReport nomereport, acViewPreview
    	Exit Sub
    ErrNoData:
    	If Err.Number = 2501 Then Resume Next 
    End Sub
  • 17/05/2024 - bruma ha scritto:


    Ciao a tutti

    impostando all'evento

    Private Sub Report_NoData(Cancel As Integer)
       msgbox “Non ci sono dati”
       Cancel = True
    End Sub
    

    il codice VBA va in errore con “l'azione di apertura è stata annullata” alla riga di codice 

            DoCmd.OpenReport nomereport, acViewPreview
    

    ho risolto con uno stupido on error resume next, ma mi pare che ho tappato un buco ma non ho capito la logica…

    Mi potete aiutare a capire?

    Grazie

    Oltre a quanto ti è già stato suggerito, per ovviare all’errore “2051” che molto probabilmente è quello che ti si presenta, dovresti verificare preventivamente se la query restituisce qualche record oppure no.

    Per fare questo nell’evento “TuoButton_Click” prima di tutto apri un Recordset basato sulla query in questione e verificane il “RecordCount”.

    Se il risultato è maggiore di zero lancia l’istruzione per l’apertura del report, il quale, a questo punto, non serve che contenga il codice relativo a “Report_NoData”.

    Se il risultato è uguale a zero attiva il MsgBox ed esci dalla “Sub”.

  • Perché ovviare all'errore che è ul metodo piu veloce e funzionale…?

    Aprire un RS o meglio usare DCOUNT eventualmente è una possibilità ma meno performante.

  • 18/05/2024 - ettore56 ha scritto:


    Per fare questo nell’evento “TuoButton_Click” prima di tutto apri un Recordset basato sulla query in questione e verificane il “RecordCount”.

    Ma soprattutto sono curioso di sapere cosa deve stampare..

    Se sono in anagrafica clienti/fornitori potrei stampare la lista clienti… non la fattura 12…. 

    Oppure crea un ddt e vuole sapere se il ddt da stampare esiste??? A questo punto mi concentrerei lato db non lato report…

    Mah! speriamo che almeno prima di inserire dati abbia effettuato la connessione al db e soprattutto che il db esista.

Devi accedere o registrarti per scrivere nel forum
14 risposte