none
mensaje en access RRS feed

Respuestas

  • "jaime access1" preguntó:

    > quisiera saber como mostrar un mensaje si un registro existe en una consulta en access

    Hola, Jaime:

    Me imagino que desearás conocer qué consulta ejecutar para saber si existe un registro cualquiera en una tabla de tu base de datos de Access.

    Por ejemplo, si deseas conocer si existe un cliente en tu tabla de Clientes con un identificador concreto, bien podrías hacer uso de la siguiente función:

    Imports System.Data.OleDb
    
    
        Friend Shared Function ExisteCliente(numeroCliente As String) As Boolean
    
            Dim existe As Boolean
    
            ' Establecemos una conexión con la base de datos de Access.
            Using cnn As New OleDbConnection(escribe aquí tu cadena de conexión)
                ' Creamos el comando.
                Dim cmd As OleDbCommand = cnn.CreateCommand()
    
                ' Indicamos la consulta SQL sde selección que deseamos ejecutar.
                cmd.CommandText = "SELECT IdCliente FROM Clientes WHERE IdCliente=@idcliente"
    
                ' Añadimos el único parámetro de entrada existente.
                cmd.Parameters.AddWithValue("@idcliente", numeroCliente)
    
                ' Abrimos la conexión.
                cnn.Open()
    
                ' Ejecutamos el comando.
                Dim obj As Object = cmd.ExecuteScalar()
    
                ' Si el valor es Nothing es porque no existe un registro
                ' donde el campo IdCliente sea igual al valor especificado.
                ' Y si no es Nothing es porque sí existe el registro.
                '
                existe = (Not obj Is Nothing)
    
            End Using
    
            Return existe
    
        End Function

    Y llamarías a la función pasándole el identificador de cliente que deseas conocer si existe o no y que el usuario ha escrito en un control TextBox:

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
            Try
                Dim existe As Boolean = ExisteCliente(TextBox1.Text)
                Dim msg As String = If(existe, "Existe el cliente.", "No existe el cliente.")
                MessageBox.Show(msg)
    
            Catch ex As Exception
                ' Se ha producido un error.
                MessageBox.Show(ex.Message)
    
            End Try
    
        End Sub

    ¡Eso es todo! Adapta el ejemplo a tus necesidades.

    Un saludo


    Enrique Martínez Montejo
            [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    sábado, 24 de octubre de 2015 15:07
    Moderador
  • Hola jaime access1,

    Algo que me gustaría agregar sobre lo que ya te menciono Enrique es que evites dos cosas:

    1. La consulta contra todas las columnas, o si defines una columna evita que te traiga resultados si lo único que quieres es validar la existencia. Es mejor - en términos de rendimiento - si sólo ocupas una función de agregado como COUNT().
    2. El uso de una variable de tipo Object. Si ya cuentas con la cantidad de existencias (que podría ser cero) podrías crear una expresión booleana que servirá como retorno de la función.

    Dim cuenta As Integer
    
    Using cn As New OleDbConnection("CADENA DE CONEXIÓN")
    
    	Dim ConsultaSQL As String = "SELECT COUNT(*) FROM MiTabla WHERE (id = ?)"
    	Dim cmd As New OleDbCommand(ConsultaSQL, con)
    
    	cmd.Parameters.AddWithValue("@Param1", id)
    
    	cn.Open()
    
    	cuenta = Convert.ToInt32(cmd.ExecuteScalar())
    
    End Using
    
    return cuenta = 0




    sábado, 24 de octubre de 2015 16:04

Todas las respuestas

  • "jaime access1" preguntó:

    > quisiera saber como mostrar un mensaje si un registro existe en una consulta en access

    Hola, Jaime:

    Me imagino que desearás conocer qué consulta ejecutar para saber si existe un registro cualquiera en una tabla de tu base de datos de Access.

    Por ejemplo, si deseas conocer si existe un cliente en tu tabla de Clientes con un identificador concreto, bien podrías hacer uso de la siguiente función:

    Imports System.Data.OleDb
    
    
        Friend Shared Function ExisteCliente(numeroCliente As String) As Boolean
    
            Dim existe As Boolean
    
            ' Establecemos una conexión con la base de datos de Access.
            Using cnn As New OleDbConnection(escribe aquí tu cadena de conexión)
                ' Creamos el comando.
                Dim cmd As OleDbCommand = cnn.CreateCommand()
    
                ' Indicamos la consulta SQL sde selección que deseamos ejecutar.
                cmd.CommandText = "SELECT IdCliente FROM Clientes WHERE IdCliente=@idcliente"
    
                ' Añadimos el único parámetro de entrada existente.
                cmd.Parameters.AddWithValue("@idcliente", numeroCliente)
    
                ' Abrimos la conexión.
                cnn.Open()
    
                ' Ejecutamos el comando.
                Dim obj As Object = cmd.ExecuteScalar()
    
                ' Si el valor es Nothing es porque no existe un registro
                ' donde el campo IdCliente sea igual al valor especificado.
                ' Y si no es Nothing es porque sí existe el registro.
                '
                existe = (Not obj Is Nothing)
    
            End Using
    
            Return existe
    
        End Function

    Y llamarías a la función pasándole el identificador de cliente que deseas conocer si existe o no y que el usuario ha escrito en un control TextBox:

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
            Try
                Dim existe As Boolean = ExisteCliente(TextBox1.Text)
                Dim msg As String = If(existe, "Existe el cliente.", "No existe el cliente.")
                MessageBox.Show(msg)
    
            Catch ex As Exception
                ' Se ha producido un error.
                MessageBox.Show(ex.Message)
    
            End Try
    
        End Sub

    ¡Eso es todo! Adapta el ejemplo a tus necesidades.

    Un saludo


    Enrique Martínez Montejo
            [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    sábado, 24 de octubre de 2015 15:07
    Moderador
  • Hola jaime access1,

    Algo que me gustaría agregar sobre lo que ya te menciono Enrique es que evites dos cosas:

    1. La consulta contra todas las columnas, o si defines una columna evita que te traiga resultados si lo único que quieres es validar la existencia. Es mejor - en términos de rendimiento - si sólo ocupas una función de agregado como COUNT().
    2. El uso de una variable de tipo Object. Si ya cuentas con la cantidad de existencias (que podría ser cero) podrías crear una expresión booleana que servirá como retorno de la función.

    Dim cuenta As Integer
    
    Using cn As New OleDbConnection("CADENA DE CONEXIÓN")
    
    	Dim ConsultaSQL As String = "SELECT COUNT(*) FROM MiTabla WHERE (id = ?)"
    	Dim cmd As New OleDbCommand(ConsultaSQL, con)
    
    	cmd.Parameters.AddWithValue("@Param1", id)
    
    	cn.Open()
    
    	cuenta = Convert.ToInt32(cmd.ExecuteScalar())
    
    End Using
    
    return cuenta = 0




    sábado, 24 de octubre de 2015 16:04