Newsgroup: it.comp.appl.access
Titolo: Msg Box errore che esce ...come mai ??

Ciao amici in questo codice... all'apertura della maschera.. quando digito
un cognome ESATTO nella casella prima di darmelo, nella maschera mi esce la
MSGBOX di errore...mentre ripremendo Invio mi dà il cognome selezionato...
ho provato a farlo AfterUpdate ma il problema è lo stesso....
---------------------
Private Sub Cerca1_BeforeUpdate(Cancel As Integer)
If Me.RecordsetClone.RecordCount = 0 Then
x = MsgBox("Il Cognome_Nome cercato non esiste!", _
vbCritical + vbOKOnly, "Attenzione")
End If
'Me.Requery
End Sub
--------------------
cosa vi è di sbagliato ???
Grazie...

 ho provato a farlo AfterUpdate ma il problema è lo stesso....
Forse dovresti circostanziare meglio la domanda.
Sib

 ha scritto nel messaggio
news:9nkuqo$pef$1...@serv1.iunet.it...

------------------------
Ok... ci proverò.... allora ... ho una maschera x ricerca di dati...
quando in una casella digito un Cognome x la ricerca e premo Invio... mi
esce
la Text Box di errore che non trova l'utente selezionato... mentre
ripremendo
Invio mi da l'utente inserito esatto...in sostanza... prima di fare una
ricerca
la query mi da sempre prima la Text Box di errore... come mai ???
spero di essermi spiegato bene....
Ciao...

 la query mi da sempre prima la Text Box di errore... come mai ???
Prova a postare il codice.
E prova anche a cercare sul sito comune che c'e' un esempio di controllo di
ricerca particolare.
Sib

 ha scritto nel messaggio
news:9nnkjl$gds$1...@serv1.iunet.it...

--------------------------------------
Ok... ma scusa... Sib... la maschera mi funziona perfettamente...riguardo le
varie
ricerche... il solo problema è che da quando ho voluto mettere delle Msg Box
di
avviso... x i quattro controlli di ricerca non ci ho capito + niente... Cmq
ecco
il codice relativo ad una delle caselle di testo non associate ove digito il
Cognome
x la ricerca.....
----------------------------------------------------------------
Private Sub Cerca1_AfterUpdate()
x = MsgBox("Il Cognome_Nome cercato non esiste!", _
vbCritical + vbOKOnly, "Attenzione")
Me.Requery
End Sub
------------------------------------------------------------------

 ------------------------------------------------------------------
Secondo te cosa dovrebbe fare questo codice? A parte presentare la message
box e fare il requery della form.
Sib

 ha scritto nel messaggio
news:9nqlpj$beg$1...@serv1.iunet.it...

-----------------
scusa Sib.... forse mi sono espresso male....questo codice mi presenta la
message
box...però anche quando digito un utente presente nel DB...è questo non è
corretto.
...mi spiego meglio.... nella casella inserisco Pinco Pallino... che è
presente certamente
nel DB... premo Invio .. e mi esce la text box di errore.....
ripremendo di nuovo Invio mi escono i dati sulla Maschera....
questo procedimento ti sembra corretto ????
--
SuperPippo®   [;o))

 corretto.
CUT
Forse mi sono spiegato male io.
Con questo codice, quando inserisci un nome, ti viene presentata
incondizionatamente la msgbox, indipendentemente dal fatto che il record ci
sia o non ci sia.
Sib

 ha scritto nel messaggio
| > | > ----------------------------------------------------------------
| > | > Private Sub Cerca1_AfterUpdate()
| > | > x = MsgBox("Il Cognome_Nome cercato non esiste!", _
| > | > vbCritical + vbOKOnly, "Attenzione")
| > | > Me.Requery
| > | > End Sub
| > | > ------------------------------------------------------------------
| Forse mi sono spiegato male io.
| Con questo codice, quando inserisci un nome, ti viene presentata
| incondizionatamente la msgbox, indipendentemente dal fatto che il record
ci
| sia o non ci sia.
| Sib
-----------------------------
porcaccia... allora ci siamo capiti entrambi male....
Cmq..... come si può modificare il codice su presente affinchè ....
solo se non trova un certo utente mi deve uscire la MSG Box...???
Ciao e grazie x la pazienza....
--
SuperPippo®   [;o))

 solo se non trova un certo utente mi deve uscire la MSG Box...???
