Hola a todos
Estoy empezando con ADO. Para ello he creado una base de datos en acces con sus correspondientes tablas. Conectarme ya lo hago bien, me traigo con un recordset los datos y los pongo en un browse, también puedo verlos en un diálogo, pero.... y aquí viene la historia. ¿Hay alguna manera de poder ver las fechas sin el formato que te da acces?, es decir en el diálogo en vez de verse solo la fecha se ve la fecha y la hora y si pongo el picture de fecha "@D" me da un error.
Empezando con ADO SOLUCIONADO
Empezando con ADO SOLUCIONADO
Last edited by Pedro on Tue Mar 06, 2012 12:30 pm, edited 1 time in total.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Re: Empezando con ADO
Amigo prueba asi:
oCol:= oLbx:AddCol()
oCol:bStrData:= { || IF (!EMPTY(SQLField(cRec_Gen,"Rec_Femisi")),Date2Txt(SQLField(cRec_Gen,"Rec_Femisi")),"")}
oCol:cHeader := "Fecha de"+CRLF+"Emision"
oCol:nWidth := 80
oCol:nHeadStrAlign:= AL_CENTER
/*
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
° Funcion: Date2Txt()
Argumentos: 6
Argumento 1: La fecha a convertir variable tipo fecha
Argumento 2: Tipo de nombre del día 1=Corto, 2=Largo Ejem: 1=Sáb, 2=Sábado
Argumento 3: Tipo de nombre del mes 1=Corto, 2=Largo Ejem: 1=Ene, 2=Enero
Argumento 4: Tipo de año 1=2 dígitos, 2=4 dígitos Ejem: 1=99, 2=1999
Argumento 5: Separador entre el día de la semana y la fecha
Argumento 6: separador entre dia y mes
Argumento 7: separador entre mes y año
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
*/
FUNCTION Date2Txt(dFecha, nTipdia, nTipMes, nTipAmo, cSepDia, cSepDM, cSepMA)
LOCAL aNomMes:= {"Enero", "Febrero", "Marzo", "Abril", "Mayo", ;
"Junio", "Julio", "Agosto", "Septiembre", "Octubre", ;
"Noviembre", "Diciembre"}
LOCAL aNomDia:= {"Domingo", "Lunes", "Martes", "Míercoles", ;
"Jueves", "Viernes", "Sábado"}
LOCAL La_Fecha := ""
IF EMPTY(dFecha)
dFecha := DATE()
ENDIF
IF EMPTY(nTipDia)
nTipDia := 0
ENDIF
IF EMPTY(nTipMes)
nTipMes := 1
ENDIF
IF EMPTY(nTipAmo)
nTipAmo := 2
ENDIF
IF cSepDia == NIL
cSepDia := SPACE(1)
ENDIF
IF cSepDM == NIL
cSepDM := "/"
ENDIF
IF cSepMA == NIL
cSepMA := "/"
ENDIF
DO CASE
CASE nTipdia == 1
La_Fecha:= LEFT(aNomDia[DOW(dFecha)], 3) + cSepDia
CASE nTipdia == 2
La_Fecha:= aNomDia[DOW(dFecha)] + cSepDia
ENDCASE
La_Fecha:= La_Fecha + STR(DAY(dFecha), 2, 0)
DO CASE
CASE nTipMes == 1
La_Fecha:= La_Fecha + cSepDM + LEFT(aNomMes[MONTH(dFecha)], 3)
CASE nTipMes == 2
La_Fecha:= La_Fecha + cSepDM + aNomMes[MONTH(dFecha)]
ENDCASE
DO CASE
CASE nTipAmo == 1
La_Fecha:= La_Fecha + cSepMA + RIGHT(STR(YEAR(dFecha), 4, 0), 2)
CASE nTipAmo == 2
La_Fecha:= La_Fecha + cSepMA + STR(YEAR(dFecha), 4, 0)
ENDCASE
RETURN (La_Fecha)
Saludos
oCol:= oLbx:AddCol()
oCol:bStrData:= { || IF (!EMPTY(SQLField(cRec_Gen,"Rec_Femisi")),Date2Txt(SQLField(cRec_Gen,"Rec_Femisi")),"")}
oCol:cHeader := "Fecha de"+CRLF+"Emision"
oCol:nWidth := 80
oCol:nHeadStrAlign:= AL_CENTER
/*
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
° Funcion: Date2Txt()
Argumentos: 6
Argumento 1: La fecha a convertir variable tipo fecha
Argumento 2: Tipo de nombre del día 1=Corto, 2=Largo Ejem: 1=Sáb, 2=Sábado
Argumento 3: Tipo de nombre del mes 1=Corto, 2=Largo Ejem: 1=Ene, 2=Enero
Argumento 4: Tipo de año 1=2 dígitos, 2=4 dígitos Ejem: 1=99, 2=1999
Argumento 5: Separador entre el día de la semana y la fecha
Argumento 6: separador entre dia y mes
Argumento 7: separador entre mes y año
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
*/
FUNCTION Date2Txt(dFecha, nTipdia, nTipMes, nTipAmo, cSepDia, cSepDM, cSepMA)
LOCAL aNomMes:= {"Enero", "Febrero", "Marzo", "Abril", "Mayo", ;
"Junio", "Julio", "Agosto", "Septiembre", "Octubre", ;
"Noviembre", "Diciembre"}
LOCAL aNomDia:= {"Domingo", "Lunes", "Martes", "Míercoles", ;
"Jueves", "Viernes", "Sábado"}
LOCAL La_Fecha := ""
IF EMPTY(dFecha)
dFecha := DATE()
ENDIF
IF EMPTY(nTipDia)
nTipDia := 0
ENDIF
IF EMPTY(nTipMes)
nTipMes := 1
ENDIF
IF EMPTY(nTipAmo)
nTipAmo := 2
ENDIF
IF cSepDia == NIL
cSepDia := SPACE(1)
ENDIF
IF cSepDM == NIL
cSepDM := "/"
ENDIF
IF cSepMA == NIL
cSepMA := "/"
ENDIF
DO CASE
CASE nTipdia == 1
La_Fecha:= LEFT(aNomDia[DOW(dFecha)], 3) + cSepDia
CASE nTipdia == 2
La_Fecha:= aNomDia[DOW(dFecha)] + cSepDia
ENDCASE
La_Fecha:= La_Fecha + STR(DAY(dFecha), 2, 0)
DO CASE
CASE nTipMes == 1
La_Fecha:= La_Fecha + cSepDM + LEFT(aNomMes[MONTH(dFecha)], 3)
CASE nTipMes == 2
La_Fecha:= La_Fecha + cSepDM + aNomMes[MONTH(dFecha)]
ENDCASE
DO CASE
CASE nTipAmo == 1
La_Fecha:= La_Fecha + cSepMA + RIGHT(STR(YEAR(dFecha), 4, 0), 2)
CASE nTipAmo == 2
La_Fecha:= La_Fecha + cSepMA + STR(YEAR(dFecha), 4, 0)
ENDCASE
RETURN (La_Fecha)
Saludos
Re: Empezando con ADO SOLUCIONADO
Hola jbrita (¿ José ? )
El problema para aplicar tu función es que el campo fecha, no me viene como Date si no como TimeStamp es decir como fecha y hora.
Ha sido más fácil que eso, ya que estoy usando una clase que se llama TRecordSet . La solución ha sido modificar el método Load y con la función Ttoc de xHarbour convertir la TimeStamp en Date.
El problema para aplicar tu función es que el campo fecha, no me viene como Date si no como TimeStamp es decir como fecha y hora.
Ha sido más fácil que eso, ya que estoy usando una clase que se llama TRecordSet . La solución ha sido modificar el método Load y con la función Ttoc de xHarbour convertir la TimeStamp en Date.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Re: Empezando con ADO SOLUCIONADO
Pedro te cuento me esta pasando lo mismo con archivos DBISAM y no consigo como convertir estos campos timestamp, en que libreria esta la funcion ttoc() porque no la consigo en ninguna parte (segun es en xhb.lib)
Alejandro
Alejandro
Software especializado para oficinas contables con grandes volumenes de Informacion
Impresion de todos los formularios del Seniat, Dian
alex_patino74@hotmail.com
whatsapp 57+3214777217
Impresion de todos los formularios del Seniat, Dian
alex_patino74@hotmail.com
whatsapp 57+3214777217
Re: Empezando con ADO SOLUCIONADO
Hola Alex
La función Ttoc viene con xHarbour si quieres ver todas las funciones de xharbour mira este enlaze, (te tienes que dar de alta con tu correo)
http://www.xharbour.com/xhdn/
Yo la uso así en una función para hacer un load
La función Ttoc viene con xHarbour si quieres ver todas las funciones de xharbour mira este enlaze, (te tienes que dar de alta con tu correo)
http://www.xharbour.com/xhdn/
Yo la uso así en una función para hacer un load
Code: Select all | Expand
FUNCTION LOAD_DATOS(aDatos)
Local nLen := oRsPacien:Fields:Count
Local n ,cDate
For n := 1 To nLen
aDatos [n] := oRs:Fields( n-1 ):value
If aDatos[n] == Nil
aDatos[n] := F_BLANK( oRsPacien:Fields(n-1):type , oRsPacien:Fields(n-1):DefinedSize )
Endif
nTipo := oRsPacien:Fields(n-1):type
If nTipo == 7 .or. nTipo == 133 .or. nTipo == 135
******Esto puedes convertirlo directamente en cDate := Ctod(Substr(Ttoc(aDatos[n]),1,10))******
cDate := Ttoc(aDatos[n])
cDate := Substr(cDate,1,10)
aDatos[n] := Ctod(cDate)
EndIf
EndFor
Return(aDatos)
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO