Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Ayuda por favor: Valores Null de fecha en tabla SQL

304 views
Skip to first unread message

Marcos

unread,
Feb 18, 2008, 11:07:01 AM2/18/08
to
Miren tengo campos de tipo datetime en la tabla de SQL que aceptan valores
nulos, sin embargo en cualquier formulario que pongo donde esten esos campos
me marca error si no lleno los campos de fecha, entonces quiero en mi "capa
de negocios" por decirlo asi asignarle un valor nulo a esos campos para ver
si asi me funciona, sin embargo no puedo hacerlo :(, pongo esto: FechaParche
= System.DBNull.Value, pero no me funciona, les comento que mi "capa de
datos" son los datasets que se generan por el Visual y digamos que la "capa
de negocios" con clases como esta que es donde intento utilizar lo que les
comento:

'ACTUALIZACION (UPDATE) DE TODOS LOS CAMPOS

<System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Update, True)> _
Public Function UpdateAccion(ByVal AccionID As Integer, ByVal Clave _
As String, ByVal TipoAccion As Integer, ByVal NombreAccion As
String, ByVal FechaRegistro As Date, _
ByVal Problema As String, ByVal ReportadoPor As String,
ByVal FechaReporte As Date, ByVal departamentoID As Integer, _
ByVal Causas As String, ByVal parche As String, ByVal
FechaParche As Date, ByVal Accion As String, _
ByVal FechaAccion As Nullable(Of Date), ByVal Autorizo As
Integer, ByVal FechaAutorizo As Date, ByVal Verifico As Integer, _
ByVal FechaVerifico As Date, ByVal ProblemaRelacionadoCon As
String, ByVal Origen As String, ByVal AccionEfectiva As String, _
ByVal Estatus As Integer) As Boolean

Dim Acciones As DsIso9001.AccionesDataTable =
Adapter.GetAccionesByID(AccionID)

If Acciones.Count = 0 Then
Return False
End If

Dim AccionUsada As DsIso9001.AccionesRow = Acciones(0)
AccionUsada.Clave = Clave
AccionUsada.TipoAccion = TipoAccion
AccionUsada.NombreAccion = NombreAccion
AccionUsada.FechaRegistro = FechaRegistro
AccionUsada.Problema = Problema
AccionUsada.ReportadoPor = ReportadoPor
AccionUsada.FechaReporte = FechaReporte
AccionUsada.DepartamentoID = departamentoID
AccionUsada.Causas = Causas
AccionUsada.Parche = parche

If FechaParche = DateTime.MinValue Then
FechaParche = System.DBNull.Value
End If

AccionUsada.FechaParche = FechaParche

AccionUsada.Accion = Accion
If FechaAccion = DateTime.MinValue Then
FechaAccion = ""
End If
'AccionUsada.FechaAccion = System.DBNull.Value
AccionUsada.FechaAccion = FechaAccion
AccionUsada.Autorizo = Autorizo
AccionUsada.FechaAutorizo = FechaAutorizo
AccionUsada.Verifico = Verifico
AccionUsada.FechaVerifico = FechaVerifico
AccionUsada.ProblemaRelacionadoCon = ProblemaRelacionadoCon
AccionUsada.Origen = Origen
AccionUsada.AccionEfectiva = AccionEfectiva
AccionUsada.Estatus = Estatus

Dim rowsAffected As Integer = Adapter.Update(AccionUsada)

Return rowsAffected = 1
End Function


Agradecere mucho la ayuda que me puedan proporcionar

Saludos!

Segundo Serrano

unread,
Feb 18, 2008, 12:22:42 PM2/18/08
to
Hola,
Puedes hacerlo así:
 
'Comentas estas líneas
'If FechaParche = DateTime.MinValue Then
'     FechaParche = system.dbnull.value
'end if
 
'modificas esta línea
AccionUsada.FechaParche = iif(FechaParche = DateTime.MinValue, system.dbnull.value, fechaparche)
 
Cualquier cosa, comentas?

Segundo Serrano P.
Sistemas
JABSOFT
Blog:
http://dotnet-peru.blogspot.com
511-91974975
511-2428802
 
-----------------------------------------------------------
 
"Marcos" <Mar...@discussions.microsoft.com> escribió en el mensaje de noticias news:CAC5BD2D-42E7-4925...@microsoft.com...

Marcos

