ayuda campo fecha en ado y recordset

Post Reply
User avatar
carlos vargas
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

ayuda campo fecha en ado y recordset

Post by carlos vargas »

Code: Select all | Expand


   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: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: ayuda campo fecha en ado y recordset

Post by carlos vargas »

aclaro que he probado con NIL, ctod(""), ctod("30/12/1899") y nada.
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
lucasdebeltran
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am
Contact:

Re: ayuda campo fecha en ado y recordset

Post by lucasdebeltran »

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
compubrion
Posts: 130
Joined: Thu Mar 08, 2007 6:12 pm
Location: Miranda - Venezuela
Contact:

Re: ayuda campo fecha en ado y recordset

Post by compubrion »

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
Armando
Posts: 3271
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Been thanked: 2 times
Contact:

Re: ayuda campo fecha en ado y recordset

Post by Armando »

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


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


2.- Si el campo a guardar esta vacío prueba así

Code: Select all | Expand


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
carlos vargas
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: ayuda campo fecha en ado y recordset

Post by carlos vargas »

gracias lucas
me ha funcionado asi

Code: Select all | Expand


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: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: ayuda campo fecha en ado y recordset

Post by carlos vargas »

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: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: ayuda campo fecha en ado y recordset

Post by carlos vargas »

gracias armando y compubrion.

los seguire molestando :-)

salu2
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
jnavas
Posts: 482
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela
Been thanked: 2 times
Contact:

Re: ayuda campo fecha en ado y recordset

Post by jnavas »

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
Post Reply