Page 1 of 1
Problemas con DATETIME()
Posted: Thu Mar 26, 2015 12:18 pm
by AidTIC
Hola, estoy tratando de pasar datos access a dbf, el problema es que un campo del access es tipo DATETIME y no veo la manera de pasarlo a DATE.
Alguien me puede ayudar??
Re: Problemas con DATETIME()
Posted: Thu Mar 26, 2015 12:35 pm
by esgici
AidTIC wrote:Hola, estoy tratando de pasar datos access a dbf, el problema es que un campo del access es tipo DATETIME y no veo la manera de pasarlo a DATE.
Alguien me puede ayudar??
Google wrote:I'm trying to pass data access dbf, the problem is that a field access is DATETIME type and I see no way to pass a DATE.
Can someone help me?
If you accept aid from non Spanish spoken people :
Probably you need Date + Time type field (
@ ).
For more info look at
here.
Happy HMG'ing

Problemas con DATETIME()
Posted: Thu Mar 26, 2015 12:59 pm
by Pablo César
Hola AidTIC, siendo más claro...
Seguramente el campo a que te refieres es del tipo TimeStamp, compuesto por Fecha y Hora.
Entonces seria cuestion de convertirlo en caracter y subtraer las dos informaciones en variables del tipo caracter, utilizandote de
SubStr (para el caso en ANSI) o
hb_USubStr (en UNICODE) y luego pasarlos al tipo DATE.
No sé en que padron debe estar ese campo que te refieres. Si nos muestras, podremos te indicar la solucion.
Para exibir una string puedes utilizar el MsgDebug(<campo_DATETIME>) y pasanos como te los exibió.
Despues seria cuestión de utilizar el formato regional, transformando la variable caracter de la fecha para un valor tipo FECHA. Pero tendríamos que saber cual es el formato de fecha que utilizas: dd/mm/aaaa, etc..
Veamos un ejemplo:
Code: Select all
#include <hmg.ch>
Function Main()
Local tTimeStamp:=hb_DateTime()
MsgDebug( "1. ValType of tTimeStamp:", ValType(tTimeStamp) )
MsgDebug( "2. Get current DateFormat:", Set( _SET_DATEFORMAT ) )
MsgDebug( "3. Current DateTime:", tTimeStamp )
MsgDebug( "4. Transform tTimeStamp to Character:", hb_TToC( tTimeStamp ) )
MsgDebug( "5. Transform tTimeStamp to Date:", hb_TToD( tTimeStamp ) )
MsgDebug( "6. Transform tTimeStamp to String:", hb_TToS( tTimeStamp ) )
MsgDebug( "7. Take tTimeStamp as Time:", hb_TToT( tTimeStamp ) )
MsgDebug( "8. ValType of tTimeStamp:", ValType( hb_TToT( tTimeStamp ) ) )
Return Nil
Function hb_TToT( tTimeStamp )
Return HB_NToT( HB_TToN( tTimeStamp ) % 1 )
Creo que con el item 5 ya consigues obtner el campo DATE pero para lograr el TIME irá requerir más elaboracion teniendo en cuenta tu DateFormat para subtrairlo como string.
Aunque con el item 4, te irá ser más fácil obtener los los datos en forma de strings.

- Pantalla1.png (42.7 KiB) Viewed 3737 times
Espero que este ejemplo te dé un clara visión de como podemos tratar campos TimeStamp.
Re: Problemas con DATETIME()
Posted: Thu Mar 26, 2015 2:58 pm
by martingz
AidTIC como estas recuperando los datos desde access, si es con adordd, es muy facil
yo uso esto
RDDINFO( RDDI_CONNECT, { "ODBC", "DBQ=" + basedatos + ";Driver={Microsoft Access Driver (*.mdb)};Uid=" + UserId + ";Pwd=" + Pass } )
DBUSEAREA( .T.,, "select din,cstr(clock) as fechacompleta,Format(clock,'dd/mm/yyyy') as fechasinhora,Format(clock,'hh:mm:ss') as mhora from ras_AttRecord", "ras_AttRecord" )
espero que te sea util
i use this with adordd
RDDINFO( RDDI_CONNECT, { "ODBC", "DBQ=" + basedatos + ";Driver={Microsoft Access Driver (*.mdb)};Uid=" + UserId + ";Pwd=" + Pass } )
DBUSEAREA( .T.,, "select din,cstr(clock) as fechacompleta,Format(clock,'dd/mm/yyyy') as fechasinhora,Format(clock,'hh:mm:ss') as mhora from ras_AttRecord", "ras_AttRecord" )
saludos
p.d. cualquier cosa en que pueda ayudarte con todo gusto
Re: Problemas con DATETIME()
Posted: Thu Mar 26, 2015 3:57 pm
by AidTIC
Creo que no me he explicado bien, tengo una variable que es de tipo DATETIME.
msginfo(vFecha) // 12-11-2015 00:00:00:000
si le hago un dtoc(vFecha)
+ + + + + + + + + + + + + + ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Error BASE/1118 Argumento error: DTOC
Creo que no me he explicado bien, tengo una variable que es de tipo DATETIME.
msginfo(vFecha) // 12-11-2015 00:00:00:000
si le hago un dtoc(vFecha)
Error BASE/1118 Argumento error: DTOC
Re: Problemas con DATETIME()
Posted: Thu Mar 26, 2015 4:09 pm
by Pablo César
AidTIC wrote:Creo que no me he explicado bien, tengo una variable que es de tipo DATETIME.
msginfo(vFecha) // 12-11-2015 00:00:00:000
si le hago un dtoc(vFecha)
Error BASE/1118 Argumento error: DTOC
Ya probaste con:
hb_TToD( vFecha ) ?
Asi como lo demonstré en mi ejemplo.
Problemas con DATETIME()
Posted: Thu Mar 26, 2015 4:36 pm
by Pablo César
Pensando bien lo que dijiste ahora ultimo con má sinformacion.
Ese error ocurre porque tu variable no es del tipo DATE ni tampoco es del tipo TimeStamp.
Por lo que parece es del tipo caracter. Entonces debes obtener la fecha con SubStr(vFecha,1,10).
Code: Select all
cFecha:="12-11-2015 00:00:00:000"
Set Century On
Set Date Format To "dd-mm-yyyy" // Suponiendo que 12 es el dia y 11 el mes
dFecha := CToD( SubStr( cFecha,1,10 ) )
Digo esto, porque sinó te daria error al usar el MsgInfo. Porque el MsgInfo, solo acepta strings.
Re: Problemas con DATETIME()
Posted: Thu Mar 26, 2015 6:22 pm
by AidTIC
Solucionado.
hb_TToD( vFecha )
gracias a todos por vuestro tiempo e interés.