FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour ayuda campo fecha en ado y recordset
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
ayuda campo fecha en ado y recordset
Posted: Tue Jun 18, 2013 04:50 AM
Code (fw): Select all Collapse
   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)
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: ayuda campo fecha en ado y recordset
Posted: Tue Jun 18, 2013 05:28 AM

aclaro que he probado con NIL, ctod(""), ctod("30/12/1899") y nada.

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 1303
Joined: Tue Jul 21, 2009 08:12 AM
Re: ayuda campo fecha en ado y recordset
Posted: Tue Jun 18, 2013 08: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.
Posts: 132
Joined: Thu Mar 08, 2007 06:12 PM
Re: ayuda campo fecha en ado y recordset
Posted: Tue Jun 18, 2013 03: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
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: ayuda campo fecha en ado y recordset
Posted: Tue Jun 18, 2013 04: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 (fw): Select all Collapse
oRS:Fields( "FECHA_SOL" ):Value  := DTOS(CONC->FECHA_SOL )


2.- Si el campo a guardar esta vacío prueba así
Code (fw): Select all Collapse
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
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: ayuda campo fecha en ado y recordset
Posted: Tue Jun 18, 2013 04:37 PM
gracias lucas
me ha funcionado asi
Code (fw): Select all Collapse
oRS:Fields( "FECHA_SOL"  ):Value := IIf( !Empty(CONC->FECHA_SOL), DToC( CONC->FECHA_SOL ), '' )
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: ayuda campo fecha en ado y recordset
Posted: Tue Jun 18, 2013 04: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)
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: ayuda campo fecha en ado y recordset
Posted: Tue Jun 18, 2013 04:43 PM

gracias armando y compubrion.

los seguire molestando :-)

salu2

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Re: ayuda campo fecha en ado y recordset
Posted: Wed Jun 19, 2013 08: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

Continue the discussion