Ayuda con Datetime() Solucionado

Ayuda con Datetime() Solucionado

Postby sjingo » 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
Last edited by sjingo on Wed Mar 17, 2010 10:18 pm, edited 1 time in total.
Marcelo Jingo
User avatar
sjingo
 
Posts: 229
Joined: Sat Mar 18, 2006 3:42 pm
Location: Ibarra-Ecuador

Re: Ayuda con Datetime()

Postby sjingo » Tue Mar 16, 2010 1: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
User avatar
sjingo
 
Posts: 229
Joined: Sat Mar 18, 2006 3:42 pm
Location: Ibarra-Ecuador

Re: Ayuda con Datetime()

Postby pablovidal » Tue Mar 16, 2010 1: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
------------------------------------------------------
*/
User avatar
pablovidal
 
Posts: 401
Joined: Thu Oct 06, 2005 10:15 pm
Location: Republica Dominicana

Re: Ayuda con Datetime()

Postby sjingo » Tue Mar 16, 2010 2: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
User avatar
sjingo
 
Posts: 229
Joined: Sat Mar 18, 2006 3:42 pm
Location: Ibarra-Ecuador

Re: Ayuda con Datetime()

Postby sjingo » Tue Mar 16, 2010 3: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
User avatar
sjingo
 
Posts: 229
Joined: Sat Mar 18, 2006 3:42 pm
Location: Ibarra-Ecuador

Re: Ayuda con Datetime()

Postby nageswaragunupudi » 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: Select all  Expand view
#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
User avatar
nageswaragunupudi
 
Posts: 10248
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Ayuda con Datetime()

Postby sjingo » Wed Mar 17, 2010 1: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
User avatar
sjingo
 
Posts: 229
Joined: Sat Mar 18, 2006 3:42 pm
Location: Ibarra-Ecuador

Re: Ayuda con Datetime() Solucionado

Postby sjingo » 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: Select all  Expand view
::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: Select all  Expand view

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
Image

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
User avatar
sjingo
 
Posts: 229
Joined: Sat Mar 18, 2006 3:42 pm
Location: Ibarra-Ecuador


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 62 guests