footer con totales
Publicado por Juan Morales (38 intervenciones) el 10/06/2011 15:13:57
Buen dia amigos, tengo un programa donde me inicio con xbrowse, con algunos ejemplos de la red lo pude hacer funcionar pero tengo el siguiente problema.. aver si alguien me puede ayudar uso fwh version 6.12 y su equivalebte eb xharbour, el browse se muestra bien pero no me edita un campo numerico definido como sdoi decimal de 15,2, uso base de datos MYSQL con ADO , ni tampoco he podido hacer que me totalize ese campo, si muestra una descripcion de totales en el footer, les dejo el programa,
#include "FiveWin.ch"
#Include "Ado.ch"
#include "xBrowse.ch"
FUNCTION VerMYSQL(oWindow)
LOCAL oWndVerMdb,oRs, oBrw, oCol
LOCAL oBar, oSay, nTotal:=0
DEFINE WINDOW oWndVerMdb MDICHILD OF oWindow FROM 5,0 TO 30,80 TITLE "Visualizar tabla CUENTAS" ;
oBar := TBar():New(oWndVerMdb,50,45,.T.)
@ 01,10 SAY oSay PROMPT '' SIZE 90,20 OF oBar
// -- Creamos RecordSet----
TRY
oRs:=TOleAuto():New("adodb.recordset")
CATCH oError
MsgStop( "No se ha podido crear el RECORDSET de Cuentas Contables !", oApp:cAplicacion)
ShowError(oError)
oRs:= NIL
RETURN(.F.)
END
oRs:CursorLocation := adUseClient
oRs:CursorType := adOpenDynamic
oRs:LockType := adLockOptimistic
oRs:Source := "SELECT * FROM WCUENTAS ORDER BY CUENTA"
oRs:ActiveConnection(oApp:oCon)
TRY
oRs:Open()
CATCH oError
MsgStop( "No se ha podido abrir el RECORDSET de Cuentas Contables !", oApp:cAplicacion)
ShowError(oError)
RETURN(.F.)
END
//--
oBrw := TXBrowse():New( oWndVerMdb )
* le voy agregando esto
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROW // Con cursor de todo el renglón
oBrw:nColDividerStyle := LINESTYLE_LIGHTGRAY
oBrw:nRowDividerStyle := LINESTYLE_LIGHTGRAY
oBrw:lColDividerComplete := (.F.) // (.T.) Mantiene siempre llena la pantalla
oBrw:nHeaderHeight := 25 // Altura de los encabezados
oBrw:nRowHeight := 22 // Altura del renglón
oBrw:nHeaderLines := 1 // Número de líneas de encabezados
oBrw:nDataLines := 1 // Número de líneas de detalle
oBrw:nFooterHeight := 20 // Altura del footer
oBrw:nFooterLines := 1 // Número de líneas en el footer
oBrw:lFooter := (.T.) // Sí queremos línea de footer
oBrw:lHScroll := (.F.) // Quitamos el scroll horizontal
oBrw:lFastedit:= (.F.) // Permite edicion de campos
oBrw:SetAdo(oRs)
oBrw:aCols[1]:cHeader := "Nro.Cuenta"
oBrw:aCols[1]:nWidth := 65
oBrw:aCols[2]:cHeader := "Descripcion"
oBrw:aCols[2]:nWidth := 200
oBrw:aColS[2]:cFooter := "TOTAL SALDO INICIAL"
oBrw:aCols[3]:cHeader := "Tipo"
oBrw:aCols[3]:nWidth := 50
oBrw:aCols[4]:cHeader := "Grupo"
oBrw:aCols[4]:nWidth := 50
oBrw:aCols[5]:cHeader := "SDO INICIAL"
oBrw:aCols[5]:nWidth := 150
oBrw:aColS[5]:nHeadStrAlign := AL_RIGHT
oBrw:aColS[5]:nDataStrAlign := AL_RIGHT
oBrw:aCols[5]:nEditType := 1
oBrw:aCols[5]:cEditPicture := "@Z 999.999.999.999,99"
*Brw:aCols[5]:ltotal := .t.
*oBrw:aCols[5]:ntotal := 0
*oBrw:aCols[5]:bFooter = {|| TRANSFORM(nTotal,"9,999,999,999.99") }
oBrw:bSeek := { | c | Busca(c,oRs) }
oBrw:oSeek := oSay
AEval(oBrw:aCols,{|oCol|oCol:bLClickHeader:={|f,c,h,oCol|Ordena(oBrw,oRs,oCol)}})
oBrw:CreateFromCode()
oWndVerMdb:oClient:=oBrw
ACTIVATE WINDOW oWndVerMdb ON INIT oBrw:SetFocus()
RETURN NIL
Al ejecutarlo no me reconoce las lineas con (*), prove con AGGR_TOTAL y me dice variable not found()
Sera por la version que uso habra otra manera de dar totales y no se porque el picture no lo reconoce..
Gracias por su ayuda..
#include "FiveWin.ch"
#Include "Ado.ch"
#include "xBrowse.ch"
FUNCTION VerMYSQL(oWindow)
LOCAL oWndVerMdb,oRs, oBrw, oCol
LOCAL oBar, oSay, nTotal:=0
DEFINE WINDOW oWndVerMdb MDICHILD OF oWindow FROM 5,0 TO 30,80 TITLE "Visualizar tabla CUENTAS" ;
oBar := TBar():New(oWndVerMdb,50,45,.T.)
@ 01,10 SAY oSay PROMPT '' SIZE 90,20 OF oBar
// -- Creamos RecordSet----
TRY
oRs:=TOleAuto():New("adodb.recordset")
CATCH oError
MsgStop( "No se ha podido crear el RECORDSET de Cuentas Contables !", oApp:cAplicacion)
ShowError(oError)
oRs:= NIL
RETURN(.F.)
END
oRs:CursorLocation := adUseClient
oRs:CursorType := adOpenDynamic
oRs:LockType := adLockOptimistic
oRs:Source := "SELECT * FROM WCUENTAS ORDER BY CUENTA"
oRs:ActiveConnection(oApp:oCon)
TRY
oRs:Open()
CATCH oError
MsgStop( "No se ha podido abrir el RECORDSET de Cuentas Contables !", oApp:cAplicacion)
ShowError(oError)
RETURN(.F.)
END
//--
oBrw := TXBrowse():New( oWndVerMdb )
* le voy agregando esto
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROW // Con cursor de todo el renglón
oBrw:nColDividerStyle := LINESTYLE_LIGHTGRAY
oBrw:nRowDividerStyle := LINESTYLE_LIGHTGRAY
oBrw:lColDividerComplete := (.F.) // (.T.) Mantiene siempre llena la pantalla
oBrw:nHeaderHeight := 25 // Altura de los encabezados
oBrw:nRowHeight := 22 // Altura del renglón
oBrw:nHeaderLines := 1 // Número de líneas de encabezados
oBrw:nDataLines := 1 // Número de líneas de detalle
oBrw:nFooterHeight := 20 // Altura del footer
oBrw:nFooterLines := 1 // Número de líneas en el footer
oBrw:lFooter := (.T.) // Sí queremos línea de footer
oBrw:lHScroll := (.F.) // Quitamos el scroll horizontal
oBrw:lFastedit:= (.F.) // Permite edicion de campos
oBrw:SetAdo(oRs)
oBrw:aCols[1]:cHeader := "Nro.Cuenta"
oBrw:aCols[1]:nWidth := 65
oBrw:aCols[2]:cHeader := "Descripcion"
oBrw:aCols[2]:nWidth := 200
oBrw:aColS[2]:cFooter := "TOTAL SALDO INICIAL"
oBrw:aCols[3]:cHeader := "Tipo"
oBrw:aCols[3]:nWidth := 50
oBrw:aCols[4]:cHeader := "Grupo"
oBrw:aCols[4]:nWidth := 50
oBrw:aCols[5]:cHeader := "SDO INICIAL"
oBrw:aCols[5]:nWidth := 150
oBrw:aColS[5]:nHeadStrAlign := AL_RIGHT
oBrw:aColS[5]:nDataStrAlign := AL_RIGHT
oBrw:aCols[5]:nEditType := 1
oBrw:aCols[5]:cEditPicture := "@Z 999.999.999.999,99"
*Brw:aCols[5]:ltotal := .t.
*oBrw:aCols[5]:ntotal := 0
*oBrw:aCols[5]:bFooter = {|| TRANSFORM(nTotal,"9,999,999,999.99") }
oBrw:bSeek := { | c | Busca(c,oRs) }
oBrw:oSeek := oSay
AEval(oBrw:aCols,{|oCol|oCol:bLClickHeader:={|f,c,h,oCol|Ordena(oBrw,oRs,oCol)}})
oBrw:CreateFromCode()
oWndVerMdb:oClient:=oBrw
ACTIVATE WINDOW oWndVerMdb ON INIT oBrw:SetFocus()
RETURN NIL
Al ejecutarlo no me reconoce las lineas con (*), prove con AGGR_TOTAL y me dice variable not found()
Sera por la version que uso habra otra manera de dar totales y no se porque el picture no lo reconoce..
Gracias por su ayuda..
Valora esta pregunta


0