Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Prelevare ID contatore da inserimento
sabato 28 gennaio 2012 - 19.49
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
C#
|
Windows XP
|
Visual Studio 2008
|
Access (.mdb)
paolo973
Profilo
| Senior Member
302
messaggi | Data Invio:
sab 28 gen 2012 - 19:49
ho una tabella tra i campi ho un campo contatore che funziona da chiave primaria.
devo inserire un record e subito dopo prendere l'ID del record inserito ed insieme ad altre informazioni inserirlo in un'altra tabella.
come fare?
quando inserisco un record in una tabella come prelevare l'ID che è di tipo contatore, potrebbe non essere l'ultimo inserito.
zseven
Profilo
| Senior Member
494
messaggi | Data Invio:
sab 28 gen 2012 - 19:54
Ciao Paolo973,
io di solito subito dopo l'operazione di inserimento faccio una select con TOP 1 ORDER BY ID DESC.
Se la fai immediatamente dopo la insert dovresti avere la certezza di prendere l'ultimo record inserito. Così non ho mai avuto problemi, ma se sbaglio spero qualcuno possa correggermi e suggerirmi il modo migliore.
Ciao ciao
Guido
andrestu
Profilo
| Expert
772
messaggi | Data Invio:
sab 28 gen 2012 - 20:12
io faccio così, nella stored procedure:
(nella dichiarazione delle variaibli)
@newID int OUTPUT
(subito dopo l'inserimento)
SET @newID = (SELECT @@IDENTITY);
poi da aspnet leggo il valore del parametro 'newID ' impostato come parametro di output, oppure se ti serve direttamente all'interno della SP ancora meglio.
sinceramente non so quale delle due soluzioni è la migliore...
Andrea Restucci - Web Developer
paolo973
Profilo
| Senior Member
302
messaggi | Data Invio:
sab 28 gen 2012 - 21:20
public string ultimoID(String nameTbl, String dataID)
{
String connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("myDB.mdb");
OleDbConnection cn = new OleDbConnection(connString);
cn.Open();
string sql;
sql = "SELECT TOP 1 myid FROM mytbl ORDER BY myid DESC ";
OleDbCommand cmd = new OleDbCommand(sql, cn);
OleDbDataReader aReader = cmd.ExecuteReader();
aReader.Read();
string value = (string)aReader.GetString(0).ToString();
if (value.Length < 2)
{
value = "";
}
cn.Close();
aReader.Close();
return value;
}
mi ritorna questo errore
System.InvalidCastException: Cast specificato non valido.
in questa riga
string value = (string)aReader.GetString(0).ToString();
myid nel databse è un tipo contatore
andrestu
Profilo
| Expert
772
messaggi | Data Invio:
dom 29 gen 2012 - 08:56
prova a leggerlo come int e non come string
Andrea Restucci - Web Developer
Torna su
Stanze Forum
Elenco Threads
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 !