Consultar último registro de mi base de datos en VB. NET
En el momento en que estamos haciendo un registro dentro de nuestra base de datos, queremos llevar nuestro propio control, para esto muchas veces utilizamos la opción autonumérico de nuestra base de datos.
En mi experiencia con el autonumérico no me gusta, debido a que en el momento en que estoy haciendo pruebas está avanzando el conteo y cuando elimino se queda guardado el valor del último registro, y tengo que resetear mi tabla.
Así que mejor utilizo la opción siguiente que es consultar el último Registro (ID) añadido, y desde ahí partir, así cuando elimino por ejemplo el registro 5, por medio de programación consultará el último registro y me arrojará el número 4 para que cuando guarde uno nuevo seea mi registro 5.
El ejemplo lo realizaré con una base de datos en access 2010, aunque es lo mismo que con Sql Server.
Para iniciar tenemos que tener nuestra base de datos, para esto yo tengo una ya hecha con la que haré el ejemplo:
Para el ejercicio en el que vamos a trabajar es necesario que esté nuestro campo NUMERO con formato de tipo NÚMERO (Es necesario para que nos ordene los registros)
Creamos un nuevo Windows Form
Para eso vamos a nuestra pestaña de proyecto en Visual Basic, y seleccionamos la opción de "Agregar Windows form..."
Yo el ejemplo lo haré desde cero, en caso de que ya tengas el trabajo en donde quieres trabajar, sólo añade el código.
Cambio el texto de cad auno de los controles insertados
Bien esta es la parte sencilla (jeje). Ahora viene el código, para eso hay que crear la conexión con la base de datos. pondré el pantallazo de cómo tiene que quedar todo el código, Para que lo revisen y vean cómo tiene que quedar.
Al inicio de nuestra pestaña de Código tendremos que añadir las librerías que nos facilitan la conexion con la base de datos, en éste caso ACCESS
'Sentencia para llamar a la Base de
Datos OLE
Imports System
Imports System.Data
Imports System.Data.OleDb
'INICIA LA CLASE DEL PROGRAMA
Public
Class Form1
'Añadimos el proveedor de nuestra base de datos que en este caso es access (Microsoft.ACE.OLEDB.12.0)
'Y declaramos el servidor a donde se conectará o simplemente ponemos el nombre de nuestra base dedatos con su extensión (en caso de que esté en la misma carpeta que nuestrio programa)
'Y declaramos el servidor a donde se conectará o simplemente ponemos el nombre de nuestra base dedatos con su extensión (en caso de que esté en la misma carpeta que nuestrio programa)
Ejemplo con un servidor que me inventé:
Public cn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=\\148.224.70.112\MICARPETA\MIBASEDEDATOS.accdb;Persist Security Info=False")
Public ds As New DataSet
Public
fila, FILA2 As Integer
'dESPUÉS CREAMOS UN COMANDO QUE SE LLAMA "CONEXION" QUE ES DONDE DECLARAMOS EL NOMBRE DE NUESTRA TABLA, Y QUE ACCIÓN VA A HACER, QUE EN ESTE CASO ES SELECT DE NUESTRA TABLA
Sub
Conexion()
ds.Clear()
Dim
adaptador As New
OleDbDataAdapter("Select
* From NUESTRA_TABLA", cn)
cn.Open()
adaptador.Fill(ds, "NUESTRA_TABLA")
cn.Close()
End Sub
'cREAMOS UN COMANDO QUE SE LLAMA "ULTIMOREGISTRO", Este comando es el que va hacer la consulta de nuestro último dato registrado por numero.
Sub
ULTIMOREGISTRO()
Dim resultado_num As String = ""
Dim
query_num As String
= "SELECT MAX(ID)FROM NUESTRA_TABLA"
Dim
comando_num As OleDbCommand
Dim
lector_num As OleDbDataReader
cn.Open()
comando_num = New
OleDbCommand(query_num, cn)
lector_num = comando_num.ExecuteReader
If
lector_num.Read Then
resultado_num =
lector_num(0).ToString
End If
lector_num.Close()
cn.Close()
Label1.Text = resultado_num
If
Label1.Text = Nothing Then
Label1.Text = 0
End If
End Sub
Para esto le damos doble clic al Button1 (Consultar último registro) nos aparece nuestra ventana de código y es donde insertaremos el código.
'LLAMAMOS EL COMANDO DESDE NUESTRO CONTROL BUTTON1, Y HACE LA CONSULTA EN EL MOMENTO EN QUE LE DAMOS CLIC
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ULTIMOREGISTRO()
End Sub
'EN EL CONTROL BUTTON2 ES EL QUE NOS HARÁ LA ACCIÓN DE GUARDAR EL REGISTRO, SÓLO FUARDAREMOS EL CAMPO ID
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'Se actualiza el numero de ticket
Label1.Text = Label1.Text + 1
Try
Dim cmd As New OleDbCommand("Insert Into NUESTRA_TABLA(ID) Values('" & Label1.Text.Trim & "')", cn)
Conexion()
cn.Open()
cmd.ExecuteNonQuery()
cn.Close()
fila = fila2 - 1
Catch ex As Exception
MsgBox(ex.Message, 16, "Error")
Finally
End Try
End Sub
End Class
Suscribirse a:
Enviar comentarios (Atom)
excelente lo buscaba desde hace rato, funciona a la perfeccion, gracias!!!!
ResponderEliminarperfecto
ResponderEliminarBuen Dia, Gracias por el aporte me ayudó, ahora quiero regresar del Ultimo registro pero de 1 en 1, lo mismo quiero del primero subir de 1 en 1 hasta el maximo. gracias espero sus gratos comentarios
ResponderEliminarGracias, me ayudó mucho para lo que lo requería, aunque con algunas adaptaciones a mi programa, pero 100% funcional . Gracias por el aporte
ResponderEliminarEn mi caso mi base de datos tiene poco mas de 4 mil registros y utilizar este codigo para obtener el ultimo me manda el numero 999 como resultado y hay queda
ResponderEliminarexcelente!! de verdad me ayudo mucho!!! claro! adaptándolo a lo que quería!! Gracias.
ResponderEliminarCasinos Near Me | MapyRO
ResponderEliminarCasinos Near Me. 오산 출장마사지 Hotels Near Me. A place where gamblers 제천 출장마사지 can find, indulge and 여수 출장마사지 play on 서귀포 출장안마 a river, and at the top of the casino 순천 출장샵 floor.