Foros del Web » Programación para mayores de 30 ;) » .NET »

Obtener ultimo id ingresado

Estas en el tema de Obtener ultimo id ingresado en el foro de .NET en Foros del Web. Amigos los molesto una vez más, estoy haciendo un "consecutivo" y quiero llenar un campo de la tabla con ese valor. Tabla prueba Campo1: id_prueba ...
  #1 (permalink)  
Antiguo 23/06/2010, 17:39
 
Fecha de Ingreso: abril-2010
Ubicación: Colombia - Barranquilla
Mensajes: 66
Antigüedad: 14 años
Puntos: 0
Obtener ultimo id ingresado

Amigos los molesto una vez más, estoy haciendo un "consecutivo" y quiero llenar un campo de la tabla con ese valor.

Tabla prueba
Campo1: id_prueba primary key
Campo2: nombre

ahora quiero que el id_prueba empieze en 1000 para eso he hecho esto como prueba:

Cita:
Dim consecutivo As Integer = 1000
consecutivo = consecutivo + 1
Dim insertar As New MySqlDataAdapter("INSERT INTO pruebas(id_prueba,nombre) VALUES ('" & consecutivo & "','" & Nombre.Text & "')", conexion)
Dim comando As New MySqlCommandBuilder(insertar)
Dim midataset As New DataSet
Try
insertar.Fill(midataset, "pruebas")
MsgBox("Se añadió con éxito un registro a la tabla.", MsgBoxStyle.Information)
Catch ex As MySqlException
MsgBox("No se han podido guardar los datos en la tabla.", MsgBoxStyle.Critical)
Finally
conexion.Dispose()
End Try
Hasta ahi funciona bien pero cuando quiero volver a insertar un nuevo registro no me lo permite porque ya hay un id con el mismo valor es decir 1001.

He leído sobre last_insert_id() por lo cual les pregunto ¿como podría obtener el ultimo id_prueba ingresado? el objetivo es que si me detecta que el ultimo id_ingresado es 1001 yo puedo autoincrementar a 1 y sería el nuevo id_prueba 1002 y asi sucesivamente.

Agradezco respuesta.
  #2 (permalink)  
Antiguo 23/06/2010, 20:09
 
Fecha de Ingreso: abril-2010
Ubicación: Colombia - Barranquilla
Mensajes: 66
Antigüedad: 14 años
Puntos: 0
Respuesta: Obtener ultimo id ingresado

He estado investigando y si hago esto en phpmyadmin

Cita:
SELECT MAX('id_prueba')FROM pruebas
Me arroja el resultado que estoy necesitando pero ¿como lo implemento en visual basic.net y le doy ese valor a una variable?
  #3 (permalink)  
Antiguo 23/06/2010, 20:30
 
Fecha de Ingreso: abril-2010
Ubicación: Colombia - Barranquilla
Mensajes: 66
Antigüedad: 14 años
Puntos: 0
Respuesta: Obtener ultimo id ingresado

Bueno tal parece que he dado con la forma de hacer lo qeu he solicitado ahora quiero que alguno lo analice y me diga si está bien o está mal, a mi me funciona.

Cita:
Dim consecutivo As Integer = 10000
consecutivo = consecutivo + 1
Dim insertar As New MySqlDataAdapter("INSERT INTO pruebas(id_prueba,nombre) VALUES ('SELECT(Max(id_prueba)+1)','" & Nombre.Text & "')", conexion)
el id_prueba lo inicie en 10000 y lo aumento en uno, esto cuando la tabla esta vacia obviamente que ya despues no sirve de nada.

otra cosa cuando cree la tabla indique que el campo id_pruebas fuera auto_increment ¿lo dejo así o lo quito?
  #4 (permalink)  
Antiguo 23/06/2010, 21:54
 
Fecha de Ingreso: febrero-2010
Ubicación: México
Mensajes: 738
Antigüedad: 14 años, 2 meses
Puntos: 37
Respuesta: Obtener ultimo id ingresado

Bueno desde mi punto de vista ya no seria necesario tener como identity o auto_increment ese campo ya que siempre estas obteniendo el último valor insertado y le agregas uno lo cual funge como auto incremento, otra cosa que se me ocurre que pudiste haber hecho es desde la BD en la tabla a ese campo inicializarlo en 1000 por ejemplo en SQL Server:

Código PHP:
Ver original
  1. DBCC CHECKIDENT (Tabla, RESEED, 1000)

Después de esto simplemente te preocuparias por insertar sin tener que estar realizando manualmente el autoincremento con el select max(id) + 1
  #5 (permalink)  
Antiguo 24/06/2010, 05:52
 
Fecha de Ingreso: abril-2010
Ubicación: Colombia - Barranquilla
Mensajes: 66
Antigüedad: 14 años
Puntos: 0
Respuesta: Obtener ultimo id ingresado

Mi querido amigo eso quise hacer directamente en mysql fue lo primero que se me vino a la mente pero me lo cambiaba de 1000 a 1 así que no tuve otra que hacerlo así, ahora si alguien sabe como me gustaría que lo compartiera para una próxima ocasión, igual esta forma me sirvió para implementar:
Cita:
select max(id) + 1
  #6 (permalink)  
Antiguo 24/06/2010, 08:22
 
Fecha de Ingreso: febrero-2010
Ubicación: México
Mensajes: 738
Antigüedad: 14 años, 2 meses
Puntos: 37
Respuesta: Obtener ultimo id ingresado

Otra cosita solo me queda la duda respecto al select max(id) en el Insert esto porque supongamos que la tabla no tiene ningún registro quien sabe que regresará pero bueno quizás y ya lo tomaste en cuenta.
  #7 (permalink)  
Antiguo 24/06/2010, 09:58
Avatar de jaullo  
Fecha de Ingreso: abril-2009
Mensajes: 994
Antigüedad: 15 años
Puntos: 30
Respuesta: Obtener ultimo id ingresado

Puedes hacerlo asi
Código ASP:
Ver original
  1. Public Shared Sub buscarcodigodireccion(ByVal accion As String)
  2.             If conexion.State = Data.ConnectionState.Open Then
  3.                 conexion.Close()
  4.             End If
  5.             conexion.Open()
  6.             Dim cM As New SqlCommand("select .....", conexion)
  7.             Dim dR As SqlDataReader = cM.ExecuteReader()
  8.             While dR.Read()
  9.                 codigo = dR("cod_dir")
  10.  
  11.             End While
  12.             dR.Close()
  13.             ' conexion.Close()
  14.             codigo += 1
  15.  
  16.         End Sub
  #8 (permalink)  
Antiguo 24/06/2010, 10:11
 
Fecha de Ingreso: abril-2010
Ubicación: Colombia - Barranquilla
Mensajes: 66
Antigüedad: 14 años
Puntos: 0
Respuesta: Obtener ultimo id ingresado

Hola supongo que ese codigo responde la pregunta de Ka0stj o me equivoco?
  #9 (permalink)  
Antiguo 25/06/2010, 14:52
 
Fecha de Ingreso: febrero-2010
Ubicación: México
Mensajes: 738
Antigüedad: 14 años, 2 meses
Puntos: 37
Respuesta: Obtener ultimo id ingresado

Bueno no tanto pregunta sino una observación a tu código easolano5 ya que si es la primera vez que será insertado un dato en esa tabla lo mas seguro es que truene porque no hay ningún id por lo tanto el select max tronará pero pues esto lo puedes controlar por código si es que quieres seguir utilizando el select max.

Etiquetas: ultimo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:13.