Insertar registro y devolver columna clave

22/02/2005 - 20:11 por Fabián Aguirre | Informe spam
Hola amigos , tengo un problema. Necesito insertar un registro y que la
rutina me devuelva el Id (autonumerico) del nuevo registro .
como podría hacerlo ? intenté con esto pero no funciona:

Public Function EjecutarYDevolverCampo(ByVal StrSql As String, ByVal
CampoDevolver As String) As Object

Dim myCommand As New OleDbCommand(StrSql, cn)
Dim myReader As OleDbDataReader
If cn.State = ConnectionState.Closed Then
cn.Open()
End If

Try
myReader = myCommand.ExecuteReader()
Catch err As Exception
MessageBox.Show(err.Message)
Return Nothing

End Try

If myReader.RecordsAffected = 0 Then
Return Nothing
End If

While myReader.Read()
Return myReader.Item(CampoDevolver)
End While
myReader.Close()

End Function


Muchas gracias

Preguntas similare

Leer las respuestas

#1 SqlRanger
23/02/2005 - 13:36 | Informe spam
¿Qué sistema de base de datos estás usando? ¿Access, SQL Server .. ?

Lo pregunto porque la forma de obtener el autonumérico es diferente según el
sistema.

Saludos:

Jesús López



"Fabián Aguirre" escribió en el mensaje
news:
Hola amigos , tengo un problema. Necesito insertar un registro y que la
rutina me devuelva el Id (autonumerico) del nuevo registro .
como podría hacerlo ? intenté con esto pero no funciona:

Public Function EjecutarYDevolverCampo(ByVal StrSql As String, ByVal
CampoDevolver As String) As Object

Dim myCommand As New OleDbCommand(StrSql, cn)
Dim myReader As OleDbDataReader
If cn.State = ConnectionState.Closed Then
cn.Open()
End If

Try
myReader = myCommand.ExecuteReader()
Catch err As Exception
MessageBox.Show(err.Message)
Return Nothing

End Try

If myReader.RecordsAffected = 0 Then
Return Nothing
End If

While myReader.Read()
Return myReader.Item(CampoDevolver)
End While
myReader.Close()

End Function


Muchas gracias
Respuesta Responder a este mensaje
#2 Fabián Aguirre
23/02/2005 - 14:54 | Informe spam
Hola Jesús ... verdad se me olvidó decir que uso Access..

muchas gracias

SqlRanger wrote:
¿Qué sistema de base de datos estás usando? ¿Access, SQL Server .. ?

Lo pregunto porque la forma de obtener el autonumérico es diferente según el
sistema.

Saludos:

Jesús López


Respuesta Responder a este mensaje
#3 Fabián Aguirre
23/02/2005 - 21:08 | Informe spam
por favor ojala alguien me pueda ayudar.. estoy realmente complicado con
este problema de no poder obtener el Id autonumérico de un registro que
he insertado .

mchas gracias.

Fabián Aguirre wrote:
Respuesta Responder a este mensaje
#4 SqlRanger
24/02/2005 - 09:36 | Informe spam
Para obtener el autonumérico en Access tienes que ejecutar "SELECT
@@IDENTITY" justo después de insertar el registro y sin haber cerrado la
conexión. Si cierras la conexión ya no podrás obtener el autonumérico. Es
decir, tendrás que hacer algo así:

(1) Abrir conexión
(2) Insertar registro
(3) Obtener el autonumérico con SELECT @@IDENTITY
(4) Cerrar la conexión si ya no hace falta tenerla abierta


Esta sería la manera de obtener el autonumérico con "SELECT @@IDENTITY"

Dim cmdAuto As New OleDbCommand("SELECT @@IDENTITY", cn)
Dim Autonumérico As Integer = cmdAuto.ExecuteScalar()

Saludos:

Jesús López
MVP


"Fabián Aguirre" escribió en el mensaje
news:
Hola Jesús ... verdad se me olvidó decir que uso Access..

muchas gracias

SqlRanger wrote:
> ¿Qué sistema de base de datos estás usando? ¿Access, SQL Server .. ?
>
> Lo pregunto porque la forma de obtener el autonumérico es diferente


según el
> sistema.
>
> Saludos:
>
> Jesús López
>
>
Respuesta Responder a este mensaje
#5 Fabián Aguirre
24/02/2005 - 23:03 | Informe spam
Millón de Gracias Jesús , provaré el código .

un saludo .

SqlRanger wrote:
Para obtener el autonumérico en Access tienes que ejecutar "SELECT
@@IDENTITY" justo después de insertar el registro y sin haber cerrado la
conexión. Si cierras la conexión ya no podrás obtener el autonumérico. Es
decir, tendrás que hacer algo así:

(1) Abrir conexión
(2) Insertar registro
(3) Obtener el autonumérico con SELECT @@IDENTITY
(4) Cerrar la conexión si ya no hace falta tenerla abierta


Esta sería la manera de obtener el autonumérico con "SELECT @@IDENTITY"

Dim cmdAuto As New OleDbCommand("SELECT @@IDENTITY", cn)
Dim Autonumérico As Integer = cmdAuto.ExecuteScalar()

Saludos:

Jesús López
MVP

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida