Empezando con ADO SOLUCIONADO

Empezando con ADO SOLUCIONADO

Postby Pedro » Tue Mar 06, 2012 11:15 am

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.
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
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Empezando con ADO

Postby jbrita » Tue Mar 06, 2012 12:17 pm

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
jbrita
 
Posts: 486
Joined: Mon Jan 16, 2006 3:42 pm

Re: Empezando con ADO SOLUCIONADO

Postby Pedro » Tue Mar 06, 2012 12:38 pm

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.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Empezando con ADO SOLUCIONADO

Postby QAZWSX2K » Fri Apr 06, 2012 3:36 pm

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
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
User avatar
QAZWSX2K
 
Posts: 363
Joined: Tue Oct 25, 2005 7:06 pm
Location: Bogota - Caracas

Re: Empezando con ADO SOLUCIONADO

Postby Pedro » Fri Apr 06, 2012 6:38 pm

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
Code: Select all  Expand view

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
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 101 guests