none
no repetir datos en datagridview con tabla en access y visual.net

    Pregunta

  • hola buenos dias tardes o noches :)

    mi pregunta tenego una pequeña base de datos  y un form donde ingreso un numero de parte pero quiero que cuando ese numero de parte ya este que me mande un mensaje que ya esta dado de alta ese numero de parte espero me puedan ayudar

    saludos :)

    jueves, 3 de noviembre de 2016 14:43

Respuestas

  • Hola rj-siscom,

    Podrías agregar un restricción UNIQUE al campo para evitar duplicados y mediante el Catch lo atrapas y validas. O también podrías crear una función que haga la consulta antes del registro.

    Algo como :

        Public Function existeNumParte(ByVal numParte As Integer) As Boolean
            Using con As New OleDbConnection("MiCadenaConexion")
                con.Open()
    
                Dim query = "select count(*) from miTabla where numParte = ?"
    
                Dim cmd As New OleDbCommand(query, con)
                cmd.Parameters.AddWithValue("@np", numParte)
    
                'Si existe retorna True, caso contrario False
                Return CInt(cmd.ExecuteScalar) > 0
            End Using
        End Function

    Dónde tendrías que enviar el número de parte a validar (cambiar los tipos de datos según el caso).

    Private Sub btnRegistro_Click(sender As Object, e As EventArgs) Handles btnRegistro.Click
            Try
                Dim np As Integer = CInt(txtNumParte.Text)
    
                If existeNumParte(np) Then
                    MessageBox.Show("Ya existe un ....")
                    Exit Sub  'Salimos del evento
                End If
    
                'No existe, continuamos
                '.....
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    jueves, 3 de noviembre de 2016 15:03

Todas las respuestas

  • Hola rj-siscom,

    Podrías agregar un restricción UNIQUE al campo para evitar duplicados y mediante el Catch lo atrapas y validas. O también podrías crear una función que haga la consulta antes del registro.

    Algo como :

        Public Function existeNumParte(ByVal numParte As Integer) As Boolean
            Using con As New OleDbConnection("MiCadenaConexion")
                con.Open()
    
                Dim query = "select count(*) from miTabla where numParte = ?"
    
                Dim cmd As New OleDbCommand(query, con)
                cmd.Parameters.AddWithValue("@np", numParte)
    
                'Si existe retorna True, caso contrario False
                Return CInt(cmd.ExecuteScalar) > 0
            End Using
        End Function

    Dónde tendrías que enviar el número de parte a validar (cambiar los tipos de datos según el caso).

    Private Sub btnRegistro_Click(sender As Object, e As EventArgs) Handles btnRegistro.Click
            Try
                Dim np As Integer = CInt(txtNumParte.Text)
    
                If existeNumParte(np) Then
                    MessageBox.Show("Ya existe un ....")
                    Exit Sub  'Salimos del evento
                End If
    
                'No existe, continuamos
                '.....
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    jueves, 3 de noviembre de 2016 15:03
  • muchas gracias solo tengo una duda jejeje este es mi coneccion

    <?

    xmlversion="1.0"encoding="utf-8"?>

    <

    configuration>

        <

    configSections>

        </

    configSections>

        <

    connectionStrings>

            <

    addname="STENCIL_ALTA.My.MySettings._1STENCILConnectionString"


               

    connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=U:\DataBase\1STENCIL.accdb"


               

    providerName="System.Data.OleDb"/>

        </

    connectionStrings>

        <

    startup>

            <

    supportedRuntimeversion="v4.0"sku=".NETFramework,Version=v4.5.2"/>

        </

    startup>

    </

    configuration>

    me marca error aqui

    Using con As New OleDbConnection("MiCadenaConexion")

     Dim cmd As New OleDbCommand(query, con)
                cmd
    .Parameters.AddWithValue("@np", numParte)

    jueves, 3 de noviembre de 2016 17:14
  • Hola rj-siscom,

    Podrías agregar un restricción UNIQUE al campo para evitar duplicados y mediante el Catch lo atrapas y validas. O también podrías crear una función que haga la consulta antes del registro.

    Algo como :

        Public Function existeNumParte(ByVal numParte As Integer) As Boolean
            Using con As New OleDbConnection("MiCadenaConexion")
                con.Open()
    
                Dim query = "select count(*) from miTabla where numParte = ?"
    
                Dim cmd As New OleDbCommand(query, con)
                cmd.Parameters.AddWithValue("@np", numParte)
    
                'Si existe retorna True, caso contrario False
                Return CInt(cmd.ExecuteScalar) > 0
            End Using
        End Function

    Dónde tendrías que enviar el número de parte a validar (cambiar los tipos de datos según el caso).

    Private Sub btnRegistro_Click(sender As Object, e As EventArgs) Handles btnRegistro.Click
            Try
                Dim np As Integer = CInt(txtNumParte.Text)
    
                If existeNumParte(np) Then
                    MessageBox.Show("Ya existe un ....")
                    Exit Sub  'Salimos del evento
                End If
    
                'No existe, continuamos
                '.....
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    hola buenos dias si me podrias ayudar ya me atore y no pude echarlo andar

    miércoles, 16 de noviembre de 2016 15:29