ayuda campo fecha en ado y recordset

ayuda campo fecha en ado y recordset

Postby carlos vargas » Tue Jun 18, 2013 4:50 am

Code: Select all  Expand view

   TRY
     WITH OBJECT ( oRS := TOleAuto():New( "ADODB.RecordSet" ) )
         :CursorLocation   := adUseClient
         :CursorType       := adOpenDynamic
         :LockType         := adLockOptimistic
         :ActiveConnection := oConexion
      END
   CATCH oError
      lOk := FALSE
      ShowAdoError( oConexion, oError )
   END

   IF !lOk
      RETURN lOk
   ENDIF

      oRS:open( "CONCESIONES" )
      oSayI:SetText( "Actualizando tabla CONCESIONES" )
      CursorWait()
      SELECT "CONC"
      CONC->( DBGoTop() )
      DO WHILE !CONC->( Eof() )
         oRS:AddNew()
         oRS:Fields( "NUM_EMPR"   ):Value := CONC->NUM_EMPR
         oRS:Fields( "NUM_CONC"   ):Value := CONC->NUM_CONC
         oRS:Fields( "NOM_CONC"   ):Value := CONC->NOM_CONC
         oRS:Fields( "ACUERDO"    ):Value := CONC->ACUERDO
         oRS:Fields( "NUM_DEPA"   ):Value := CONC->NUM_DEPA
         oRS:Fields( "NUM_MUNI1"  ):Value := CONC->NUM_MUNI1
         oRS:Fields( "NUM_MUNI2"  ):Value := CONC->NUM_MUNI2
         oRS:Fields( "NUM_MUNI3"  ):Value := CONC->NUM_MUNI3
         oRS:Fields( "AREA"       ):Value := CONC->AREA
         //oRS:Fields( "FECHA_SOL"  ):Value := IIf( !Empty( CONC->FECHA_SOL ), CONC->FECHA_SOL , CToD( "31/12/1899" ) )
         //oRS:Fields( "FECHA_VEN"  ):Value := IIf( !Empty( CONC->FECHA_VEN ), CONC->FECHA_VEN , CToD( "31/12/1899" ) )
         oRS:Fields( "ULTIMO_AER" ):Value := CONC->ULTIMO_AER
         oRS:Fields( "NOTA"       ):Value := CONC->NOTA
         oRS:update()
         CONC->( DBSkip() )
      ENDDO
      SysRefresh()
      oRS:close()
 


se que en msqsl,mysql,postgree,etc no existe el concepto de fecha vacia
pero como hago para grabar cuando el dato fecha no tieve valor, en un insert pongo "INSERT INTO tabla ( CODIGO, FECHA) VALUE ( 125, NULL )"
pero en recordset no puedo poner
oRS:Fields( "FECHA_SOL" ):Value := IIf( !Empty( CONC->FECHA_SOL ), CONC->FECHA_SOL , NULL )

ya que NULL no existe en xharbour, lo ma parecido es NIL que no es igual NULL, que hago.
de antemano muchas gracias por su ayuda
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1683
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: ayuda campo fecha en ado y recordset

Postby carlos vargas » Tue Jun 18, 2013 5:28 am

aclaro que he probado con NIL, ctod(""), ctod("30/12/1899") y nada.
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1683
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: ayuda campo fecha en ado y recordset

Postby lucasdebeltran » Tue Jun 18, 2013 8:14 am

Carlos,

¿Has probado con DtoC?.

Los campos en MySQL son todos strings.

A ver si te sirve.
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Re: ayuda campo fecha en ado y recordset

Postby compubrion » Tue Jun 18, 2013 3:47 pm

Saludos !
Carlos intenta de esta forma

oRS:Fields( "FECHA_SOL" ):Value := IIf( !Empty( CONC->FECHA_SOL ), CONC->FECHA_SOL , "NULL" ), tambien puedes hacerlo con un insert into seria mas rapido
Harbour / Bcc / MinGW / Fwh 13.9
User avatar
compubrion
 
Posts: 130
Joined: Thu Mar 08, 2007 6:12 pm
Location: Miranda - Venezuela

Re: ayuda campo fecha en ado y recordset

Postby Armando » Tue Jun 18, 2013 4:05 pm

Carlos:

Mis dos centavos, en MySql no existe el concepto de fecha vacía como lo hay en DBFs pero sí
existe el concepto NULL, que propiamente no deja el campo vacío lo deja con un NULL o NIL
que no es lo mismo que vacío.

Por ejemplo en una tabla donde registras a los empleados de la compañía, todos tienen una
fecha de ingreso pero no todos tiene una fecha de baja de la empresa, en este caso el campo
de la fecha de ingreso lo defines como NOT NULL pero el campo de la fecha de baja debe
aceptar NULL.

Ahora para lo que necesitas primero debes haber definido el campo en tu tabla como que acepta
NULL, después al actualizar debes hacer lo siguiente:

1.- Si el campo a guardar no esta vacío prueba a hacerlo así
Code: Select all  Expand view

oRS:Fields( "FECHA_SOL" ):Value  := DTOS(CONC->FECHA_SOL )
 


2.- Si el campo a guardar esta vacío prueba así
Code: Select all  Expand view

oRS:Fields( "FECHA_SOL" ):Value  := DTOS(CTOD("00/00/0000") )
 


Recuerda, cuando vayas a usar el campo "FECHA_SOL" para, por ejemplo, imprimirlo, primero
debes probar que no venga NIL, de lo contrario te va a tirar un error.

Espero que te sirva, Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3061
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: ayuda campo fecha en ado y recordset

Postby carlos vargas » Tue Jun 18, 2013 4:37 pm

gracias lucas
me ha funcionado asi
Code: Select all  Expand view

oRS:Fields( "FECHA_SOL"  ):Value := IIf( !Empty(CONC->FECHA_SOL), DToC( CONC->FECHA_SOL ), '' )
 
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1683
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: ayuda campo fecha en ado y recordset

Postby carlos vargas » Tue Jun 18, 2013 4:40 pm

les comento que lo tenia con un insert, pero algunas tablas tienen documentos en campos blob
y la diferencia en tiempo de la implmentacion entre insert y oRS:AddNew es muchismo,

muchas gracias por sus comentarios, continuare con esto.
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1683
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: ayuda campo fecha en ado y recordset

Postby carlos vargas » Tue Jun 18, 2013 4:43 pm

gracias armando y compubrion.

los seguire molestando :-)

salu2
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1683
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: ayuda campo fecha en ado y recordset

Postby jnavas » Wed Jun 19, 2013 8:53 am

Colega

Debes revisar el formato de fecha que estas usando con MySQL y creas una funcion que devuelva la fecha en formato caracter, en caso de fechas vacias utilizar "0000-00-000" esto depende si utiliza MySql 4 o MySQL 5

Si mySql esta configurado con fecha AAAA-MM-DD

Crear funcion llamada
DATETOMYSQL(dFecha)
/*
// Aqui haces la traducción
*/

RETURN cFecha
User avatar
jnavas
 
Posts: 472
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 87 guests