como poner a null un campo datetime en un datatable

06/02/2007 - 14:42 por gremlin | Informe spam
Hola,

Tengo desarrollada una aplicación que trabaja con bastantes campos de
fecha, el problema viene cuando quiero listar informes, tenia pensado
hacerlo con un DataTable y un Reporte Crystal Reports, pero me
encuentro que el DateTime del datatable no acepta valores null.

¿me podeis dar alguna solucion para subsanar el problema?

gracias.

Preguntas similare

Leer las respuestas

#6 gremlin
06/02/2007 - 15:54 | Informe spam
lo solucionare poniendo fechas 01/01/1900

si alguien tiene alguna otra solucion que lo publique please.


On 6 feb, 15:48, "gremlin" wrote:
en la base de datos tengo datos datetime Nulos.

la pregunta es ¿hay alguna manera de que el dataset no me lance la
excepcion?

detalle de la excepcion:

Consulte el final de este mensaje para obtener más detalles sobre cómo
invocar a la depuración
Just-In-Time (JIT) en lugar de a este cuadro de diálogo.

************** Texto de la excepción **************
System.Data.ConstraintException: No se pudieron habilitar las
restricciones. Una o varias filas contienen valores que infringen las
restricciones NON-NULL, UNIQUE o FOREIGN-KEY.
en System.Data.DataTable.EnableConstraints()
en System.Data.DataTable.set_EnforceConstraints(Boolean value)
en System.Data.DataTable.EndLoadData()
en System.Data.Common.DataAdapter.FillFromReader(DataSet dataset,
DataTable datatable, String srcTable, DataReaderContainer dataReader,
Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn,
Object parentChapterValue)
en System.Data.Common.DataAdapter.Fill(DataTable[] dataTables,
IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
en System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset,
DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String
srcTable, IDbCommand command, CommandBehavior behavior)
en System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables,
Int32 startRecord, Int32 maxRecords, IDbCommand command,
CommandBehavior behavior)
en System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
en
NominaMASA.DataSetNominaMASAImpTableAdapters.DataTable1TableAdapter.Fill(Da­taTable1DataTable
dataTable, Int32 IdCentro, Nullable`1 dtmMes) en C:\ATOMIUM_FW2\ATOMIUM
\NominaMASA\DataSetNominaMASAImp.Designer.cs:línea 2439
en NominaMASA.frmEstadoNomina.btPrint_Click(Object sender,
EventArgs e) en C:\ATOMIUM_FW2\ATOMIUM\NominaMASA
\frmEstadoNomina.cs:línea 814
en System.Windows.Forms.Control.OnClick(EventArgs e)
en System.Windows.Forms.Button.OnClick(EventArgs e)
en System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
en System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons
button, Int32 clicks)
en System.Windows.Forms.Control.WndProc(Message& m)
en System.Windows.Forms.ButtonBase.WndProc(Message& m)
en System.Windows.Forms.Button.WndProc(Message& m)
en
System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
en
System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
en System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32
msg, IntPtr wparam, IntPtr lparam)

************** Ensamblados cargados **************
mscorlib
Versión del ensamblado: 2.0.0.0
Versión Win32: 2.0.50727.42 (RTM.050727-4200)
Código base: file:///D:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/
mscorlib.dll
-
IRIS
Versión del ensamblado: 1.0.0.0
Versión Win32: 1.0.0.0
Código base: file:///C:/ATOMIUM_FW2/ATOMIUM/ATOMIUM/bin/Debug/
IRIS.exe
-
LogDat

On 6 feb, 15:43, carlosmsr
wrote:



> cuando dices que no acepta null es porque intentaste asignarle null ?
> es un problema de compatibilidad de tipos (un error de cast) o es que no
> esta permitido asignarle un valor a la variable o propiedad (un error de
> permiso).

> si es un problema de cast, entonces podrias probar no asignando directamente
> null, sino buscando la referencia dentro del espacio de nombres
> correspondiente al tipo de dato que utiliza ese tu data table, por ejemplo:

> System.Data.SqlTypes.SqlDateTime.Null

> "gremlin" wrote:
> > Hola,

> > Tengo desarrollada una aplicación que trabaja con bastantes campos de
> > fecha, el problema viene cuando quiero listar informes, tenia pensado
> > hacerlo con un DataTable y un Reporte Crystal Reports, pero me
> > encuentro que el DateTime del datatable no acepta valores null.

> > ¿me podeis dar alguna solucion para subsanar el problema?

> > gracias.- Ocultar texto de la cita -

> - Mostrar texto de la cita -- Ocultar texto de la cita -

- Mostrar texto de la cita -
Respuesta Responder a este mensaje
#7 carlosmsr
06/02/2007 - 16:09 | Informe spam
En la primera linea de la excepcion tenes un dato importante.
-> No se pudieron habilitar las restricciones. Una o varias filas
contienen valores que infringen las restricciones NON-NULL, UNIQUE o
FOREIGN-KEY.
Seguramente, esta columna que tiene los datos de tipo DateTime participa en
la definicion de tu dataset de una relacion o un constrain por lo cual esta
obligada a tener datos.
Agregarle datos te puede servir para evitar la excepcion, pero deberias
asegurarte de que realmente la definicion del dataset (las propiedades de la
tablas y las relacions) se corresponden con lo que necesitas. Si no, podrias
encontrartes con nuevas excepciones al intentar manipular los datos.

"gremlin" wrote:

lo solucionare poniendo fechas 01/01/1900

si alguien tiene alguna otra solucion que lo publique please.


On 6 feb, 15:48, "gremlin" wrote:
> en la base de datos tengo datos datetime Nulos.
>
> la pregunta es ¿hay alguna manera de que el dataset no me lance la
> excepcion?
>
> detalle de la excepcion:
>
> Consulte el final de este mensaje para obtener más detalles sobre cómo
> invocar a la depuración
> Just-In-Time (JIT) en lugar de a este cuadro de diálogo.
>
> ************** Texto de la excepción **************
> System.Data.ConstraintException: No se pudieron habilitar las
> restricciones. Una o varias filas contienen valores que infringen las
> restricciones NON-NULL, UNIQUE o FOREIGN-KEY.
> en System.Data.DataTable.EnableConstraints()
> en System.Data.DataTable.set_EnforceConstraints(Boolean value)
> en System.Data.DataTable.EndLoadData()
> en System.Data.Common.DataAdapter.FillFromReader(DataSet dataset,
> DataTable datatable, String srcTable, DataReaderContainer dataReader,
> Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn,
> Object parentChapterValue)
> en System.Data.Common.DataAdapter.Fill(DataTable[] dataTables,
> IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
> en System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset,
> DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String
> srcTable, IDbCommand command, CommandBehavior behavior)
> en System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables,
> Int32 startRecord, Int32 maxRecords, IDbCommand command,
> CommandBehavior behavior)
> en System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
> en
> NominaMASA.DataSetNominaMASAImpTableAdapters.DataTable1TableAdapter.Fill(Da­taTable1DataTable
> dataTable, Int32 IdCentro, Nullable`1 dtmMes) en C:\ATOMIUM_FW2\ATOMIUM
> \NominaMASA\DataSetNominaMASAImp.Designer.cs:línea 2439
> en NominaMASA.frmEstadoNomina.btPrint_Click(Object sender,
> EventArgs e) en C:\ATOMIUM_FW2\ATOMIUM\NominaMASA
> \frmEstadoNomina.cs:línea 814
> en System.Windows.Forms.Control.OnClick(EventArgs e)
> en System.Windows.Forms.Button.OnClick(EventArgs e)
> en System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
> en System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons
> button, Int32 clicks)
> en System.Windows.Forms.Control.WndProc(Message& m)
> en System.Windows.Forms.ButtonBase.WndProc(Message& m)
> en System.Windows.Forms.Button.WndProc(Message& m)
> en
> System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
> en
> System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
> en System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32
> msg, IntPtr wparam, IntPtr lparam)
>
> ************** Ensamblados cargados **************
> mscorlib
> Versión del ensamblado: 2.0.0.0
> Versión Win32: 2.0.50727.42 (RTM.050727-4200)
> Código base: file:///D:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/
> mscorlib.dll
> -
> IRIS
> Versión del ensamblado: 1.0.0.0
> Versión Win32: 1.0.0.0
> Código base: file:///C:/ATOMIUM_FW2/ATOMIUM/ATOMIUM/bin/Debug/
> IRIS.exe
> -
> LogDat
>
> On 6 feb, 15:43, carlosmsr
> wrote:
>
>
>
> > cuando dices que no acepta null es porque intentaste asignarle null ?
> > es un problema de compatibilidad de tipos (un error de cast) o es que no
> > esta permitido asignarle un valor a la variable o propiedad (un error de
> > permiso).
>
> > si es un problema de cast, entonces podrias probar no asignando directamente
> > null, sino buscando la referencia dentro del espacio de nombres
> > correspondiente al tipo de dato que utiliza ese tu data table, por ejemplo:
>
> > System.Data.SqlTypes.SqlDateTime.Null
>
> > "gremlin" wrote:
> > > Hola,
>
> > > Tengo desarrollada una aplicación que trabaja con bastantes campos de
> > > fecha, el problema viene cuando quiero listar informes, tenia pensado
> > > hacerlo con un DataTable y un Reporte Crystal Reports, pero me
> > > encuentro que el DateTime del datatable no acepta valores null.
>
> > > ¿me podeis dar alguna solucion para subsanar el problema?
>
> > > gracias.- Ocultar texto de la cita -
>
> > - Mostrar texto de la cita -- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -



