FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Ayuda con Datetime() Solucionado
Posts: 229
Joined: Sat Mar 18, 2006 03:42 PM
Ayuda con Datetime() Solucionado
Posted: Mon Mar 15, 2010 11:40 PM

Un saludo

Sucede que necesito obtener la fecha y hora en una sola variable para poder usarla con el tipo de datos DATETIME de Mysql, pero parece ser que no se puede con mi versi贸n de harbour rev 10434. Puedo grabar el dato uniendo ctod(date())+time(), pero al recuperar de nuevo en una celda de xbrowse s贸lo me da la fecha sin la hora

Revisando en el foro encuentro que xHarbour tiene la funci贸n datetime() devolviendo un valor de tipo T con valor como: "YYYY-MM-DD HH:MM:SS" y XBrowse lo soporta, pero con Harbour no hay tal funci贸n y no encuentro la manera de solventar este problema.

Tambi茅n se hace menci贸n que existe la funci贸n hb_datetime() en harbour, pero obtengo el error que no encuentra la funci贸n. Tengo entendido que desde la revisi贸n 13489 tiene soporte para esta funci贸n . Por eso acudo a ustedes a ver si alguien tiene alguna revisi贸n actual y estable de Harbour.

Sr. Don Antonio Linares, a lo mejor exista otra forma de solucionar este problema, pues deseo que en el xbrowse me permita visualizar y editar la celda tipo DATETIME de Mysql en formato "YYYY-MM-DD hh:mm:ss" o "DD-MM-YYYY hh:mm:ss".

Gracias

Marcelo Jingo

Marcelo Jingo
Posts: 229
Joined: Sat Mar 18, 2006 03:42 PM
Re: Ayuda con Datetime()
Posted: Tue Mar 16, 2010 01:01 AM

Acabo de bajar el Harbour Rev. 13500 (de 14175) esperemos que no tenga problemas, ma帽ana la pruebo.

Un saludo
Marcelo Jingo

Marcelo Jingo
Posts: 401
Joined: Thu Oct 06, 2005 10:15 PM
Re: Ayuda con Datetime()
Posted: Tue Mar 16, 2010 01:53 AM
Si usas mysql es facil, en el query de gravar en ves de poner la hora y la fecha desde xharbour ponla desde mysql con now() y listo.
Saludos,



Pablo Alberto Vidal

/*

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

Harbour 3.2.0, Fivewin 17.02, BCC7

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

*/
Posts: 229
Joined: Sat Mar 18, 2006 03:42 PM
Re: Ayuda con Datetime()
Posted: Tue Mar 16, 2010 02:10 AM

Como dije, no tengo problema para grabar, y esta bien lo que propones. Pero sucede que el XBrowse no me permite editar o modificar corrrectamente dicho campo porque el Harbour no soporta ese tipo de dato, y tengo entendido que xHarbour si.
He pensado hasta cambiar el tipo de dato a char, y controlar manualmente la edicion y validacion de la fecha y hora; tambien he pensado en crear campos idependientes para la fecha (DATE) y la hora(TIME); pero yo quiero manejarlo en un solo campo para aprovechar las funciones que tiene mysql para calculos de fechas y horas. Por eso seria mas facil si harbour o FWH manejara directamente este tipo de dato.

Gracias Pablo y Un Saludo

Marcelo Jingo

Marcelo Jingo
Posts: 229
Joined: Sat Mar 18, 2006 03:42 PM
Re: Ayuda con Datetime()
Posted: Tue Mar 16, 2010 03:37 PM

He bajado la versi贸n 2.0 de Harbour, y parece ser que esta versi贸n ya maneja el tipo de datos DATETIME porque al compilar ya no obtengo el error: Unresolved External '_HB_FUN_HB_DATETIME' que indicar铆a que puedo usar la funci贸n hb_datetime(), y si existe esta funci贸n pienso que debe soportar el tipo de dato T que creo que maneja un dato tipo "YYYY-MM-DD hh:mm:ss", o estoy equivocado Sr. D. Antonio.
Bueno tuve una alegr铆a amarga porque me top茅 con otro error: Unresolved External '_hb_vmProcessSimbolsEx' . me imagino que para evitar esto se debe recompilar las librer铆as de FW904 usando la nueva versi贸n de Harbour; y eso s铆 no s茅 por donde empezar.

