Newsgroup: it.comp.appl.access
Titolo: if Me.RecordsetClone.RecordCount=0 in apertura form va a vuoto

Buongiorno, la condizione in oggetto non mi viene soddisfatta se apro la
form la prima volta, la seconda si; andando per ordine, ho maschera1 con una
"casella di riepilogo" da dove seleziono una parola da passare col seguente
codice sull'evento click, per consentire l'apertura di maschera2 e mostrare
i dettagli dell'intero record se esistente nella tabella:
Private Sub fonti_collegate_Click()
On Error GoTo Err_fonti_collegate_Click
    Dim stDocName As String
    Dim stLinkCriteria As String
 
    stDocName = "maschera2"
 
    stLinkCriteria = "[fonterel]=" & "'" & Me![fonte] & "'"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_fonti_collegate_Click:
    Exit Sub
Err_fonti_collegate_Click:
    MsgBox Err.Description
    Resume Exit_fonti_collegate_Click
 
End Sub
l'apertura della form maschera2 ha nel suo evento open, la condizione di
controllo di record non esistente tramite la condizione if seguente:
Private Sub Form_Open(Cancel As Integer)
If Me.RecordsetClone.RecordCount = 0 Then
MsgBox "Nessuna fonte corrispondente", vbCritical, "Attenzione!!!!!!"
DoCmd.Close acForm, "maschera2", acSaveNo
Else
DoCmd.Maximize
CommandBars("Menu Bar").Enabled = False
End If
End Sub
il problema sorge se la maschera1 invoca maschera2 per la prima volta;
infatti la condizione if viene ignorata e la maschera si apre con i
controlli vuoti. Se chiudo maschera2 e clicco nuovamente il tasto che mi
permette l'apertura di maschera2, il controllo sul record va a buon fine e
il msg di errore funziona. Come mai accade questa cosa? Puo' essere un bug o
un errore che commetto senza accorgemene?
grazie mille
Franciros
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

    stDocName = "maschera2"
prova correggendo questo:
    stLinkCriteria = "[fonterel]='" & Me![fonte] & "'"
-- 
Ciao
Geppo 

 Geppo
no, niente da fare
grazie cmq
F


 accorgemene?
DoCmd.Close acForm, "maschera2", acSaveNo
normalmente dovrebbe funzionare.
Ma di solito invece di un Close nel Open si usa il parametro
Cancel del Form_Open, cioï¿œ
Cancel = True
e per evitare l'errore 2501 nella sub chiamante:
...
Err_fonti_collegate_Click:
    If Err.Number = 2501 Then
        Resume Exit_fonti_collegate_Click
    Else
        MsgBox Err.Description
        Resume Exit_fonti_collegate_Click
    End If
-- 
HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: 
http://www.donkarl.com
 


qui mi da l'errore: Errore di compilazione: etichetta non definita.
Cmq anche cosi facendo il problema rimane uguale.
grazie cmq
F



non pi�....risolto Errore di compilazione...avevo omesso la linea Exit...ops


 ha scritto nel messaggio 

Allora puo darsi che la casella di riepilogo restituisca un valore nullo.
metti un punto di interruzione qui:
stLinkCriteria = "[fonterel]='" & Me![fonte] & "'"
poi nella finestra immediata scrivi:
? me!fonte
 e dai invio
-- 
Ciao
Geppo 

 e dai invio
� sottointeso che la prova deve essere fatta la prima volta che apri 
maschera2 cio� quando  riscontri il problema.
-- 
Ciao
Geppo 

 e dai invio
...o semplicemente posiziona il cursore del mouse su Me![fonte] .
-- 
cu
Karl
*********
Access FAQ: 
www.donkarl.com/it


mi da quest'errore:
errore di compilazione: la variabile non � stata creata in questo contesto
ciao


 ...o semplicemente posiziona il cursore del mouse su Me![fonte] .
allora la variabile � piena, cio� il parametro passa pero' la maschera
continua ad essere vuota se il record non esiste


 ...o semplicemente posiziona il cursore del mouse su Me![fonte] .
