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
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
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
Hola, seria bueno que digas que error te esta tirando y en que parte del codigo...mira veo varias cosas que podes mejorar, una es que la clase deberia tener sus propiedades o sea los Get y Set...la otra es que no es bueno estar conectandose y desconectandose a cada rato, te conectas una sola vez a la base y listo despues manejas esa conexion como publica y listo la usas en cualquier lado, pero no estar haciendo el .Open a cada rato...lo haces una vez y ya esta, lo mismo para las clases, las deberias declarar una sola vez como publicas y usar ese objeto en todo el proyecto cuando te de la gana, y no estar creando a cada rato la clase.un registro se borra principalmete por su ID que lo identifica y debe ser unico, ahi estas borrando por nombre y si por casualidad hay 2 personas con el mismo nombre te las borra todas..debes usar el ID, no el nombre.
saludos.
ahora puedo eliminar sin que tenga que agregar los textbox de contraseña y de tipo... ahora solo con el nombre y listo.
Gracias amigo Seba tuve que hacerle algunos cambios deacuerdo a tus criticas del codigo... bueno no soy tan experto en visual.. de a poquito me estoy puliendo jejjejee aca el codigo 100% operativo
SOLUCION PARA LOS QUE LO QUIERAN:
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
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