Respuesta Responder a este mensaje
#8 Eloy Paredes
06/02/2007 - 16:10 | Informe spam
hola segun veo el problema es que en tu DataSet tienes una restriccion para
que esa columna no acepte valores nulos, entonces la forma mas facil de
solucionarlo seria que habras el DataSet con el visual Studio luego te
colocas sobre la columna de fecha y en la ventana de propiedades seleccionas
la propiedad AllowDBNull y lo pones en true.

Eso seria todo

Saludos

Eloy Paredes
"gremlin" wrote:

lo solucionare poniendo fechas 01/01/1900

si alguien tiene alguna otra solucion que lo publique please.


On 6 feb, 15:48, "gremlin" wrote:
> en la base de datos tengo datos datetime Nulos.
>
> la pregunta es ¿hay alguna manera de que el dataset no me lance la
> excepcion?
>
> detalle de la excepcion:
>
> Consulte el final de este mensaje para obtener más detalles sobre cómo
> invocar a la depuración
> Just-In-Time (JIT) en lugar de a este cuadro de diálogo.
>
> ************** Texto de la excepción **************
> System.Data.ConstraintException: No se pudieron habilitar las
> restricciones. Una o varias filas contienen valores que infringen las
> restricciones NON-NULL, UNIQUE o FOREIGN-KEY.
> en System.Data.DataTable.EnableConstraints()
> en System.Data.DataTable.set_EnforceConstraints(Boolean value)
> en System.Data.DataTable.EndLoadData()
> en System.Data.Common.DataAdapter.FillFromReader(DataSet dataset,
> DataTable datatable, String srcTable, DataReaderContainer dataReader,
> Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn,
> Object parentChapterValue)
> en System.Data.Common.DataAdapter.Fill(DataTable[] dataTables,
> IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
> en System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset,
> DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String
> srcTable, IDbCommand command, CommandBehavior behavior)
> en System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables,
> Int32 startRecord, Int32 maxRecords, IDbCommand command,
> CommandBehavior behavior)
> en System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
> en
> NominaMASA.DataSetNominaMASAImpTableAdapters.DataTable1TableAdapter.Fill(Da­taTable1DataTable
> dataTable, Int32 IdCentro, Nullable`1 dtmMes) en C:\ATOMIUM_FW2\ATOMIUM
> \NominaMASA\DataSetNominaMASAImp.Designer.cs:línea 2439
> en NominaMASA.frmEstadoNomina.btPrint_Click(Object sender,
> EventArgs e) en C:\ATOMIUM_FW2\ATOMIUM\NominaMASA
> \frmEstadoNomina.cs:línea 814
> en System.Windows.Forms.Control.OnClick(EventArgs e)
> en System.Windows.Forms.Button.OnClick(EventArgs e)
> en System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
> en System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons
> button, Int32 clicks)
> en System.Windows.Forms.Control.WndProc(Message& m)
> en System.Windows.Forms.ButtonBase.WndProc(Message& m)
> en System.Windows.Forms.Button.WndProc(Message& m)
> en
> System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
> en
> System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
> en System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32
> msg, IntPtr wparam, IntPtr lparam)
>
> ************** Ensamblados cargados **************
> mscorlib
> Versión del ensamblado: 2.0.0.0
> Versión Win32: 2.0.50727.42 (RTM.050727-4200)
> Código base: file:///D:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/
> mscorlib.dll
> -
> IRIS
> Versión del ensamblado: 1.0.0.0
> Versión Win32: 1.0.0.0
> Código base: file:///C:/ATOMIUM_FW2/ATOMIUM/ATOMIUM/bin/Debug/
> IRIS.exe
> -
> LogDat
>
> On 6 feb, 15:43, carlosmsr
> wrote:
>
>
>
> > cuando dices que no acepta null es porque intentaste asignarle null ?
> > es un problema de compatibilidad de tipos (un error de cast) o es que no
> > esta permitido asignarle un valor a la variable o propiedad (un error de
> > permiso).
>
> > si es un problema de cast, entonces podrias probar no asignando directamente
> > null, sino buscando la referencia dentro del espacio de nombres
> > correspondiente al tipo de dato que utiliza ese tu data table, por ejemplo:
>
> > System.Data.SqlTypes.SqlDateTime.Null
>
> > "gremlin" wrote:
> > > Hola,
>
> > > Tengo desarrollada una aplicación que trabaja con bastantes campos de
> > > fecha, el problema viene cuando quiero listar informes, tenia pensado
> > > hacerlo con un DataTable y un Reporte Crystal Reports, pero me
> > > encuentro que el DateTime del datatable no acepta valores null.
>
> > > ¿me podeis dar alguna solucion para subsanar el problema?
>
> > > gracias.- Ocultar texto de la cita -
>
> > - Mostrar texto de la cita -- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida