none
Examen...... RRS feed

  • Pregunta

  • Tengo confeccionado el siguiente procedimiento para borrar registros (en una base de batos access 2007, y programado en visual basic 2010), el cual me funciona bien, pero mi consulta es la siguiente: ¿Se puede hacer mas fácil? Por ejemplo buscar el primer registro, o el último, o bien buscar el valor mínimo del campo  puntos, ¿haciéndolo de otra manera sobraría la variable ConPuntos?.

        Public Sub Eliminar()
            Dim ConPuntos As Integer = 15000 'en la base de batos siempre son inferiores a esta cifra
            NombreFinal = "'DUDU'"                      'provisional para cambiar a otro lugar del programa
            Try
                Dim sql As String = "select count(*) from personas where nivel = " & NombreFinal
                conn.Open()
                Dim md As New OleDb.OleDbCommand(sql, conn)
                CuentaRegistros = CType(md.ExecuteScalar, Integer)  'convertir el tipo de datos a integer
                MsgBox("CuentaRegistros:    " & CuentaRegistros)
                If CuentaRegistros >= 10 Then
                    cmd.CommandType = CommandType.Text      'orden común para seleccion y borrado
                    cmd.Connection = conn                   'orden común para seleccion y borrado
                    cmd.CommandText = "Select puntos, nivel From personas where nivel = " & NombreFinal
                    dr = cmd.ExecuteReader
                    While dr.Read
                        If dr(0).ToString < ConPuntos Then
                            ConPuntos = dr(0).ToString
                        End If
                    End While
                    dr.Close()                          'CERRAR ExecuteReader
                    sql = "delete from personas where puntos = " & ConPuntos
                    cmd.CommandText = sql
                    cmd.ExecuteNonQuery()
                End If
            Catch ex As Exception
                MsgBox(ex.ToString)
            Finally
                If conn.State = ConnectionState.Open Then
                    conn.Close()
                End If
            End Try
        End Sub

    Un saludo, y gracias .

    Alberto Sánchez

    jueves, 25 de julio de 2013 11:36

Respuestas

  •  A continuación detallo un nuevo procedimiento, pero con menos instrucciones, y que funciona igualmente que el anterior, sobre  el eliminado de registros. (Por si alguna persona le pudiera servir). Era la pregunta que hacía yo en el escrito anterior, pero he luchado hasta que lo conseguí.

    Public Sub eliminar2()
            Dim ConPuntos As Integer
            Try
                conn.Open()
                cmd.Connection = conn
                cmd.CommandType = CommandType.Text
                cmd.CommandText = "Select min(puntos) from personas where nivel = 'DUDU'"
                dr = cmd.ExecuteReader
                dr.Read()
                ConPuntos = dr(0).ToString
                dr.Close()
                SQL = "delete from personas where puntos = " & ConPuntos
                cmd.CommandText = SQL
                cmd.ExecuteNonQuery()
            Catch ex As Exception
                MsgBox(ex.ToString)
            Finally
                If conn.State = ConnectionState.Open Then
                    conn.Close()
                End If
            End Try
        End Sub

    Un saludo a todos

    Alberto Sánchez

    viernes, 9 de agosto de 2013 16:44