none
Deshabilitar la eliminacion de registros si una columna en especifico tiene registros. RRS feed

  • Pregunta

  • Buen dia, necesito ayuda con un problema que se me presento... veran en mi base de datos tengo una tabla la cual tiene 11 columnas (la mayoria de ellas son de tipo date).

    Pero hay una columna en especifico de tipo text la cual estableci para cuando quieren restringir el acceso a una persona a la empresa, en mi form tengo establecido que esta columna solo se me habilite cuando activen un checkbox para "restringir el acceso" (esto habilita el textbox para que ingresen las razones por las cuales la persona quedara vetada).

    El problema que tengo es que necesito establecer una funcion que me impida eliminar ese registro en el datagridview, si la columna de "Acceso" tiene datos.

    Ayuda por favor!



    • Editado Ne0_Kazu miércoles, 9 de marzo de 2016 15:13
    miércoles, 9 de marzo de 2016 15:11

Respuestas

  • Hola,

    Pero puedes establecer una consulta, verificando si ese columna tiene datos.

    Aquí puedes ver como obtener un dato mediante el ExecuteScalar()

    Public Function verificarAcceso(codUser As Integer) As Boolean
    	'Aquí consultas tu tabla, si tiene datos
    	'ExecuteScalar y validas la data
    	' false si no hay datos y true si los encuentra
    
    	'Si tiene datos retornas true y sino false

    Supongo que para eliminar usas un Botón, tendrías que validar si tiene acceso o no, antes de terminar el proceso, alg así :

    Private Sub btnEliminar_Click(sender As Object, e As EventArgs)
    	'La opción Multiselected = false, para no seleccionar varias filas a la vez
    	'Obtienes la fila seleccionada
    
    	Dim actual As Integer = dgDatos.SelectedRows(0).Index
    
    	'Buscas la data según su código
    	Dim codigo As Integer = Convert.ToInt32(dgDatos.Rows(actual).Cells("Id").Value)
    
    	If verificarAcceso(codigo) = True Then
    		MessageBox.Show("Este registro no se puede eliminar, porque hay datos en la columna Acceso.")
    		'Con Exit Sub sales del evento, para que no continue con lo posterior
    		Exit Sub
    	End If
    
    	'Aquí pones tu resto de código para eliminar, ya que no tiene datos
    	'.
    End Sub

    Espero que te sirva.

    Saludos.



    JC NaupaCrispín

    • Marcado como respuesta Ne0_Kazu miércoles, 9 de marzo de 2016 19:54
    miércoles, 9 de marzo de 2016 18:06

Todas las respuestas

  • Hola,

    Pero puedes establecer una consulta, verificando si ese columna tiene datos.

    Aquí puedes ver como obtener un dato mediante el ExecuteScalar()

    Public Function verificarAcceso(codUser As Integer) As Boolean
    	'Aquí consultas tu tabla, si tiene datos
    	'ExecuteScalar y validas la data
    	' false si no hay datos y true si los encuentra
    
    	'Si tiene datos retornas true y sino false

    Supongo que para eliminar usas un Botón, tendrías que validar si tiene acceso o no, antes de terminar el proceso, alg así :

    Private Sub btnEliminar_Click(sender As Object, e As EventArgs)
    	'La opción Multiselected = false, para no seleccionar varias filas a la vez
    	'Obtienes la fila seleccionada
    
    	Dim actual As Integer = dgDatos.SelectedRows(0).Index
    
    	'Buscas la data según su código
    	Dim codigo As Integer = Convert.ToInt32(dgDatos.Rows(actual).Cells("Id").Value)
    
    	If verificarAcceso(codigo) = True Then
    		MessageBox.Show("Este registro no se puede eliminar, porque hay datos en la columna Acceso.")
    		'Con Exit Sub sales del evento, para que no continue con lo posterior
    		Exit Sub
    	End If
    
    	'Aquí pones tu resto de código para eliminar, ya que no tiene datos
    	'.
    End Sub

    Espero que te sirva.

    Saludos.



    JC NaupaCrispín

    • Marcado como respuesta Ne0_Kazu miércoles, 9 de marzo de 2016 19:54
    miércoles, 9 de marzo de 2016 18:06
  • Hola gracias por tu respuesta. Si en efecto utilizo un boton que estableci para eliminar los registros, el problema es que nunca antes he realizado una consulta escalar en visual basic, dado que tengo alrededor de 2 meses aprendiendo a programar en este lenguaje.

    No se como establecer esa consulta... por cierto la conexion a la base de datos no la estableci manualmente, utilize la ayuda visual de "origen de datos", simplemente arrastre y solte los controles desde ahi y se establecio la conexion en automatico... la version que uso es visual studio 2015.

    Estoy buscando ejemplos de como realizar esta consulta, pero solo encuentro ejemplos de C# y desconosco este lenguaje...


    • Editado Ne0_Kazu miércoles, 9 de marzo de 2016 21:01
    miércoles, 9 de marzo de 2016 21:00