As铆 que hasta resolver este 煤ltimo problema voy a tener que buscar otra soluci贸n a mi primer problema. A ver si me da una manita Don Antonio.

Un saludo

Marcelo Jingo

Marcelo Jingo
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Ayuda con Datetime()
Posted: Wed Mar 17, 2010 12:02 PM
FWH 9.04 works with Harbour 2.0 and xBrowse can be used to display datetime.

Sample code:
Code (fw): Select all Collapse
#include 'fivewin.ch'
#include 'xbrowse.ch'

// FWH 904 with Harbour 2.0

function main()

   local tDate

   SET DATE FORMAT TO 'YYYY-MM-DD'
   SET CENTURY ON
   SET TIME FORMAT TO 'HH:MM:SS'

   tDate := hb_datetime()
   msginfo( valtype( tdate ) )
   msginfo( hb_ttoc( tdate ) )

   testxbrowse()

return nil

function testxbrowse()

   local aData := { { hb_datetime() }, { hb_datetime() - 2.5 }, { hb_datetime() - 10.25} }

   XBROWSER aData SETUP oBrw:aCols[ 1 ]:cDataType := 'T'

return nil

Please copy this code into \fwh\samples folder and build with buildh.bat.
Regards



G. N. Rao.

Hyderabad, India
Posts: 229
Joined: Sat Mar 18, 2006 03:42 PM
Re: Ayuda con Datetime()
Posted: Wed Mar 17, 2010 01:55 PM

G.N. Rao
En efecto debe funcionar, pero tengo un problema, me da el error que ya les coment茅:
Unresolved External '_hb_vmProcessSimbolsEx' referenced from ...\LIB\fiveh.lib|ERRSYSW. Entonces quisiera saber la forma de c贸mo recompilar las lib de FW904 con el harbour 2.0 .

Un saludo

Marcelo Jingo

Marcelo Jingo
Posts: 229
Joined: Sat Mar 18, 2006 03:42 PM
Re: Ayuda con Datetime() Solucionado
Posted: Wed Mar 17, 2010 10:13 PM
Luego de tanto probar y probar, logre solucionar mi problema, aunque el proceso se me volvi贸 engorroso pero qued贸 bien para salir del atolladero.

Lo que hice fue al momento de cargar el recordset usar la funci贸n cast() que transforma los datos a otro tipo. El campo inicio Lo he cambiado de DATETIME a CHAR as铆:
Code (fw): Select all Collapse
::oRsTrab:Source := "SELECT cod_activ,actividad, cast(inicio as char) as inicio, fin ,horas_netas,horas_efectivas,nota  FROM activ_veh"

Entonces en el recorset lo trato como caracter, al momento de grabar no pude hacer que grabara directamente desde el propio Xbrowse con una simple asignaci贸n, tal como se hace con los otros campos. Para evitar el error que sal铆a al grabar tuve que usar el objeto command para enviar el update directamente a la tabla, luego hacer un requery del recordset.

En el XBrowse
Code (fw): Select all Collapse
oCol:nEditType := EDIT_BUTTON
oCol:cEditPicture:="  -  -       :  :  "
oCol:bStrData  := { || if(oRs:RecordCount()>0,oRs:Fields("inicio"):Value," ") } 
oCol:bEditblock:={ |o,x,n|celda:=cHoraFecha(oRs:fields('inicio'):Value),;
               if(!empty(celda),;
        (nBookMark:=oRs:BookMark,;
        grabafecha(oWVeh:oRsV:Fields("cod_veh"):Value,oRs:Fields("cod_activ"):Value,"inicio",celda ),;
        oRs:Requery(),;
        oRs:BookMark:=nBookMark),) }
 oCol:bEditValue:={ | x, u | u := If( oRs:RecordCount() > 0, oRs:Fields( 'inicio' ):Value, nil ), ;
                              If( Empty( u ),"  -  -       :  :  ", u ) }

Resultado


El valor de la fecha y hora se editan en dos campos diferentes que luego los uno y envio como tipo caracter.

Ahora si, puedo sin problema usar las funciones de mysql para calcular las fechas y horas transcurridas.

Lo de la complaci贸n de las librer铆as de FW queda pendiente, ya les molestar茅 en otro post.

Saludos

Marcelo Jingo
Marcelo Jingo

Continue the discussion