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.

Bueno así está mi formulario, Añado una etiqueta (Label1) y 2 botones (Button1, Button2)

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)
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.ObjectByVal e As System.EventArgsHandles 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.ObjectByVal e As System.EventArgsHandles 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






























7 comentarios:

  1. excelente lo buscaba desde hace rato, funciona a la perfeccion, gracias!!!!

    ResponderEliminar
  2. Buen 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

    ResponderEliminar
  3. Gracias, me ayudó mucho para lo que lo requería, aunque con algunas adaptaciones a mi programa, pero 100% funcional . Gracias por el aporte

    ResponderEliminar
  4. En 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

    ResponderEliminar
  5. excelente!! de verdad me ayudo mucho!!! claro! adaptándolo a lo que quería!! Gracias.

    ResponderEliminar
  6. Casinos Near Me | MapyRO
    Casinos 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.

    ResponderEliminar