Prima cercalo (ad es con il findnext o findfirst) e poi controlla il valore
di .Nomatch del recordset, se e' true allora non l'ha trovato e presenti il
msgbox
Sib
--
----------------------------------------------------
la mia home:
http://digilander.iol.it/syb
----------------------------------------------------
il sito comune di it.comp.database.access:
http://www.sitocomune.com
----------------------------------------------------
4000 anni fa', il saggio egizio Ptahhotep scrisse:
"... perche' non esistono saggi per nascita."
------------------------------------------------------
Saturiamo ECHELON:
bomba saddam attentato medio oriente

 ------------------------------------------------------------------
|
| Spiritoso :-)
|
| > Cmq..... come si può modificare il codice su presente affinchè ....
| > solo se non trova un certo utente mi deve uscire la MSG Box...???
|
| Prima cercalo (ad es con il findnext o findfirst) e poi controlla il
valore
| di .Nomatch del recordset, se e' true allora non l'ha trovato e presenti
il
| msgbox
|
| Sib
-----------------------
???? scusa Sib... non ero affatto spiritoso... la mia era una battuta
sincera....
Cmq...sempre che non ti dispiaccia (non faccio lo spiritoso) siccome sono a
digiuno
di Access... mi puoi fare un esempio (pratico) riguardo il tuo suggerimento
???
oppure spiegarmi in dettaglio dove e come agire ???
Ti ringrazio... e colgo l'occasione x augurarti Buona Domenica...Ciao !!

 ha scritto nel messaggio
news:xPmn7.30830$ul3.1...@news.infostrada.it...

A mio avviso dovresti prima fare il Requery e poi il test se il recordset è
vuoto; insomma io scriverei:
Private Sub Cerca1_BeforeUpdate(Cancel As Integer)
Me.Requery
If Me.RecordsetClone.RecordCount = 0 Then
x = MsgBox("Il Cognome_Nome cercato non esiste!", _
vbCritical + vbOKOnly, "Attenzione")
End If
End Sub
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

Guarda che ho perso il filo.
Il codice che hai postato la seconda volta era diverso da quello che hai
postato nel primo messaggio.
Inoltre non avevo capito bene cio' che intendevi ottenere.
Forse lo ha capito meglio Roberto che ha intuito che tu andavi proprio a
modificare la query su cui la form e' basata.
Sib

 ha scritto nel messaggio
news:ZEPo7.72293$ul3.2...@news.infostrada.it...
| A mio avviso dovresti prima fare il Requery e poi il test se il recordset
è
| vuoto; insomma io scriverei:
|
| Private Sub Cerca1_BeforeUpdate(Cancel As Integer)
| Me.Requery
| If Me.RecordsetClone.RecordCount = 0 Then
| x = MsgBox("Il Cognome_Nome cercato non esiste!", _
| vbCritical + vbOKOnly, "Attenzione")
| End If
| End Sub
------------------
| Roberto
---------------------------
Ciao Roberto... anzitutto grazie x l'aiuto...la maschera di ricerca in
questione
è stata un tuo suggerimento di alcuni mesi fà...ma probabilmente non ricordi
con tutti gli aiuti e consigli che dai agli amici di NG....
la maschera funziona egregiamente...ma sai come è ... ogni tanto viene la
voglia
di perfezionare un pò il lavoro.. appunto facendo uscire una Msg Box se
l'utente
cercato nel DB non esiste....
ho provato, in vari modi, anche la tua soluzione... ma mi genera errore di
Runtime
"2115"... etc....
credo che ci sia qualche altro problema all'interno del codice.. x questo ti
allego.....
anche se un pò lunghetto tutto il codice della Maschera (senza problemi) in
questione..
-----------------------------------------------
-----------------------------------------------
Option Compare Database
Private Sub Testo54_BeforeUpdate(Cancel As Integer)
End Sub
--------------------
Private Sub Comando61_Click()
On Error GoTo Err_Comando61_Click
    Dim stDocName As String
    stDocName = "Ricerca Cognome_Nome"
    DoCmd.OpenQuery stDocName, acNormal, acEdit
