MICROSOFT ACCESS: Recuperare l'ultimo ID inserito.

mercoledì 06 gennaio 2010 - 17.36

86Marco Profilo | Expert

Salve,
per la mia applicazione che sto sviluppando con access e che distribuirò al cliente con Access Developer Extension ho bisogno di recuperare il campo contatore di un record che viene inserito a seguito di una query di accodamento.

Vi spiego meglio.
Ho una maschera che mi deve consentire di aggiungere una serie di dati.
Tramite un pulsante "registra" vorrei che la query accodasse tutto ciò che inserisco dentro la maschera in un'altra tabella.

Il tutto mi funziona correttamente, l'unica cosa che vorrei capire è come poter recuperare anche a schermo e stamparla in una MessageBox con VBA il valore del campo contatore che è stato assegnato a quel record.
E' possibile??
VI prego è estremamente importante e urgente :)
Grazie

alx_81 Profilo | Guru

>Salve,
Ciao

>per la mia applicazione che sto sviluppando con access e che
>distribuirò al cliente con Access Developer Extension ho bisogno
>di recuperare il campo contatore di un record che viene inserito
>a seguito di una query di accodamento.
>Il tutto mi funziona correttamente, l'unica cosa che vorrei capire
>è come poter recuperare anche a schermo e stamparla in una MessageBox
>con VBA il valore del campo contatore che è stato assegnato a
>quel record.
>E' possibile??
leggi qui e facci sapere
http://community.visual-basic.it/lucianob/articles/16622.aspx

>Grazie
di nulla!
--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

86Marco Profilo | Expert

Si ma mi chiedevo come poter programmare il tutto cn vba!! mi viene difficile!!

alx_81 Profilo | Guru

>Si ma mi chiedevo come poter programmare il tutto cn vba!! mi viene difficile!!
Guarda che nel link c'è l'esempio con ADO e vba.. Tu come vorresti poterlo fare?

--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

86Marco Profilo | Expert

Ciao.
allora perdonami ma non sono molto ferrato con il linguaggio Visual Basic per la compilazione di un progetto VBA.

Nella mia maschera ho un pulsante che sull'evento clic ha questo codice:

On Error GoTo Macro1_Err

DoCmd.OpenQuery "Query1", acViewNormal, acEdit


Macro1_Exit:
Exit Sub

Macro1_Err:
MsgBox Error$
Resume Macro1_Exit

In particolare (come saprai meglio di me) questo codice apro la macro "Query1" che accoderà i campi che sono stati strutturati nella struttura della query.

Ma se volessi aggiungere del codice a quello precedente come potrei fare per poter scrivere una piccola procedura affinchè subito dopo l'esecuzione della query1, mi venga restituito il campo contatore del record appena inserito.

Ti prego cerca di aiutarmi secondo le conosceze che c'ho :).
Grazie

86Marco Profilo | Expert

Nessuno sa aiutarmi???

alx_81 Profilo | Guru

>Nessuno sa aiutarmi???
fai un'altra query che ti torna il MAX(ID) e lanciala con DoCmd.OpenQuery, così torni l'ultimo ID inserito.
Però poi fai attenzione che se qualcuno ha inserito ancora record dopo che hai letto l'ultimo, quello che hai non è più valido, sarebbe opportuno un controllo pre inserimento sotto la stessa transazione.
--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

86Marco Profilo | Expert

Infatti, questo lo avevo pensato, ma come mi confermi tu è possibile che qualcun altro utente abbia inserito un altro record e che quindi mi viene restituto quello. Come ovviare ????? :(

alx_81 Profilo | Guru

>Infatti, questo lo avevo pensato, ma come mi confermi tu è possibile
>che qualcun altro utente abbia inserito un altro record e che
>quindi mi viene restituto quello. Come ovviare ????? :(
usare un campo contatore?

--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

86Marco Profilo | Expert

Alex perdonami ma sono un tantino confuso.

Ho una maschera che tramite un pulsante deve accodare tutto ad una tabella.
Al record che viene accodato viene associato un campo contatore.
A me serve avere restiuito il numero (contatore) che è stato associato al record appena accodato!!!

alx_81 Profilo | Guru

>Ho una maschera che tramite un pulsante deve accodare tutto ad
>una tabella.
>Al record che viene accodato viene associato un campo contatore.
>A me serve avere restiuito il numero (contatore) che è stato
>associato al record appena accodato!!!
Torno a ripetere. Con VBA e il link che ti ho postato sei tranquillo. @@Identity torna l'ultimo contatore.


--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

86Marco Profilo | Expert

Ti ringrazio veramente tanro per la disponibilità.
Anche se il mio problema è quello che nn riesco a implementare la procedura in codice.

alx_81 Profilo | Guru

>Ti ringrazio veramente tanro per la disponibilità.
>Anche se il mio problema è quello che nn riesco a implementare
>la procedura in codice.
nel click del pulsante, invece che fare tutto quel codice che hai messo, copia ed incolla quello del link adattandolo ai tuoi oggetti. Poi vai in debug e controlla cosa succede.

--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

86Marco Profilo | Expert

ci proverò e ti farò sapere.
Davvero un ENORME grazie Alessandro

alx_81 Profilo | Guru

>ci proverò e ti farò sapere.
>Davvero un ENORME grazie Alessandro
dai che piano piano arriviamo. Purtroppo non ho access installato..

--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

86Marco Profilo | Expert

Dovrò sfirniciarmi ancora un po considerato che l'Access che ho io è la versione 2007 non la 2003 :)

alx_81 Profilo | Guru

>Dovrò sfirniciarmi ancora un po considerato che l'Access che
>ho io è la versione 2007 non la 2003 :)
Una cosa che mi ero dimenticato. Aggiungi i riferimenti a Microsoft ActiveX Data Objects 6.0 library.
Altrimenti non puoi usare ADODB per connetterti al database ed usare gli oggetti di ADO.
Si fa dal menu Tools-->References..
--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

86Marco Profilo | Expert

sisi, magari quello lo sapevo.
:)
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5