Newsgroup: it.comp.appl.access
Titolo: Problema con messaggio di errore personalizzato

Salve,
In una maschera ho il controllo Acconto. Nel report che ha come origine
la stessa della maschera, ho digitato il seguente codice:
Private Sub Corpo_Format(Cancel As Integer, FormatCount As Integer)
On Error GoTo Err_Corpo_Format
 If Me!Acconto > 1 Then
  Me!Imponibile_Etichetta.Visible = True
  Me!Imponibile.Visible = True
  Me!DescrAcconto.Visible = True
  Me!Acconto.Visible = True
  Me!TotaleImponibile_Etichetta.Visible = False
  Me!TotaleImponibileAcconto_Etichetta.Visible = True
 End If
Exit_Corpo_Format:
 Exit Sub
Err_Corpo_Format:
 If Err.Number = 2427 Then
  Dim retValue As Integer
  Dim strTtl As String
  Dim strMsg As String
  strTtl = "Campo acconto vuoto"
  strMsg = "E' necessario riempire il campo Acconto per proseguire"
  retValue = MsgBox(strMsg, vbOK, strTtl)
 End If
 Resume Exit_Corpo_Format
End Sub
Ho dovuto personalizzare il messaggio di errore, perché se nella
maschera il valore dell'acconto è null, mi usciva un messaggio errore
run-time di difficile comprensione per chi dovrà usare il db.
Il problema è che, quando premo "OK", il report si apre comunque,
completamente vuoto.
E' possibile disabilitare l'apertura del report quando premo ok? (per
intenderci, quando compariva l'errore runtime, bastava cliccare su
"Fine" e si rimaneva sul record corrente della maschera). Ho provato
anche ad usare ad usare VBAbort, ma quando clicco su "Interrompi", il
report si apre lo stesso.
La cosa paradossale è che non posso usare nemmeno "DoCmd.Close", in
quanto il report, quando compare il mio messaggio, ancora non è
aperto.
Grazie delle eventuali risposte.


Scusate, ho dimenticato di dire che il messaggio di errore run-time
compariva quando cliccavo sul pulsante Anteprima.

robb ha scritto:

io cercherei di eliminare alla base l'errore utilizzando NZ in questo
modo:
If nz(Me!Acconto) > 1 Then
......
la msgbox con il tuo messaggio personalizzato potresti metterlo nella
condizione ELSE
ciao

wlady ha scritto:

Avevo già provato con Nz, ma non va. Mi dà un altro errore run-time
sempre perché non trova il valore. Comunque, a me servirebbe una
specie di pulsante "Annulla", che se premuto blocchi l'apertura del
report.

 ha scritto nel messaggio 
news:1150707753.0...@p79g2000cwp.googlegroups.com...
Avevo già provato con Nz, ma non va. Mi dà un altro errore run-time
sempre perché non trova il valore. Comunque, a me servirebbe una
specie di pulsante "Annulla", che se premuto blocchi l'apertura del
report.
[risposta]
(nota) Cerchiamo di tagliare il testo in eccedenza almeno ci si risparmia 
"tutto il viaggio" con la barra verticale.
Ma che li fai a fare i controlli nel report se poi lo devi chiudere per 
mancanza (o errore nei) di dati?
Fallo prima di aprirlo. E poi; se "Acconto" è un controllo associato ad un 
campo numerico come fa a contenere valori nulli? Non dovresti permetterlo 
proprio per evitarti questa serie di controlli inutili.
Quindi ti suggerisco di sostituire il valore Null con zero e di fare la 
verifica (se acconto > 0) prima di aprire il report...
Ciao.
-- 
Sergio MAZZA 


