Newsgroup: it.comp.appl.access
Titolo: Memorizzare l'ultimo ID usato

Questo era il mio codice VBA in evento di una finestra di dialogo che
chiede conferma dell'esecuzione di una certa query.
Se si rispondeva si veniva eseguito questo codice.
Dim stDocName  As String
stDocName = "SvuotaOrdine"
DoCmd.OpenQuery stDocName, acNormal, acEdit
DoCmd.Close 'chiude la finestra di dialogo
Però c'era un problema.
Se l'utente inizia a lavorare sul record 138 poi passa al 118 e poi
p.es
. si sposta al 152, e quando lavora al 152 esegue questo codice,
dopo l'esecuzione la maschera torna a visualizzare il record 138, cioè
il primo che ha visualizzato quando è stata aperta.
Ho poi scoperto che questo comportamento era dovuto al codice VBA che
ho trovato in questo DB creato a paertire da un esempio di Access.
Ho però capito che per altri contesti questo codice è essenziale e non
lo posso bypassere.
Così ho deciso di fare in modo che dopo l'esecuzione di questa query
venga ricercato l'ID che era visualizzato al momento del lancio della
query.
Ho provato con:
Dim stDocName  As String
Dim ultimo As Variant
ultimo = Forms!Ordini!IDOrdine
stDocName = "SvuotaOrdine"
DoCmd.OpenQuery stDocName, acNormal, acEdit
DoCmd.Close 'chiude la finestra di dialogo
'ora c'è la maschera ordini
DoCmd.GoToRecord acDataForm, "Ordini", acGoTo, ultimo
Però l'argomento 4 non gli sta bene.
Non sono riuscito a capire se 
ultimo = Forms!Ordini!IDOrdine
faccia il suo dovere, poiché inserendo 
debug.print ultimo
(per vedere cosa avesse memorizzato) non produce nessun risultato a
schermo, ma forse qui è colpa mia, visto che è la prima volta che uso
print
Che cosa posso usare per "ultimo" e fargli memorizzare l'Id in uso
prima di eseguire la query e poi visualizzare o quell'ID dopo la
query?
Grazie a tutti

 ultimo = Forms!Ordini!IDOrdine




Se non sbaglio in questo caso "ultimo" sta ad indicare il numero record
che compare nella finestra della maschera. Dovresti controllare se
coincide IdOrdine con il numero record.
rgrds
SC 
<cut>
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio
news:b95movgr81dq9769k...@4ax.com...

Invece di usare il metodo GoToRecord usa il metodo FindRecord.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

coincide IdOrdine con il numero record.
come detto ci ho provato tramite
debug.print ultimo
e mi attendevo una finestrella col valore di ultimo.
perň non č successo niente.
come posso verificare il valore di ultimo? come lo "stampo a schermo"
per fare una verifica?
grazie


debug.print produce l'output nella "finestra immediata" che visualizzi con
Ctrl+g,
se vuoi visualizzare una finestra che blocchi l'esecuzione mostrando il
valore devi usare MsgBox
Ciao.

valore devi usare MsgBox
Si ma io conosco solo MsgBox "Prompt"
dove prompt è una stringa.
A dire il vero ci avevo pensato. forse sono stato troppo pessimista a
non provare neanche ... ora lo faccio ...

Lo odio!
ho messo 
MsgBox ultimo
ed è uscito un bel 156 che era proprio giusto
e con 
Debug.Print ultimo
nella finestrella che è comparsa con CTRL+G lo stesso ho avuto un bel
156 che era giusto.
ora almeno so che l'assegnazione e la valorizzazione sono corretti.
proverò FindRecord ...

proverň FindRecord ...
fatto!
cosě funziona. 
grazie a tutti per l'aiuto!