elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Validaciones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 4 5 Ir Abajo Respuesta Imprimir
Autor Tema: Validaciones  (Leído 26,406 veces)
piwi


Desconectado Desconectado

Mensajes: 439



Ver Perfil
Re: Validaciones
« Respuesta #10 en: 7 Julio 2010, 07:08 am »

Gracias por las respuestas.

Pero al final hay alguna manera de no permitir al usuario abandonar una celda en caso que no cumpla la condición como por ejemplo un campo que tenga que rellenarlo?


En línea

43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 502



Ver Perfil
Re: Validaciones
« Respuesta #11 en: 7 Julio 2010, 15:30 pm »

Bueno este modo es "cutre", pero puedes mejorarlo:

Código
  1. private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
  2.        {
  3.            try
  4.            {
  5.                string pru = dataGridView1.Rows[0].Cells[0].Value.ToString();
  6.            }
  7.            catch (Exception)
  8.            {
  9.                if (dataGridView1.Rows[0].Cells[0].Selected != true) MessageBox.Show("Inserte ID ");
  10.            }
  11.        }

Tienes que cambiar los valores de Rows a medida que se hacen las validaciones, lo que hace es tratar de llenar un string con el valor de la 1era fila y celda cuando se hace click en alguna celda que no sea la 1era, si este esta vacio muestra el mensaje.
Seguro hay otro modo mejor, pero puedes probarlo.


En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Validaciones
« Respuesta #12 en: 7 Julio 2010, 15:37 pm »

En realidad nunca me gustó que el usuario llene data en el Grid View. Ahora, ya todas las dudas se cubrieron menos la parte de la validación no?

Pregunto ahora, qué evento estás usando para validar los datos?

EDIT: Pilla este enlace a ver si te sirve de algo:

http://csharplifestyle.blogspot.com/2009/06/validar-celdas-de-un-datagridview.html
En línea

piwi


Desconectado Desconectado

Mensajes: 439



Ver Perfil
Re: Validaciones
« Respuesta #13 en: 7 Julio 2010, 16:18 pm »

Los eventos que estoy utilizando para validar los datos son cellvalidating con el e.cances y dataerror también con su e.cancel correspondiente.

A mi me gusta tambén más  utilizar en vez de datagrid, campos simples o como se diga (en origen de datos poner modo detalle) pero tengo problemas con un campo que le he dicho que es de tipo combobox.

Ahora estoy intentando averigual como puedo insertar el código (un numerico) pero quiero hacerlo yo y no que sea autoincremental.

Con el problema con el que me encuentro que no soy capaz de capturar  la linea insertada ya que el evento se lanza antes de insertar la línea y es donde lo capturo por lo que siempre me devuelve row 0
En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Validaciones
« Respuesta #14 en: 7 Julio 2010, 16:30 pm »

Los eventos que estoy utilizando para validar los datos son cellvalidating con el e.cances y dataerror también con su e.cancel correspondiente.
Bueno con los enlaces que te pasé debes solucionar el problema. Sino postea el código de la validación.


Ahora estoy intentando averigual como puedo insertar el código (un numerico) pero quiero hacerlo yo y no que sea autoincremental.
Simplemente lo pones, y ya, Que no sea Identity en la Base de Datos y lo metes en la consulta del insert.

Con el problema con el que me encuentro que no soy capaz de capturar la linea insertada ya que el evento se lanza antes de insertar la línea y es donde lo capturo por lo que siempre me devuelve row 0
A ver, que no entendí bien, estás intentando guardar en el evento de cellvalidating? Puedes intentar guardar en el evento RowLeave o mucho mejor en el RowValidated despues de pasar por un RowValidating.
En línea

piwi


Desconectado Desconectado

Mensajes: 439



Ver Perfil
Re: Validaciones
« Respuesta #15 en: 7 Julio 2010, 21:28 pm »

En el momento de dar al nuevo registro en bindingdourcenavigation, quiero meter en la celda un valor pero no se en que evento lo tengo que hacer porque no se seleccionar bien la nueva fila del datagridview
En línea

piwi


Desconectado Desconectado

Mensajes: 439



Ver Perfil
Re: Validaciones
« Respuesta #16 en: 8 Julio 2010, 08:24 am »

Hola

Estoy haciendo pruebas de lo más sencillo y no encuentro la solución.

Estoy intentando mantener una tabla con dos campos:

idfabricante clave primaria no nula
d_fabricante

Para ello he creado un origne de datos de esta tabla y lo he arrastrado al formulario.

He codificado los siguientes eventos:

En este evento he añadido a mayores el chequeo del validate por si no pasa la validación que no siga con los cambios.

   Private Sub FABRICANTEBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FABRICANTEBindingNavigatorSaveItem.Click
        Dim li_retorno As Integer

        li_retorno = Me.Validate()

        If li_retorno = -1 Then
            Me.FABRICANTEBindingSource.EndEdit()
            Me.TableAdapterManager.UpdateAll(Me.FabricanteDataSet)
        End If

    End Sub

Esto ha sido creado por vb al arrastrar el origen de datos.

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: esta línea de código carga datos en la tabla 'FabricanteDataSet.FABRICANTE' Puede moverla o quitarla según sea necesario.
        Me.FABRICANTETableAdapter.Fill(Me.FabricanteDataSet.FABRICANTE)

    End Sub

