• Viernes 1 de Noviembre de 2024, 11:27

Autor Tema:  Re: Obligar A Un Campo De Bd A Contener Null  (Leído 3105 veces)

poduma

  • Miembro activo
  • **
  • Mensajes: 25
    • Ver Perfil
Re: Obligar A Un Campo De Bd A Contener Null
« en: Miércoles 29 de Marzo de 2006, 12:05 »
0
Buenas. Tengo dos tablas: Cliente y Deposito (relacion N a 1). En una fila de Cliente, quiero obligar en el campo IdD a poner un valor NULL. Cuando creo una fila nueva no tengo problema, con no meter nada me llega. Pero cuando quiero modificar una fila, me da una excepcion si lo hago así:


/* esto esta dentro de un foreach (DataRow MiFila in referencia.Rows) siendo referencia un DataTable que apunta a la tabla"Cliente" en un DataSet */

//si el cliente esta asociado al deposito y el id del mismo coincide, procedo
if ((MiFila ["AsociadoD"]).ToString() =="True"  && (MiFila ["IdD"]).ToString()==id){

   MiFila.BeginEdit();
       
           MiFila ["AsociadoD"] = 0;  //no asociar a ningun deposito
           MiFila ["IdD"] = System.Data.SqlTypes.SqlInt64.Null;
   
    MiFila.EndEdit();

}//endif


esto me da la siguiente excepcion: No se puede almacenar <Nulo> en la columna IdD. el tipo esperado es Int64.


Puse en la cabecera del form using System.Data.SqlTypes, pero ni asi.


A ver si sabeis que hacer que es un problemon, me casca todo el prog por esto.  :angry:

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Obligar A Un Campo De Bd A Contener Null
« Respuesta #1 en: Miércoles 29 de Marzo de 2006, 12:27 »
0
y estas seguro que ese mismo campo en la bd te aguanta null?
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

poduma

  • Miembro activo
  • **
  • Mensajes: 25
    • Ver Perfil
Re: Obligar A Un Campo De Bd A Contener Null
« Respuesta #2 en: Miércoles 29 de Marzo de 2006, 17:30 »
0
si pq si abro la tabla en SqlServer, en ese campo, los clientes que haya creado y aun no los he asociado nunca a ningun deposito tienen en la casilla el valor <NULL>

Ademas, si en la tabla (en sqlserver), me coloco en ese campo en una fila que tenga un valor (pej 3) y le doy a CONTROL + 0 (esto lo lei en algun foro), se me pone el valor de ese campo en NULL, pero desde C# no consigo hacerlo !!


Gracias por contestar.  A ver si con esta explicacion me ayuda alguien  :(

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Obligar A Un Campo De Bd A Contener Null
« Respuesta #3 en: Miércoles 29 de Marzo de 2006, 18:03 »
0
MiFila ["IdD"] = null;

o asi:

MiFila ["IdD"] = '\0';
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

hellscream

  • Miembro activo
  • **
  • Mensajes: 95
    • Ver Perfil
Re: Obligar A Un Campo De Bd A Contener Null
« Respuesta #4 en: Miércoles 29 de Marzo de 2006, 20:54 »
0
Cita de: "JuanK"
MiFila ["IdD"] = null;

o asi:

MiFila ["IdD"] = '\0';
Eso no funciona si la columna es de tipo int...

Lo correcto es así:
MiFila ["IdD"] = DBNull.Value;

poduma

  • Miembro activo
  • **
  • Mensajes: 25
    • Ver Perfil
Re: Obligar A Un Campo De Bd A Contener Null
« Respuesta #5 en: Miércoles 29 de Marzo de 2006, 21:03 »
0
Me fallaron los dos.

EDITO: Gracias a los dos !! Ya lo solucioné.  me fue bien con MiFila ["IdD"] = DBNull.Value;.

Al no tener las tablas relacionadas, lo que me dijiste (JuanK) me funcionaba, pero al relacionarlas no. En cambio, si las tengo relacionadas solo me funciona con lo que me dijo hellscream.

Os dejo las excepciones que me daba en ambos casos, por si alguien entra aqui y quiere saber como responde C#  Un saludo y gracias de nuevo tios  :P


 Con MiFila ["IdD"] = null;

 salta la excepcion: No puede establecer el valor                             de la columna 'IdD' en null. Utilice DBNull en su lugar


 Con MiFila ["IdD"] = '\0';  almacena bien el 'null'  en ese campo en el dataset (al menos no salta ninguna excepcion), pero al actualizar la tabla Cliente en la BD da esta excepcion

 Instruccion UPDATE en conflicto con la restriccion COLUMN FOREIGN KEY 'FK_Cliente_Deposito'. El conflicto ha aparecido en la base de datos 'Gestion', tabla 'Deposito', column 'IdD'