• Jueves 28 de Marzo de 2024, 17:50

Autor Tema:  control bindingNavigator  (Leído 5913 veces)

jpaler

  • Miembro MUY activo
  • ***
  • Mensajes: 479
    • Ver Perfil
control bindingNavigator
« en: Lunes 22 de Abril de 2013, 19:48 »
0
muy wenas...
intento usar el control bindingNavigator para moverme  a traves de una tabla con le fin de ver, insertar, modificar y eliminar datos de la misma. cuando inserto un nuevo registro y uso los botones de desplazamiento me sale este error:

       la columna 'id' no permite valores nulos

Quisiera saber como puedo solucionar este error, soy nuevo en C# asi q no tengo mucho conocimiento.

Muchas gracias....

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:control bindingNavigator
« Respuesta #1 en: Lunes 22 de Abril de 2013, 22:58 »
0
Buenas jpaler

Mira, el error:

Citar
la columna 'id' no permite valores nulos

No es de C#, es del motor de base de datos, seguramente tienes definida tu columna id como not null, entonces cada vez que insertas una fila, esta aparece en blanco, pero si te mueves, al estar definida como not null, no puede quedar en blanco y de ahi el error.

La solucion seria que en tu motor de base de datos utilices alguna sentencia para generar automaticamente un id cada vez que hagas un insert, de esa forma la colmna id no quedara vacia (null), si utilizas SQL Server busca informacion sobre identity, en caso contrario revisa la documentacion del motor de base de datos que utilices sobre generar autimaticamente una numeracion.

Otra opcion tambien seria que valides que el id no quede en blanco, si es un textbox el que esta enlazado al Bindigng Navigator, utiliza el evento Validating del Textbox, para verificar que el Textbox enlazado al campo id, no quede en blanco o vacio.

Espero que la informacion te sirva.

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

jpaler

  • Miembro MUY activo
  • ***
  • Mensajes: 479
    • Ver Perfil
Re:control bindingNavigator
« Respuesta #2 en: Martes 23 de Abril de 2013, 00:51 »
0
gracias profesorx.....

venga y le comento lo siguiente: la base de datos esta en mysql y el campo id es llave primaria y not null.

id es un codigo q debe ingresar el usuario, asi q no es autoincremental.

otra cosa... yo lo q hago es establecer el origen de datos y arrastrar hasta el formulario los campos de la tabla y de una
visual estudio agrega el bindingnavigator, el bindingsource y los demas elementos necesarios, yo no hago mas nada.

al correr la aplicacion, se supone q ya me debe permitir agregar, eleminar, modificar y editar datos de la tabla, pero no es asi,
pues como le digo no se lo q tengo q hacer para lograr lo antes mensionado y ademas de eso me sale el error de que el campo
id es null..... Y NO SE POR QUE SALE ESO... SI YO CUANDO AGREGO UN REGSITRO NO LO DEJO VACIO....

Le agradezco su ayuda, es q estoi iniciandome en c# y este error no me deja continuar con ello.....


ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:control bindingNavigator
« Respuesta #3 en: Martes 23 de Abril de 2013, 21:22 »
0
Hola jpaler mira te sere franco, en lo personal no me gusta mucho el bindingnavigator, ¿porque? porque su funcionalidad es muy limitada, esta bien para hacer una maqueta y un explorador de datos rapido, sin ncecesidad de escribir mucho codigo, pero dado que es codigo autogenerado, te quita mucha libertad, y ademas ese codigo autogenerado no es facil de modificar manualmente.

Ademas, mencionas que utilizas un campo id como clave primaria no autogenerado, eso te dara muchos problemas y dolores de cabeza (creeme, ya pase por ahi), piensa solamente, una clave primaria debe ser unica y si la capturas manualmente, hay riesgo de que el usuario por accidente trate de capturar la misma id dos veces, y el bindingnavigator no tiene opciones para verificar que las claves no se repitan, entocnes estaras obteniendo multiples errores y excepciones a la hora de capturar, asi que ya te imaginaras.

Lo mejor desde mi punto de vista y que al menos a mi me ha funcionado bien, es realizar el acceso a la base de datos de manera manual, sin asistentes, de esa forma tienes control total, es codigo que tu escribes y no autogenerado, y es mas facil de modificar, al principio cuesta trabajo acostumbarrse, pero a la larga los beneficios son mayores.

Yo tengo un codigo para acceso manual a una base de datos SQL Server en un proyecto, pero desafortudadamente es muy largo y tiene informacion de una empresa para la que estoy trabajando, asi que no te puedo pasar ese codigo, pero dejame hacerte una version reducida basica y lo publico mañana. Con eso ya tendras una mejor idea de que hacer y ademas es facilmente adaptable a MySQL, simplemente tendras que cambiar el conector y las referencias de SQL Server por las de MySQL.

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

DiabloRojo

  • Miembro MUY activo
  • ***
  • Mensajes: 220
    • Ver Perfil
Re:control bindingNavigator
« Respuesta #4 en: Miércoles 24 de Abril de 2013, 03:24 »
0
Qué tal jpaler?

Revisa esto te puede aclarar algunas cosas...

http://www.c-sharpcorner.com/UploadFile/718fc8/working-with-bindingnavigator-control/

Saludos
« última modificación: Miércoles 24 de Abril de 2013, 03:28 por DiabloRojo »

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:control bindingNavigator
« Respuesta #5 en: Miércoles 24 de Abril de 2013, 03:38 »
0
Lo prometido es deuda, dejo un ejemplo sencillo de como utilizar BindingSource Y ErrorProvider, lo pongo en un tema diferente y con un titulo descriptivo para que sea facilmente utilizable para cualquier otra persona, a continuacion te dejo el enlace :)

http://solocodigo.com/48066/ejemplo-bindingsource-y-errorprovider-en-c/

Saludos

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================