Non so se hai letto il mio primo messaggio, ma quelli del report non
sono controlli. Semplicemente, a seconda del valore dell'acconto,
alcuni campi ed etichette spariscono e altri compaiono.
I controlli, come li intendi tu, prima di aprire il report, ci sono e
il valore predefinito dell'acconto è 0. L'errore run-time si verifica
solo quando il valore del campo acconto è null. Il problema è che, se
si crea un nuovo record nella maschera, nonostante i valori
predefiniti, tutti i campi sono null fino a che non viene digitato
qualsiasi valore in uno dei campi. Quindi, se si clicca su anteprima,
prima di aver inserito dei valori, compare quell'errore run-time. Io
volevo semplicemente sostituirlo con un mio messaggio. Ci sono
riuscito, ma alla fine il report si apre lo stesso. Quindi o lascio
l'errore run-time o consento che si stampi un report privo di dati, a
meno che qualcuno non mi dia una soluzione.
Visto che i click per l'anteprima e per la stampa sono impostati su
delle etichette, non posso nemmeno disabilitarle se alcuni valori sono
null, poiche le etichette non si possono disabilitare. Non posso usare
i pulsanti, in quanto dovrei rielaborare tutta l'impostazione grafica.
La verità è che usando MsgBox, in alcuni casi, è impossibile usare
il tasto "Annulla", visto che, nonostante VbNo sia impostato a Cancel =
True, fa comunque continuare il comando dato dal pulsante, nel mio caso
l'apertura o la stampa del report.
Spero di essere stato sufficientemente chiaro.
ps
scusa per il mancato cut, ma usando google, non me ne ero proprio
accorto visto che automaticamente comprime il testo del quoting.

 ha scritto nel messaggio news:1150723730....@r2g2000cwb.googlegroups.com...
Non so se hai letto il mio primo messaggio, ma quelli del report non
sono controlli. Semplicemente, a seconda del valore dell'acconto,
alcuni campi ed etichette spariscono e altri compaiono.
I controlli, come li intendi tu, prima di aprire il report, ci sono e
il valore predefinito dell'acconto è 0. L'errore run-time si verifica
solo quando il valore del campo acconto è null. Il problema è che, se
si crea un nuovo record nella maschera, nonostante i valori
predefiniti, tutti i campi sono null fino a che non viene digitato
qualsiasi valore in uno dei campi. Quindi, se si clicca su anteprima,
prima di aver inserito dei valori, compare quell'errore run-time. Io
volevo semplicemente sostituirlo con un mio messaggio. Ci sono
riuscito, ma alla fine il report si apre lo stesso. Quindi o lascio
l'errore run-time o consento che si stampi un report privo di dati, a
meno che qualcuno non mi dia una soluzione.
Visto che i click per l'anteprima e per la stampa sono impostati su
delle etichette, non posso nemmeno disabilitarle se alcuni valori sono
null, poiche le etichette non si possono disabilitare. Non posso usare
i pulsanti, in quanto dovrei rielaborare tutta l'impostazione grafica.
La verità è che usando MsgBox, in alcuni casi, è impossibile usare
il tasto "Annulla", visto che, nonostante VbNo sia impostato a Cancel =
True, fa comunque continuare il comando dato dal pulsante, nel mio caso
l'apertura o la stampa del report.
Spero di essere stato sufficientemente chiaro.
[risposta]
Ora sì; quello che ti serve è effettuare un refresh dei dati ancora da salvare (proprietà Dirty della form) prima dell'apertura del 
report:
es.
If Me.Dirty Then
    Me.Refresh
end if
...apri il report...
Ciao.
ps
scusa per il mancato cut, ma usando google, non me ne ero proprio
accorto visto che automaticamente comprime il testo del quoting.
[risposta]
Utilizza un programma adatto, tipo Outlook Express. 

 Utilizza un programma adatto, tipo Outlook Express.
Ho risolto. Nell'evento NoData del report ho scritto Cancel = True, e
nell'evento click dei pulsanti della maschera ho intercettato gli
errori run-time mettendo un mio msgbox. L'unico pulsante di cui non
riesco ad intercettare l'errore è il pulsante di conversione a pdf,
che utilizza una funzione presa dal sito Lebans. Qui ancora mi scrive
"L'azione RunCommand è stata annullata". Per il resto, tutto ok.