Aquí compruebo si idfabricante está nulo

  Private Sub FABRICANTEDataGridView_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles FABRICANTEDataGridView.CellValidating
          If FABRICANTEDataGridView.Columns(e.ColumnIndex).Name = "DataGridViewTextBoxColumn1" Then
            If e.FormattedValue IsNot Nothing AndAlso _
                String.IsNullOrEmpty(e.FormattedValue.ToString()) Then

                e.Cancel = True
            Else
                e.Cancel = False
            End If
        End If

    End Sub

En este he metido un mensaje de aviso por si dan a guardar o al nuevo en bindingnavigator

  Private Sub FABRICANTEDataGridView_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles FABRICANTEDataGridView.DataError
        MsgBox(e.Exception.Message)
        e.Cancel = True
    End Sub


Validación de la fila

  Private Sub FABRICANTEDataGridView_RowValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles FABRICANTEDataGridView.RowValidating
        If FABRICANTEDataGridView(0, e.RowIndex).Value Is DBNull.Value Then
            MsgBox("Error")
            e.Cancel = True
        Else
            e.Cancel = False


        End If
    End Sub

Los dos siguientes son de prueba pero me da error de nulo por lo que creo que no me inserta el valor

    Private Sub FABRICANTEDataGridView_RowLeave(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles FABRICANTEDataGridView.RowLeave
        If FABRICANTEDataGridView(0, e.RowIndex).Value Is DBNull.Value Then
            FABRICANTEDataGridView(0, e.RowIndex).Value = UltimoCodigo()
        End If

    End Sub

    Private Sub FABRICANTEDataGridView_RowValidated(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles FABRICANTEDataGridView.RowValidated
        If String.IsNullOrEmpty(FABRICANTEDataGridView(0, e.RowIndex).Value) Then
            FABRICANTEDataGridView(0, e.RowIndex).Value = UltimoCodigo()
        End If
    End Sub

Función que me retorna el último id

  Private Function UltimoCodigo() As Integer

        Dim Conexion As New SqlConnection("Data Source=192.168.1.100;Initial Catalog=PRUEBAS;user id = piwi; password =piwi;")
        Dim Datos As New DataSet

      Dim li_ultimo As Integer

        Conexion.Open()

        Dim Adaptador As New SqlDataAdapter("SELECT MAX(IDFABRICANTE) FROM FABRICANTE", Conexion)

        Adaptador.Fill(Datos)

        li_ultimo = Datos.Tables(0).Rows(0).Item(0)

        li_ultimo = li_ultimo + 1

        Conexion.Close()

        Return li_ultimo

    End Function


Con esto no me funciona, donde tengo que asignar el valor al idfabricante para que lo tenga antes de que cambie de fila o que de al boton guardar?
« Última modificación: 8 Julio 2010, 08:33 am por piwi » En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Validaciones
« Respuesta #17 en: 8 Julio 2010, 15:20 pm »

Hola,

Primero, en el evento DataError, no se por qué estás haciendo e.Cancel = True. Eso no lo deberías hacer, ese evento es para controlar luego de que se produce un error.

El Id del fabricante tienes que hacerlo al darle guardar, SIEMPRE, porque imagínate que lo pones al seleccionar la fila, por ejemplo; y te sale el ID 10001 y en otro equipo alguien abre la aplicación y y selecciona otra fila, le aparece el ID 10001, entonces lo que pasa es que al guardar se va a producir un error. Por lo que es mejor SIEMPRE que crees el ID en la base de datos :)

EDIT, utiliza las etiquetas Geshi para postear código.
En línea

piwi


Desconectado Desconectado

Mensajes: 439



Ver Perfil
Re: Validaciones
« Respuesta #18 en: 8 Julio 2010, 17:33 pm »

Probare lo que me dices. En el evento de borrar quiero poner el mensaje si esta seguro pero no soy capaz de parar el borrado ya que el return no funciona y sigue hacia delante.
Lo de calcular el id por la base de datos se hace desde vb? No quiero utilizar los autonumericos
En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Validaciones
« Respuesta #19 en: 8 Julio 2010, 17:45 pm »

¿Cuál es el problema de usar autonuméricos?

Ah ok, lo de si está seguro o no, tiene que ser ANTES de comenzar el borrado :P
En línea

Páginas: 1 [2] 3 4 5 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
validaciones en textbox
.NET (C#, VB.NET, ASP)
basickdagger 3 4,270 Último mensaje 13 Septiembre 2011, 18:44 pm
por basickdagger
Ayuda con Validaciones
.NET (C#, VB.NET, ASP)
tukubanitorico 0 1,676 Último mensaje 5 Marzo 2012, 20:26 pm
por tukubanitorico
Problema con validaciones
Programación C/C++
ZedGe 2 2,160 Último mensaje 9 Diciembre 2012, 07:44 am
por rir3760
Validaciones 2 digitos en c++
Programación C/C++
socram7 3 2,618 Último mensaje 13 Junio 2013, 23:24 pm
por pacoperico
Validaciones TextBox
Programación Visual Basic
MC.cover 2 2,178 Último mensaje 6 Noviembre 2016, 01:49 am
por MC.cover
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines