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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


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


Desconectado Desconectado

Mensajes: 439



Ver Perfil
Validar conjunto de datos.
« en: 27 Julio 2010, 12:11 pm »

Hola.

Me he encontrado con este manual como validar los conjuntos de datos.

http://msdn.microsoft.com/es-es/library/ms171930(v=VS.80).aspx

La validación la hago sobre un campo que es PK y busco si ya existe en la base de datos. Al probarlo me funciona y me muestra el mensaje de error que ya existe este valor pero al dar a guardar sigue intentando guardar los cambios y me da error de clave duplicada.

Para solventarlo he hecho lo siguiente (que me parece una chapuza) en el BindingNavigatorSaveItem_Click

If String.IsNullOrEmpty(ErrorProvider1.GetError(IDTextBox)) Then
        Me.Validate()
        Me.LICENCIASBindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me.LicenciasDataSet)
else
   msgbox("Existen errores")
end if

Faltaría algo de código para controlar los errores, esta como a medias, aunque me muestre el error, sigue con la grabación.

La solución de arriba me funciona cuando es el boton guardar pero si le doy al nuevo o a las flechas de navegación también guarda los valores automaticamente, donde están el código que guarda los datos por ejemplo al dar al botón nuevo?

Gracias de antemano.



En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Validar conjunto de datos.
« Respuesta #1 en: 27 Julio 2010, 21:27 pm »

Dos cosas,  una no se si seguiste el manual bien porque no posteas el código completo, si quieres hazlo en pastebin.com y nos pasas el link.

Y segundo, que no entendí bien el problema, acuerdate siempre de explicar bien el escenario. Por ejemplo, tengo X controles, la base de datos es TAL, El tipo de conexión, la conexión no la hago a mano, sino con Controles SqlDataSources, etc..

De ésta manera es mucho más fácil para entender el problema y darle una solución.. :) Saludos!


En línea

MaLkAvIaN_NeT

Desconectado Desconectado

Mensajes: 213


MaLkAvIaN_NeT


Ver Perfil WWW
Re: Validar conjunto de datos.
« Respuesta #2 en: 28 Julio 2010, 03:00 am »

Amigo no se que quieres hacer pero las pk sirven precisamente para validar que no existan claves duplicadas,, no perjudiques el SGDB buscando si la clave ya existe, esas operaciones puedes hacerlas en el cliente.
En línea

