Foros del Web » Programación para mayores de 30 ;) » .NET »

Problema con Eliminar 1 registro de la base de datos

Estas en el tema de Problema con Eliminar 1 registro de la base de datos en el foro de .NET en Foros del Web. bueno mi problema es el siguiente... este codigo que hize funciona 100% pero hay un detalle que no me gusta y no cacho como sacarlo.. ...
  #1 (permalink)  
Antiguo 04/11/2009, 19:15
 
Fecha de Ingreso: octubre-2009
Mensajes: 5
Antigüedad: 14 años, 6 meses
Puntos: 0
Problema con Eliminar 1 registro de la base de datos

bueno mi problema es el siguiente... este codigo que hize funciona 100% pero hay un detalle que no me gusta y no cacho como sacarlo.. tengo una clase persona y lo llamo desde mi frmEliminar .

el problema es el siguiente.. yo para eliminar, mi sistema me exige que tenga un txtclave.text y txttipo.text (texbox1) en el formulario.

y todos sabemos que para eliminar un registro no es necesario colocar su clave y tipo , basta con el nombre o rut y listo. pero en mi caso si le saco los txtclave.text y txttipo.text no me corre y me tira errores...
alguien me puede decir donde esta el detalle para poder sacar de mi formulario los textbox

CODIGO DE LA CLASE

Código:
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Data.SqlClient
Imports System.Data
Imports Auditoria_de_impresion

Public Class clasePersona

    Public Sub New(ByVal perNombre As String, ByVal perContraseña As String, ByVal perTipo As Integer)
        Dim usuNombre As String
        Dim usuClave As String
        Dim usuTipo As Integer
        usuNombre = perNombre
        usuClave = perContraseña
        usuTipo = perTipo

    End Sub

Dim conexion As String = "Data Source=localhost\SQLExpress;Initial Catalog=BDIMPRESION;database = usuario; trusted_connection = yes;Integrated Security = True; User Instance=True"

 Public Function eliminarUsuario(ByVal usuario As String, ByVal clave As String, ByVal tipo As Integer) As Boolean
        Dim cn As New SqlClient.SqlConnection(conexion)
        Dim cmd As New SqlClient.SqlCommand("Delete from usuarios Where perNombre = '" & usuario & "' ", cn)
        Dim valor As Integer
        Try
            If cn.State = ConnectionState.Closed Then
                cn.Open()
            End If
            valor = cmd.ExecuteNonQuery()
            MsgBox("Usuario Eliminado del Sistema ", MsgBoxStyle.Information)
        Finally
            cn.Close()
        End Try
        Return valor
    End Function
CODIGO DEL FORM

Código:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim clasePersona As clasePersona = New clasePersona(txtEliminar.Text, txtclave.Text, txttipo.Text)
        clasePersona.eliminarUsuario(txtEliminar.Text, txtclave.Text, txttipo.Text)


        'If MsgBox("Desea Eliminar al Usuario", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Eliminar") = MsgBoxResult.Yes Then

        ' End If
    End Sub
  #2 (permalink)  
Antiguo 04/11/2009, 20:04
Avatar de eperedo  
Fecha de Ingreso: septiembre-2009
Ubicación: Perú
Mensajes: 654
Antigüedad: 14 años, 7 meses
Puntos: 16
Respuesta: Problema con Eliminar 1 registro de la base de datos

Creo que te hace falta un descanso :P

Te explico tienes tu función Eliminar Usuario a la que le asignas 3 Parámetros!! usuario, clave y tipo, pero si te das cuenta clave y tipo nunca lo usas dentro de esa función simplemente los pones como parámetros.

Entonces luego al llamar a tu método obviamente te va a pedir el usuario, TIPO y CLAVE porque así lo construiste en tu clase.

La solución es simple quita los 2 parámetros y listo:
Código vb.net:
Ver original
  1. Public Function eliminarUsuario(ByVal usuario As String) As Boolean
  2.         Dim cn As New SqlClient.SqlConnection(conexion)
  3.         Dim cmd As New SqlClient.SqlCommand("Delete from usuarios Where perNombre = '" & usuario & "' ", cn)
  4.         Dim valor As Integer
  5.         Try
  6.             If cn.State = ConnectionState.Closed Then
  7.                 cn.Open()
  8.             End If
  9.             valor = cmd.ExecuteNonQuery()
  10.             MsgBox("Usuario Eliminado del Sistema ", MsgBoxStyle.Information)
  11.         Finally
  12.             cn.Close()
  13.         End Try
  14.         Return valor
  15.     End Function

