Validaciones

Iniciado por piwi, 5 Julio 2010, 20:58 PM

0 Miembros y 2 Visitantes están viendo este tema.

piwi

Hola.

Cual es la manera correcta de valida los datos de un datagridview enlazado a un origen de datos?

Cuando tenemos un PK de una tabla, como controlo que no tenga un nulo?

Con CellValidating parece que funciona hasta que cambio de registro y me intenta guardar los cambios pasandose por el forro e.cancel

Como puedo interrumpir el evento BindingNavigatorSaveItem?

Me estoy volviendo loco y no soy capaz de valida los datos introducidos por el usuario en un datagridview.


Un saludo.

[D4N93R]

Cual es la manera correcta de valida los datos de un datagridview enlazado a un origen de datos?
Que tipo de validaciones?


Cuando tenemos un PK de una tabla, como controlo que no tenga un nulo?
En la base de datos lo pones primary key y not null


Con CellValidating parece que funciona hasta que cambio de registro y me intenta guardar los cambios pasandose por el forro e.cancel
Tendría que ver el código.


Como puedo interrumpir el evento BindingNavigatorSaveItem?


Me estoy volviendo loco y no soy capaz de valida los datos introducidos por el usuario en un datagridview.
Google?

http://msdn.microsoft.com/en-us/library/7ehy30d4(VS.80).aspx
http://msdn.microsoft.com/en-us/library/ykdxa0bc.aspx

piwi

Cita de: D4N93R en  6 Julio 2010, 05:11 AM
Cual es la manera correcta de valida los datos de un datagridview enlazado a un origen de datos?
Que tipo de validaciones?

Me refiero a una tabla con un campo código (PK) y una descripción. Creo el origen de datos y lo arrastro al formulario. En que evento o eventos tengo que realizar la validación que antes de guardar el campo código tenga un valor y que este no esté repetido?

Cuando tenemos un PK de una tabla, como controlo que no tenga un nulo?
En la base de datos lo pones primary key y not null

Eso ya lo tengo y por eso me da error si el usuario solamente introduce la descripción y le da al grabar. Me refiero desde vb.


Con CellValidating parece que funciona hasta que cambio de registro y me intenta guardar los cambios pasandose por el forro e.cancel
Tendría que ver el código.

El cellvalidating cuando utilizo e e.cancel = true no me dejar salir de la celda que se está validando pero me deja cambiar del registro con el ratón. Como puedo hacer para que no salga de la celda de ninguna manera hasta que los datos estén validados?


Como puedo interrumpir el evento BindingNavigatorSaveItem?


Me estoy volviendo loco y no soy capaz de valida los datos introducidos por el usuario en un datagridview.
Google?

http://msdn.microsoft.com/en-us/library/7ehy30d4(VS.80).aspx
http://msdn.microsoft.com/en-us/library/ykdxa0bc.aspx

Ahora miro los link pero por más que busco en google, no encuentro un código que funcione al 100% y haciendo pruebas siempre acabo con el mensaje de que la clave no puede ser nula.

piwi

Ya he visto estos link y todo esto está bien mientras que no utilice el ratón, me controla bien no salir del campo pero en el momento que utilizo el ratón me permite dejar el regisro con la celda sin valida y entonces cuando doy a grabar da el error

[D4N93R]

Y en la base de datos, esas celdas permiten NULL?

piwi

Hola.

soy muy malo explicándome. Voy a poner un ejemplo muy simple.

Tenemos una tabla con dos campos ID (este campo seria clave primaria por lo tanto no permite nulos ) y DESCRIPCION (un campo que permite nulos)

Creo un origen de datos y lo arrastro al form por lo que me crea un datagridview en el formulario.

Lo que tengo que hacer es no permitir grabar si el campo ID es nulo. Pensé que con el evento cellvalidation lo podía controlar utilizando el e.cancel pero solamente me funciona cuando doy a la tabulación y no me permite cambiar de celda pero cuando utilizo el rato y cambio de fila me lo permite y me situo en otra fila donde el cellvalidation lo hace en esta que todo está bien pero cuando doy a guardar me falla el registro donde falta ID que lo he dejado a nulo en el datagridview.

Lo que quiero saber que eventos debo utilizar para validar datos. Además del evento cellvalidation, tengo que codficar algun otro?

Un saludo

43H4FH44H45H4CH49H56H45H

El ID debe crearse en la BD (autoincremento y demas), no debes hacerlo en tu aplicacion.

-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

Shell Root

Bueno, no leí todo el post así que puedo estar equivocado. Pero lo que dice 43H4FH44H45H4CH49H56H45H <Fucking se registro estando beodo?>. Tal vez, puede hacerse así, pero en ocasiones se pierde algunos ID's, por eso siempre prefiero <Dependiendo del tiempo para la terminación de la aplicación y de la complejidad de ella> generar esos ID's dentro de mi aplicación. Así podré buscar e intentar ocupar los ID's que no están siendo usados por alguna u otra razón.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

43H4FH44H45H4CH49H56H45H

Para aplicaciones pequeñas no creo que haya problema hacerlo de un modo u otro, pero si tenemos una BD con bastantes registros?
Cita de: shellroot@alex-laptop:~$ en  7 Julio 2010, 00:19 AMgenerar esos ID's dentro de mi aplicación. Así podré buscar e intentar ocupar los ID's que no están siendo usados por alguna u otra razón.

Que la aplicación busque un Id disponible en una cantidad grande de registros ya es otra cosa...

-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]

Cita de: 43H4FH44H45H4CH49H56H45H en  7 Julio 2010, 00:53 AM
Para aplicaciones pequeñas no creo que haya problema hacerlo de un modo u otro, pero si tenemos una BD con bastantes registros?
Cita de: shellroot@alex-laptop:~$ en  7 Julio 2010, 00:19 AMgenerar esos ID's dentro de mi aplicación. Así podré buscar e intentar ocupar los ID's que no están siendo usados por alguna u otra razón.

Que la aplicación busque un Id disponible en una cantidad grande de registros ya es otra cosa...

Exacto, es diferente, para la creación de registros, ponle Identity 1,1, es decir, que comience del 1 y que vaya de 1 a 1, o a tu preferencia.

Nunca crees los ID en la aplicación, a menos de que el modelo de negocios lo requiera.

saludos