Exit_Comando61_Click:
    Exit Sub
Err_Comando61_Click:
    MsgBox Err.Description
    Resume Exit_Comando61_Click
    End Sub
---------------------------
Private Sub Comando62_Click()
On Error GoTo Err_Comando62_Click
    Dim stDocName As String
    stDocName = "Ricerca Codice Regionale"
    DoCmd.OpenQuery stDocName, acNormal, acEdit
Exit_Comando62_Click:
    Exit Sub
Err_Comando62_Click:
    MsgBox Err.Description
    Resume Exit_Comando62_Click
    End Sub
------------------------------
    Private Sub Comando63_Click()
On Error GoTo Err_Comando63_Click
    Dim stDocName As String
    stDocName = "Ricerca Anno Nascita"
    DoCmd.OpenQuery stDocName, acNormal, acEdit
Exit_Comando63_Click:
    Exit Sub
Err_Comando63_Click:
    MsgBox Err.Description
    Resume Exit_Comando63_Click
    End Sub
    ----------------------------------
    Private Sub Comando64_Click()
On Error GoTo Err_Comando64_Click
    Dim stDocName As String
    stDocName = "Ricerca Protocollo"
    DoCmd.OpenQuery stDocName, acNormal, acEdit
Exit_Comando64_Click:
    Exit Sub
Err_Comando64_Click:
    MsgBox Err.Description
    Resume Exit_Comando64_Click
    End Sub
     ----------------------------------------
Private Sub Comando65_Click()
On Error GoTo Err_Comando65_Click
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, 2, , acMenuVer70
Exit_Comando65_Click:
    Exit Sub
Err_Comando65_Click:
    MsgBox Err.Description
    Resume Exit_Comando65_Click
    End Sub
---------------------------------------
    Private Sub Comando66_Click()
On Error GoTo Err_Comando66_Click
    Dim stDocName As String
    stDocName = "Ricerca Cognome_Nome"
    DoCmd.OpenQuery stDocName, acNormal, acEdit
Exit_Comando66_Click:
    Exit Sub
Err_Comando66_Click:
    MsgBox Err.Description
    Resume Exit_Comando66_Click
    End Sub
----------------------------------
    Private Sub Testo67_AfterUpdate()
Me.Requery
End Sub
----------------------
Private Sub Cerca_AfterUpdate()
End Sub
-----------------------
Private Sub Cerca1_AfterUpdate()
Me.Requery
End Sub
----------------------------
Private Sub Cerca2_AfterUpdate()
Me.Requery
End Sub
--------------------------------
Private Sub Cerca3_AfterUpdate()
Me.Requery
End Sub
------------------------------
Private Sub Cerca4_AfterUpdate()
Me.Requery
End Sub
-----------------------------
Private Sub Form_Current()
Cerca1.SetFocus
End Sub
------------------------------
Private Sub Form_Load()
Dim cbarmenu
Set cbarmenu = CommandBars("menu bar")
cbarmenu.Enabled = False
End Sub
-------------------------------
Private Sub Form_Open(Cancel As Integer)
DoCmd.Maximize
End Sub
--------------------------------
Private Sub Comando79_Click()
On Error GoTo Err_Comando79_Click
Dim FiltStr As String
Dim MyRep As Report
 If Me.FilterOn Then
      FiltStr = Me.Filter
      DoCmd.OpenReport "Rep1", acPreview, , FiltStr
Else
      DoCmd.OpenReport "Rep1", acPreview
End If
Exit_BPriRep_Click:
    Set MyRep = Nothing
    Exit Sub
Err_BPriRep_Click:
    MsgBox Err.Description
    Resume Exit_BPriRep_Click
    DoCmd.PrintOut
Exit_Comando79_Click:
    Exit Sub
Err_Comando79_Click:
    MsgBox Err.Description
    Resume Exit_Comando79_Click
  End Sub
-----------------------------

 ha scritto nel messaggio
news:OT0p7.75515$ul3.2...@news.infostrada.it...

[CUT]
Ho riletto attentamente il codice VBA di cui i messaggi precedenti. Non
avevo notato che lo avevi generato a fronte dell'evento "Prima di
aggiornare" del controllo Cerca1; non puoi usare Me.Requery a fronte di tale
evento: è per questo che Access ti dà l'errore di runtime 2115.
Di contro non ha significato effettuare quel tipo di If se non dopo aver
effettuato un requery della maschera.
Infine dovresti aver avuto anche un errore di compilazione, visto che la
variabile x non è stata precedentemente dichiarata.
Puoi effettuare la verifica che ti interessa nell'evento "Prima di
aggiornare" del controllo Cerca1 tramite una funzione DLookup; tale
funzione, che avrà come dominio l'origine record della maschera, deve essere
scritta in maniera tale che restituisca un valore Null nel caso in cui
l'utente cercato non esista nel recordset.
Se l'esito della richiesta dovvesse dare esito negativo, a mio avviso, oltre
al messaggio, dovresti anche annullare l'evento aggiornamento con Cancel =
True e Me!Cerca1.Undo e quindi spostare il fuoco su tale controllo con
Me!Cerca1.SetFocus.


 ha scritto nel messaggio
| news:OT0p7.75515$ul3.2...@news.infostrada.it...
| [CUT]
|
| Ho riletto attentamente il codice VBA di cui i messaggi precedenti. Non
| avevo notato che lo avevi generato a fronte dell'evento "Prima di
| aggiornare" del controllo Cerca1; non puoi usare Me.Requery a fronte di
tale
| evento: è per questo che Access ti dà l'errore di runtime 2115.
| Di contro non ha significato effettuare quel tipo di If se non dopo aver
| effettuato un requery della maschera.
| Infine dovresti aver avuto anche un errore di compilazione, visto che la
| variabile x non è stata precedentemente dichiarata.
|
| Puoi effettuare la verifica che ti interessa nell'evento "Prima di
| aggiornare" del controllo Cerca1 tramite una funzione DLookup; tale
| funzione, che avrà come dominio l'origine record della maschera, deve
essere
| scritta in maniera tale che restituisca un valore Null nel caso in cui
| l'utente cercato non esista nel recordset.
| Se l'esito della richiesta dovvesse dare esito negativo, a mio avviso,
oltre
| al messaggio, dovresti anche annullare l'evento aggiornamento con Cancel =
| True e Me!Cerca1.Undo e quindi spostare il fuoco su tale controllo con
| Me!Cerca1.SetFocus.
| Roberto
| ---------------------------------------------
beh...grazie Roberto x l'aiuto... x caso potresti farmi un esempio "pratico"
su questa funzione "DLookup" sul controllo Cerca 1... in maniera poi da
applicarlo anche agli altri controlli.....etc. etc. ???
se per caso risultasse lungo e complicato inserire una Msg Box di errore al
codice
che ti ho dato... considera questa mia richiesta nulla....
Ciao !!!
--
SuperPippo®   [;o))

 SuperPippo®   [;o))
Forse c'è una soluzione più facile di quella che ti ho proposto ieri, ed è
quella di effettuare la verifica dell'esistenza dell'utente a fronte
dell'evento "Dopo aggiornamento" del controllo Cerca1, senza generare alcun
codice a fronte dell'evento "Prima di aggiornare" di tale casella di testo
non associata.
A fronte dell'evento "Dopo agiornamento" del controllo Cerca1 prova a
sostituire l'attuale codice VBA con il seguente:
Private Sub Cerca1_AfterUpdate()
Me.Requery
Dim x As String
If Me.RecordsetClone.RecordCount = 0 Then
x = MsgBox("Il Cognome_Nome " & Me!Cerca1 & _
" cercato non esiste!", _
vbCritical + vbOKOnly, "Attenzione")
Me!Cerca1 = ""
Me!Cerca1.SetFocus
End If
End Sub
Anche l'altra mia soluzione avrebbe funzionato, ma questa, per come tu avevi
impostato le cose, mi sembra più intuitiva.


 ha scritto nel messaggio
| news:j0lp7.82743$ul3.2...@news.infostrada.it...
| [CUT]
|

sono certo che l'atra soluzione avrebbe funzionato....come funziona anche
questa alla grande...grazie Roberto come sempre....
ora applicherò questo codice anche agli controlli....
di nuovo grazie Roberto x la tua gentilezza e disponibilità ... CIAO  !!!
--
SuperPippo®   [;o))