Y al llamar hazlo así:
Código vb.net:
Ver original
  1. clasePersona.eliminarUsuario(txtEliminar.Text)

__________________
Eduardo Peredo
Wigoin
  #3 (permalink)  
Antiguo 04/11/2009, 21:18
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Problema con Eliminar 1 registro de la base de datos

pensando en el futuro otra opcion seria que esos parametros fueran opcionales asi quienes consumen tu metodo de tu clase no tendrian q reescribir todo , y solo adaptarias tu codigo de ese metodo (1 solo cambio contra N) claro pensando que fuera el escenario q planteo este.


Public Function eliminarUsuario(ByVal usuario As String,Optional ByVal clave As String,Optional ByVal tipo As Integer) As Boolean
Dim cn As New SqlClient.SqlConnection(conexion)
Dim cmd As New SqlClient.SqlCommand("Delete from usuarios Where perNombre = '" & usuario & "' ", cn) <==================== yo cambiaria esto por parametro del propio sqlcommand
Dim valor As Integer
Try
If cn.State = ConnectionState.Closed Then
cn.Open()
End If
valor = cmd.ExecuteNonQuery()
MsgBox("Usuario Eliminado del Sistema ", MsgBoxStyle.Information)
Finally
cn.Close()
End Try
Return valor
End Function
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #4 (permalink)  
Antiguo 04/11/2009, 21:41
Avatar de eperedo  
Fecha de Ingreso: septiembre-2009
Ubicación: Perú
Mensajes: 654
Antigüedad: 14 años, 7 meses
Puntos: 16
Respuesta: Problema con Eliminar 1 registro de la base de datos

Bueno puede ser, pero no creo xq no usa esos parámetros en ningún momento.

Como dice PeterPay deberías cambiar lo del parámetro
Código vb.net:
Ver original
  1. Dim cmd As New SqlClient.SqlCommand("Delete from usuarios Where perNombre = @usuario", cn)
  2. cmd.parameters.Add("@usuario",SqlDbType.VarChar,20).value = usuario
Y también investiga sobre la instrucción using.

__________________
Eduardo Peredo
Wigoin
  #5 (permalink)  
Antiguo 05/11/2009, 08:45
 
Fecha de Ingreso: octubre-2009
Mensajes: 5
Antigüedad: 14 años, 6 meses
Puntos: 0
Sonrisa Respuesta: Problema con Eliminar 1 registro de la base de datos

ahora puedo eliminar sin que tenga que agregar los textbox de contraseña y de tipo... ahora solo con el nombre y listo.

Gracias amigos aca el codigo 100% operativo


SOLUCION PARA LOS QUE LO QUIERAN:

Código:
Public Class clasePersona

    Public Sub New(ByVal perNombre As String, ByVal perContraseña As String, ByVal perTipo As Integer)
        Dim Nombre As String
        Dim Clave As String
        Dim Tipo As Integer
        Nombre = perNombre
        Clave = perContraseña
        Tipo = perTipo

    End Sub


 Public Function eliminarUsuario(ByVal usuario As String) As Boolean
        Dim cn As New SqlClient.SqlConnection(conexion)
        Dim cmd As New SqlClient.SqlCommand("Delete from usuarios Where perNombre = '" & usuario & "' ", cn)
        Dim valor As Integer
        Try
            If cn.State = ConnectionState.Closed Then
                cn.Open()
            End If
            valor = cmd.ExecuteNonQuery()
            MsgBox("Usuario Eliminado del Sistema ", MsgBoxStyle.Information)
        Finally
            cn.Close()
        End Try
        Return valor
    End Function
Código:
Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim clasePersona As clasePersona = New clasePersona("usuario", "clave", tipo)

        clasePersona.eliminarUsuario(txtNombre.Text)

    End Sub
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:41.