a por las buenas ideas
[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Validar conjunto de datos.
« Respuesta #3 en: 28 Julio 2010, 06:39 am »

Casi nunca debes haces validaciones de PK, debido a que es más recomendado usar una columna Identity, si ese registro necesita un código que vaya a ser usado fuera del sistema en sí, ejemplo código de barras, serial o lo que sea, eso no es el PK, sino un valor más del registro..

Te recomiendo que sigas ésta idea,

Un saludo!
En línea

piwi


Desconectado Desconectado

Mensajes: 439



Ver Perfil
Re: Validar conjunto de datos.
« Respuesta #4 en: 28 Julio 2010, 07:24 am »

Gracias por las respuestas.

Os pongo un ejemplo. Creo una tabla llamada personas cuyos campos son dni, nombre, apellido. Como el campo DNI es único entonces lo pongo como la clave primaria. Por una lado porque haré busquedas por él y por otro lado que no puede ser nulo y nunca será duplicado.
Teniendo la BD lista ahora desde el vb creo un origen de datos y lo arrastro al formulario en forma de campos sueltos (modo detalle y no datagridview).
Hasta aquí no he hecho nada, y vb me ha creado los tres campos: dni, nombre y appelido enllazados a datos, un bindingsource, un tableadapter, tableadaptermanager y bindingnavigator. Además de eso utilizo un ErrorProvider para mostrar los posibles mensajes de error.
Lo que me queda es realizar las validaciones para que no me salte una excepcion que que el campo dni es único y que no esté duplicado, es ahí donde he intentado realizarlo a nivel de dataset como dice aquí http://msdn.microsoft.com/es-es/library/ms171930 pero me he encontrado con el problema que pongo en el primer post.
Otra duda que tengo, automáticamente me ha creado el código en en evento saveitem_click de bindingnavigator que ahí puedo realizar los chequeos pero el problema está que también está guardadondo automaticamente cuando doy a las flechas para cambiar de registro o cuando doy a un nuevo registro.
En definitiva, lo que quiero hacer es chequear que el campo dni no esté vacío ni que esté duplicado, donde lo tengo que hacer, a nivel de dataset, en validación del campo?
En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Validar conjunto de datos.
« Respuesta #5 en: 28 Julio 2010, 15:00 pm »

Sin importar si el campo DNI es único, yo, personalmente no recomiendo que lo coloques como PK, sino que además crees un ID Autonumérico (Identity en MsSql, Autoincremental en MySql), Qué pasa si creas un registro con un DNI "E123" por ejemplo, y más adelante te dicen que lo escribieron mal, muchas tablas se van a ver afectadas, y por ende tu sistema, por lo que es siempre mejor colocar Autonuméricos en la mayoría de los casos.

Ahora, para validar los datos cuando usas un BindingNavigator, debes suscribirte a los eventos de los controles enlazados (a los que les haces el binding) y no al BindingNavigator ni al Source. Por ejemplo, en el caso de un DataGridView te suscribes al evento CellValidating, CellValidated, RowValidating o RowValidated, lo mismo pasa en los demás controles.

Por ejemplo en un TextBox
Código
  1. private void DNITextBox_Validating(object sender, CancelEventArgs e)
  2. {
  3.    if (string.IsNullOrEmpty(taskStateNameTextBox.Text))
  4.    {
  5.        personaErrorProvider.SetError(DNITextBox, "El campo DNI no puede ser vacío");
  6.        e.Cancel = true;
  7.    }
  8.    else
  9.    {
  10.        personaErrorProvider.SetError(DNITextBox, string.Empty);
  11.     }
  12. }
  13.  

Fíjate en la línea subrayada, el los controles de databinding son llamados a la hora de pedir los datos para ser mandardos al datasource, entonces a todos se les ejecuta el método Validating y Validated. En Validating es donde haces todas las validaciones.

Un saludo, espero te funcione!
En línea

piwi


Desconectado Desconectado

Mensajes: 439



Ver Perfil
Re: Validar conjunto de datos.
« Respuesta #6 en: 28 Julio 2010, 16:59 pm »

Gracias por todo.

Lo probaré. De momento he solucionado la mayoría de mis males quitando del bindingnavigator de los botones las propiedades de movefirsitem y las demás y lo hago a mano así tengo más control.
El problema que veo en el código que me has puesto es si no paso por el campo dni y le doy a guardar, me dará error ya que ni ha pasado por validating.

Un saludo
En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Validar conjunto de datos.
« Respuesta #7 en: 29 Julio 2010, 00:17 am »

A qué te refieres , "si no pasas por el campo"?
En línea

piwi


Desconectado Desconectado

Mensajes: 439



Ver Perfil
Re: Validar conjunto de datos.
« Respuesta #8 en: 29 Julio 2010, 07:06 am »

Me refiero que el validating de un textbox salta cuando el texbox pierde el foco.
En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Validar conjunto de datos.
« Respuesta #9 en: 29 Julio 2010, 16:03 pm »

Cuando cambias el registro actual con el BindingNavigator, se validarán el "binding Value" actual para ese control. Entonces el evento Validating debería funcionar.

Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¡ Conjunto de acertijos faciles !
Desafíos - Wargames
Garfield07 0 5,494 Último mensaje 4 Enero 2011, 18:06 pm
por Garfield07
¿Cómo validar la entrada de un tipo de datos en C++ o C?
Programación C/C++
theluigy13etv 0 7,138 Último mensaje 27 Junio 2011, 03:33 am
por theluigy13etv
Validar ingreso de datos en C Sharp
.NET (C#, VB.NET, ASP)
DanielPy 3 3,263 Último mensaje 14 Julio 2013, 04:04 am
por DanielPy
Validar la entrada de datos C
Programación C/C++
mester 1 2,067 Último mensaje 6 Octubre 2015, 20:47 pm
por ivancea96
¿Como validar datos?
Programación C/C++
Riverxz 2 2,404 Último mensaje 1 Septiembre 2016, 01:16 am
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines