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??
Problemas con DATETIME()
Moderator: Rathinagiri
Problemas con DATETIME()
Skydone Solutions
www.skydone.com
www.skydone.com
- esgici
- Posts: 4543
- Joined: Wed Jul 30, 2008 9:17 pm
- DBs Used: DBF
- Location: iskenderun / Turkiye
- Contact:
Re: Problemas con DATETIME()
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??
If you accept aid from non Spanish spoken people :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?
Probably you need Date + Time type field ( @ ).
For more info look at here.
Happy HMG'ing
Viva INTERNATIONAL HMG
- Pablo César
- Posts: 4059
- Joined: Wed Sep 08, 2010 1:18 pm
- Location: Curitiba - Brasil
Problemas con DATETIME()
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:
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.
Espero que este ejemplo te dé un clara visión de como podemos tratar campos TimeStamp.
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 )
Aunque con el item 4, te irá ser más fácil obtener los los datos en forma de strings.
Espero que este ejemplo te dé un clara visión de como podemos tratar campos TimeStamp.
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
Re: Problemas con DATETIME()
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
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()
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
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
Skydone Solutions
www.skydone.com
www.skydone.com
- Pablo César
- Posts: 4059
- Joined: Wed Sep 08, 2010 1:18 pm
- Location: Curitiba - Brasil
Re: Problemas con DATETIME()
Ya probaste con: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
hb_TToD( vFecha ) ?
Asi como lo demonstré en mi ejemplo.
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
- Pablo César
- Posts: 4059
- Joined: Wed Sep 08, 2010 1:18 pm
- Location: Curitiba - Brasil
Problemas con DATETIME()
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).
Digo esto, porque sinó te daria error al usar el MsgInfo. Porque el MsgInfo, solo acepta strings.
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 ) )
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
Re: Problemas con DATETIME()
Solucionado.
hb_TToD( vFecha )
gracias a todos por vuestro tiempo e interés.
hb_TToD( vFecha )
gracias a todos por vuestro tiempo e interés.
Skydone Solutions
www.skydone.com
www.skydone.com