Page 1 of 1
ayuda campo fecha en ado y recordset
Posted: Tue Jun 18, 2013 4:50 am
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
Re: ayuda campo fecha en ado y recordset
Posted: Tue Jun 18, 2013 5:28 am
by carlos vargas
aclaro que he probado con NIL, ctod(""), ctod("30/12/1899") y nada.
Re: ayuda campo fecha en ado y recordset
Posted: Tue Jun 18, 2013 8:14 am
by lucasdebeltran
Carlos,
¿Has probado con DtoC?.
Los campos en MySQL son todos strings.
A ver si te sirve.
Re: ayuda campo fecha en ado y recordset
Posted: Tue Jun 18, 2013 3:47 pm
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
Re: ayuda campo fecha en ado y recordset
Posted: Tue Jun 18, 2013 4:05 pm
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
Re: ayuda campo fecha en ado y recordset
Posted: Tue Jun 18, 2013 4:37 pm
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 ), '' )
Re: ayuda campo fecha en ado y recordset
Posted: Tue Jun 18, 2013 4:40 pm
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.
Re: ayuda campo fecha en ado y recordset
Posted: Tue Jun 18, 2013 4:43 pm
by carlos vargas
gracias armando y compubrion.
los seguire molestando

salu2
Re: ayuda campo fecha en ado y recordset
Posted: Wed Jun 19, 2013 8:53 am
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