anche, per� delle volte mi � capitato che posizionando il mouse sopra non mi 
ha restituisto la tooltips, per questo preferisco la finestra immediata.
-- 
Ciao
Geppo 

 errore di compilazione: la variabile non � stata creata in questo contesto
dopo aver messo il punto interruzione devi eseguire il codice in questione 
cliccando sul pulsante che apre maschera2, solo quando vieni spostato 
nell'editor vba e la riga si coloora di giallo devi effettuare 
quell'operazione nella finestra immediata.
ripeto l'operazione � da farsi la prima volta che apri maschera2 cio� quando 
riscontri il problema.
-- 
Ciao
Geppo
.


certo...provato e ho risposto un post pi� sotto
tks


.....anzi fai una cosak prova direttamente cosi ho aggiunto la funzione 
"NZ":
stLinkCriteria = "[fonterel]='" & nz(Me![fonte]) & "'"
in questo modo riscontri lo stesso problema?
-- 
Ciao
Geppo 


purtroppo si....mo do un po la testa sulla scrivania....arghhhhhh!!!
sempre grazie


 ho provato col debug e mi da sempre 0 nella finestra
?
Ci sono due varianti che dobbiamo chiarire per trovare e curare
il problema:
1. Il tuo Me.RecordsetClone.RecordCount non funziona, cioï¿œ non
dï¿œ il risultato giusto o aspettato.
2. Il codice nel If...Then...End If non funziona.
Allora metti un punto di interruzione sulla riga
If Me.RecordsetClone.RecordCount = 0 Then
Chiudi la maschera e esegua la tua procedura per aprirla con
un parametro dove sei sicuro che nella maschera2 esiste un record.
Se la riga con il punto di interruzione ï¿œ gialla fai cosa ha scritto geppo,
cioï¿œ controlla nella finestra debug cosa ti dï¿œ:
?Me.RecordsetClone.RecordCount
dopo premi sempre <F8> e guarda quale codice viene eseguito
e cosa succede.
Poi la stessa procedura con un parametro per il quale non esiste un
record nella maschera2.
-- 
HTH



allora...con lo stop funziona tutto alla perfezione; la finestra immediata
mi ritorna 0 se non c'� e 1 se c'� e l'esecuzione delle linee � fedele alla
condizione If. Tolto lo stop si � ripresentato il problema



riprovato in questo momento con un dato esistente e la finestra immediata mi
ritorna 7 e non 1 o 0; con F8 poi ho naotato che skippa l'istruzione di
errore.


 skippa l'istruzione di errore.
Ho fatto una prova ed il tuo codice per me funziona.
Forse hai un problema di tempo. Puo dipendere p.e. da dove
vengono i dati della maschera. Prova se funziona cos�:
Private Sub Form_Open(Cancel As Integer)
Dim rs As DAO.Recordset
Set rs = Me.RecordsetClone
If rs.BOF Then
    MsgBox "Nessuna fonte corrispondente", vbCritical, "Attenzione!!!!!!"
    Cancel = True
Else
    DoCmd.Maximize
    CommandBars("Menu Bar").Enabled = False
End If
rs.Close: Set rs = Nothing
End Sub


 sempre grazie
purtroppo io non riscontro il problema, cio� il tuo codice mi funziona 
benissimo per cui � un po' difficile capire cosa possa essere.
Comunque se non risolvi con il suggerimento di Karl, questo � il db di 
prova:
http://cid-963e2b34dfcce4e6.skydrive.live.com/self.aspx/Pubblica/prova.mdb
Vedi se riesci a capire cosa c'� che non va.
-- 
Ciao
Geppo


anche cosi rimane uguale
grazie


 il problema puo' essere qui?
potrebbe anche essere, ma � un po difficile aiutarti senza avere il db, se 
puoi mettilo on-line.
Altrimenti, fai delle prove  al fine di circostanziare il problema ad 
esempio prova il db eliminando qualche routine, controlla che tutte le 
variabili contengano i dati desiderati.....tutto questo lo puoi fare solo tu 
che hai il db.
-- 
Ciao
Geppo