Newsgroup: it.comp.appl.access
Titolo: Lo stesso record dopo un Requery

Ciao, per risolvere il problema del fuoco dopo un requery ho seguito la 
soluzione di Karl
http://www.donkarl.com/it?FAQ4.5
 e funziona solo che all'apertura della 
maschera
mi da questo errore:"Exception Nr 2427 nessun valore nell'espressione 
immessa" e va
avanti, poi dopo il requery mi da quest'altro errore: :"Exception Nr 13 Tipo 
non corrispondente".
Credo che l'errore si riferisca a questa istruzione: "lngStore = 
Me.Num_ricevuta"
perchè se non faccio eseguire "On Error GoTo myError" mi esce sempre 
l'errore 2427
e nel debug mi evidenzia proprio quella istruzione.
Grazie
 
 
 

 Grazie
 
Scusa ma perchè devi eseguire quel codice su LOAD...?
Secondo me hai strutturato male la chiamata alla Funzione di
ripristino, non deve essere eseguita su LOAD ovviamente.
 
@Alex

 Grazie
 
Scusa ma perchè devi eseguire quel codice su LOAD...?
Secondo me hai strutturato male la chiamata alla Funzione di
ripristino, non deve essere eseguita su LOAD ovviamente.
 
@Alex
 
No scusa, non è su caricamento,
il requery ed il seguente errore è dopo aggiornamento 
 
 

 il requery ed il seguente errore è dopo aggiornamento
 
L'esempio di Karl, che funziona correttamente, è opportuno venga
applicato alla Chiave Primaria... quel Num_Ricevuta è chiave
primaria...?
 
@Alex

 e nel debug mi evidenzia proprio quella istruzione.
 
Incolla il tuo codice compreso la dicchiarazione della procedura.
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
 
 

Private Sub Form_Activate()
'On Error GoTo Err_ActForm_Click
 
DoCmd.Restore
DoCmd.RunSQL "Delete ......
'Questa query azzera la tabella "PrimaNota"
 
DoCmd.RunSQL "INSERT INTO .....
' Questa query accoda nella tab."PrimaNota" i dati della tab. 
"Incasso_studenti"
 
DoCmd.RunSQL "INSERT INTO .....
' Questa query inserisce nella tab."PrimaNota" i dati della tab. "Pagamenti"
 
 
On Error GoTo myError
Dim lngStore As Long
 
lngStore = Me.Num_ricevuta
Me.Painting = False 'riduce lo sfarfallio dello schermo
Me.Requery
Me.RecordsetClone.FindFirst "Num_ricevuta = " & lngStore
Me.Bookmark = Me.RecordsetClone.Bookmark
myExit:
Me.Painting = True
Exit Sub
 
myError:
Select Case Err.Number
  Case 3159
    'Bookmark non valido
    Resume myExit
  Case Else
    MsgBox "Exception Nr. " & Err.Number & " " & Err.Description
    Resume myExit
End Select
 
'Exit_ActForm_Click:
'    Exit Sub
 
'Err_ActForm_Click:
'  '  MsgBox "ATTENZIONE!! Non risultano movimenti di cassa", vbInformation, 
"INFORMAZIONE"
'    Resume Exit_ActForm_Click
 
End Sub
 
Ciao Karl, grazie per aver risposto
questo è il codice che mi hai richiesto, la dichiarazione della
procedura, scusa l'ignoranza, ma non so cosa sia!!
Il requery come vedi, avviene su attivazione perchè ho
la possibilità da questa maschera di aprire un'altra
maschera per poter modificare ogni singola voce della
prima nota, ma ogni volta che riattivo la maschera PrimaNota
mi segnala quell'errore, non solo adesso ho notato
che pur eseguendo il requery non mi aggiorna i dati
modificati. (Speriamo che ci riesci a capire)
N.b. la tua stessa routine l'ho utilizzata in un'altro
programma e funziona benissimo.
Grazie 
 
 

 ...
 
Non sono sicuro. Un Requery in Form_Activate mi sembra strano.
Se hai una seconda maschera che cambia i dati della prima,
sarebbe molto meglio di eseguire il Requery in un evento adeguato
della seconda maschera. P.e. dopo aggiornamento o su chiusura,
dipende cosa succede e cosa si vede quando.


 ha scritto nel messaggio 
news:9gqis0...@mid.individual.net...

può sembrare strano, ma se elimino la routine, il requery
su Form_Activate lo esegue correttamente. 
 
 

 ha scritto nel messaggio 
news:9gqis0...@mid.individual.net...

inoltre anche nell'altro programma di cui ti parlavo dove
la routine funziona correttamente, il requery avviene su
attivazione della form. 
 
 

Ciao Karl ho quasi risolto!!!
il problema � dovuto al numero contenuto in "Num_ricevuta"
che � composto da 4 cifre + / + due cifre dell'anno corrente
(es. 1450/11)
ho parzialmente risolto in questo modo:
lngStore = Left(Me!Num_ricevuta, 4)
Me.Requery
Me.RecordsetClone.FindFirst "Left(Num_ricevuta, 4) = " & lngStore
Me.Bookmark = Me.RecordsetClone.Bookmark
 
In questo modo funziona bene, per� come posso fare per
fargli leggere anche le 2 cifre dell'anno perch� pu� capitare
che ci siano due numeri uguali con anno diverso (es. 1450/10 e 1450/11)
Grazie
 
 
 

 1450/11)
 
In genere sarebbe meglio di usare un campo di tipo Long
(di solito Contatore) come chiave primaria della tabella
e per questa operazione.
Se assolutamente vuoi usare questo sistema con una
stringa composta, puoi provarlo cosě:
 
Dim strStore As String
strStore = Me!Num_ricevuta
Me.Requery
Me.Recordset.FindFirst "Num_ricevuta = '" & strStore & "'"