unread,
Feb 18, 2008, 2:45:01 PM2/18/08
to
Humm ahora tengo este error :( :

La conversión del tipo 'DBNull' en el tipo 'Date' no es válida.

Segundo Serrano

unread,
Feb 18, 2008, 3:09:37 PM2/18/08
to
hmm,
ya entendí como está tu código... entonces ponle Nothing nomás.
AccionUsada.FechaParche = iif(FechaParche = DateTime.MinValue, nothing,
fechaparche)

ya en la capa de acceso a datos validas si es nothing,,, y en ese caso
recién le pasas system.dbnull.value

Cualquier cosa, comentas?

Segundo Serrano P.
Sistemas
JABSOFT
Blog: http://dotnet-peru.blogspot.com
511-91974975
511-2428802

---------------------------------

"Marcos" <Mar...@discussions.microsoft.com> escribió en el mensaje de
noticias news:5A6FAE88-53B0-43F3...@microsoft.com...

Marcos

unread,
Feb 18, 2008, 3:51:00 PM2/18/08
to
Humm el problema ahi seria que no se como hacer la validacion en la capa de
Datos puesto que son los datasets que genera el Visual Studio :( ¿como podria
hacer eso?

GRacias nuevamente!

Segundo Serrano

unread,
Feb 18, 2008, 4:27:08 PM2/18/08
to
pienso que el generador de código tiene el dataset fuertemente tipado y no permite la inserción de nulls
reconozco que no me agrada mucho la idea de usar dataset tipados... me parecen un problema más que una ayuda...
 
pero, en los dataset tipados hay una función cuyo nombre incluye el nombre de tu campo y que permite asignar a null...
pregunta si FechaParche es system.dbnull.value... en ese caso le pones
SetFechaParcheNull
 
if FechaParche = DateTime.MinValue then
    AccionUsada.SetFechaParcheNull()
else
    AccionUsada.FechaParche = fechaparche
end if
 
algo así debería ser la solución...
 
Cualquier cosa, comentas?
 
Segundo Serrano P.
Sistemas
JABSOFT
Blog:
http://dotnet-peru.blogspot.com
511-91974975
511-2428802
 
"Marcos" <Mar...@discussions.microsoft.com> escribió en el mensaje de noticias news:830A2B43-EAFA-4EAA...@microsoft.com...

Marcos

unread,
Feb 18, 2008, 4:50:01 PM2/18/08
to
Oraleeee funciona perfecto pero ya me entro la duda :( ¿a que te refieres que
los dataset tipados dan problemas? Acaso ¿deberia hacer toda mi capa de datos
con codigo personal?

Saludos y muchas gracias por tu valiosa ayuda!

Jose A. Fernandez

unread,
Feb 18, 2008, 7:40:00 PM2/18/08
to
Hola Marcos
(me sumo a la post...)
Si deberias hacer toda la capa de datos... pero hoy no se codifica
para eso tenemos los "Generadores de Codigo", algo que nos resuelve
muchos de las "tareas repetitivas" (crear clases, propiedades, etc..)
Hace un par de meses utilizo uno que vengo siguiendo su desarrollo,
pero te invito a que investigues sobre el tema.
No digo solamente mapear objetos a base de datos relacionales (algo
mas que un ORM) sino tambien toda lo que puede escribir por
nosotros... o sea UN AMIGO FIEL je
Microsoft saco el "ADO.NET Entity Framework", algo mas alla de un
simple ORM

Saludos
______________________
Jose A. Fernandez
blog: http://geeks.ms/blogs/fernandezja


On 18 feb, 19:50, Marcos <Mar...@discussions.microsoft.com> wrote:
> Oraleeee funciona perfecto pero ya me entro la duda :( ¿a que te refieres que
> los dataset tipados dan problemas? Acaso ¿deberia hacer toda mi capa de datos
> con codigo personal?
>
> Saludos y muchas gracias por tu valiosa ayuda!
>
> "Segundo Serrano" wrote:
> > pienso que el generador de código tiene el dataset fuertemente tipado y no permite la inserción de nulls
> > reconozco que no me agrada mucho la idea de usar dataset tipados... me parecen un problema más que una ayuda...
>
> > pero, en los dataset tipados hay una función cuyo nombre incluye el nombre de tu campo y que permite asignar a null...
> > pregunta si FechaParche es system.dbnull.value... en ese caso le pones SetFechaParcheNull
>
> > if FechaParche = DateTime.MinValue then
> > AccionUsada.SetFechaParcheNull()
> > else
> > AccionUsada.FechaParche = fechaparche
> > end if
>
> > algo así debería ser la solución...
>
> > Cualquier cosa, comentas?
>
> > Segundo Serrano P.
> > Sistemas
> > JABSOFT
> > Blog:http://dotnet-peru.blogspot.com
> > 511-91974975
> > 511-2428802
>

> > "Marcos" <Mar...@discussions.microsoft.com> escribió en el mensaje de noticiasnews:830A2B43-EAFA-4EAA...@microsoft.com...


> > > Humm el problema ahi seria que no se como hacer la validacion en la capa de
> > > Datos puesto que son los datasets que genera el Visual Studio :( ¿como podria
> > > hacer eso?
>
> > > GRacias nuevamente!
>
> > > "Segundo Serrano" wrote:
>
> > >> hmm,
> > >> ya entendí como está tu código... entonces ponle Nothing nomás.
> > >> AccionUsada.FechaParche = iif(FechaParche = DateTime.MinValue, nothing,
> > >> fechaparche)
>
> > >> ya en la capa de acceso a datos validas si es nothing,,, y en ese caso
> > >> recién le pasas system.dbnull.value
>
> > >> Cualquier cosa, comentas?
>
> > >> Segundo Serrano P.
> > >> Sistemas
> > >> JABSOFT
> > >> Blog:http://dotnet-peru.blogspot.com
> > >> 511-91974975
> > >> 511-2428802
>
> > >> ---------------------------------
>
> > >> "Marcos" <Mar...@discussions.microsoft.com> escribió en el mensaje de

> > >> noticiasnews:5A6FAE88-53B0-43F3...@microsoft.com...


> > >> > Humm ahora tengo este error :( :
>
> > >> > La conversión del tipo 'DBNull' en el tipo 'Date' no es válida.
>
> > >> > "Segundo Serrano" wrote:
>
> > >> >> Hola,
> > >> >> Puedes hacerlo así:
>
> > >> >> 'Comentas estas líneas
> > >> >> 'If FechaParche = DateTime.MinValue Then
> > >> >> ' FechaParche = system.dbnull.value
> > >> >> 'end if
>
> > >> >> 'modificas esta línea
> > >> >> AccionUsada.FechaParche = iif(FechaParche = DateTime.MinValue,
> > >> >> system.dbnull.value, fechaparche)
>
> > >> >> Cualquier cosa, comentas?
>
> > >> >> Segundo Serrano P.
> > >> >> Sistemas
> > >> >> JABSOFT
> > >> >> Blog:http://dotnet-peru.blogspot.com
> > >> >> 511-91974975
> > >> >> 511-2428802
>
> > >> >> -----------------------------------------------------------
>
> > >> >> "Marcos" <Mar...@discussions.microsoft.com> escribió en el mensaje de

> > >> >> noticiasnews:CAC5BD2D-42E7-4925...@microsoft.com...

Segundo Serrano

unread,
Feb 19, 2008, 9:57:52 AM2/19/08
to
Hola Marcos,
no me refería a hacerlo manualmente, sino usando otros generadores de código
(como menciona José)
yo particularmente uso Cooperator Framework, Subsonic y el ADO.NET Entity
Framework que menciona José, pero en realidad hay muchos más y muy
completos... free y otros de pago.
y no es que me molesten los dataset tipados, sino que simplemente prefiero
usar otros.
cada uno tiene sus fortalezas y debilidades... es cuestión de investigar un
poco.
Revisa este por ejemplo:
http://www.deklarit.com/portal/hgxpp001.aspx?12, una maravilla.

Saludos.

Segundo Serrano P.
Sistemas
JABSOFT
Blog: http://dotnet-peru.blogspot.com
511-91974975
511-2428802

-------------------------------------------------------
"Jose A. Fernandez" <ferna...@gmail.com> escribió en el mensaje de
noticias
news:e453a13f-ff28-4e38...@i29g2000prf.googlegroups.com...

Marcos Galaviz

unread,
Feb 22, 2008, 10:42:36 PM2/22/08
to
Muy bien pero en el caso mio que no soy experto programador, ¿el utilizar
esos generadores de codigo representa hacer mucha mas programacion que la
que se hace nativamente con los datasets de visualstudio? ¿como me
recomiendan comenzar esta tarea?

y a todo esto no me han dicho cual es el problema con los datasets que
genera el visual studio :D

Gracias de verdad por su valiosa ayuda.


"Segundo Serrano" <sserrano[at]jabs[dot]com[dot]pe> escribió en el mensaje
news:%232SMUfw...@TK2MSFTNGP04.phx.gbl...

0 new messages