'Nome       : GtsSQL.std
'Tipo       : LST
'Data       : 1999/12/16
'Versao     : 1.0
'Descricao  : Listagem controlada por SQL - GTS

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 1.0   1999/12/16 --------------------------------------------------
'Versao base


'==============================================================================
#DEF - Definicao global do documento
'==============================================================================
Caracteres invalidos             [CarInv]=#
##


'==============================================================================
#ESP - Campos especificos
'==============================================================================
##


'==============================================================================
#SQL - Comandos SQL
'==============================================================================
'Base de dados           [BD]=EmpFic$("EMP","Cemp,Emp_Dat.mdb")
Base de dados           [BD]=EmpFic$("EMP","Gts,Gts.mdb")

Rubricas               [Cmd]=GtsRub=+
   +SELECT * FROM GtsRub +
   +WHERE Cod$>='{OpcCodIni}' AND Cod$ <='{OpcCodFim}' +
   +ORDER By Cod$ 

Movimentos da rubrica  [Cmd]=RubMov=+
   +SELECT count(RubMov.[Cod$]) AS Num +
   +FROM GtsMov +
   +WHERE GtsMov.[Cod$]='{Cod$}'

Gerar opcoes da rubrica  [Cmd]=RubGopc=+
   +SELECT count(gtsMov.[Cod$]) AS Num, +
   +min(GtsMov.[AmoVl]) AS Min, +
   +max(GtsMov.[AmoVl]) AS Max, +
   +sum(GtsMov.[AmoVl]) AS Tot, +
   +avg(gtsMov.[AmoVl]) AS Med +
   +FROM GtsMov +
   +WHERE GtsMov.[Cod$]='{Cod$}'

##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=RubGrp,Rúbricas por grupo
Vias                       [DocVia]=Original

'formato
Impressora                 [DocPrt]=
Linhas por pagina          [DocLpg]=50
Colunas por linha          [DocCol]=80
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0

'funcoes de listagem
Listar cabecalho            [FxCAB]=Doc1_Cab
Listar linhas               [FxLIN]=Doc1_Lin; Sbt01,2; Sbt02,2; Sbt03,2
Listar fim                  [FxFIM]=Doc1_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=TesRub
'Subtotalizadores           [SQLSbt]=C1:3,C1:5,C2
'Subtotalizadores           [SQLSbt]=#1:3,#1:5,#2
'Subtotalizadores           [SQLSbt]=Cod$:3,Cod$:5,#10
Subtotalizadores           [SQLSbt]=Cod$:2,Cod$:6
'Subtotalizadores           [SQLSbt]=Cod$:3

'diversos
'parametros especificos
'Dados a listar            [DocEsp]=ConCmd=
##


'==============================================================================
#VAR - Variaveis
'==============================================================================
Pag      = Doc_CntPag
DataExt  = FrmVal$(Sig_DtHoje,45,0)

Cod      = SqlCmp$("Cod$")
Nome     = SqlCmp$("Nome$")

D1_Vl    = FrmNum$(15.1,SqlCmp("AmoV"))
CntL     = FrmNum$( 3.0,CntLin("CON"))

'valores por calculo SQL (usar a funcao SqlCalc)
Num      = FrmNum$( 3.0,SqlOpcCon("Num"))
Min      = FrmNum$(10.1,SqlOpcCon("Min"))
Max      = FrmNum$(10.1,SqlOpcCon("Max"))
Tot      = FrmNum$(10.1,SqlOpcCon("Tot"))
Med      = FrmNum$(10.1,SqlOpcCon("Med"))

'totais/subtotais
D1_VlTot = FrmNum$(15.1,Total(D1_Vl))
D1_T1    = FrmNum$(15.1,Total(D1_Vl,1))
D1_T2    = FrmNum$(15.1,Total(D1_Vl,2))

TotCnt   = FrmNum$( 3.0,TotCnt("D1_Vl",0))
##


'==============================================================================
#PGM - Programa/Funcoes
'==============================================================================
SUB FxIni 'inicializacao base
'x=SqlOpcAct("Opc1","Opcao 1")                  'activar opcao

cnt=0                                           'limpar contador
'x=SqlOpcAct("LinAdi",1)                         'usar linha adicional
x=SqlOpcAct("LinAdi",0)                         'nao usar linha adicional
end sub


SUB Lst_AJT
end sub


'- Documento 1 ------------------------------------------------------------------
SUB Doc1_CabIni 'inicializar documento
cnt=cnt+1                                      'contar
'x=SqlOpcAct("Cnt",cnt)                         'actualizar valor de opcao

if cnt>5 then 
   x=SqlOpcAct("LinAdi",1)                     'usar linha adicional
end if
end sub


SUB Doc1_Cab 'cabecalho
FxDiv LstIde,16CPI,0
'print TxTit$("TT=16CPI, LD, PT=66C, TL=16CPI",MemTxt$(1))
'FxDiv LstIde,10CPI,0
print TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI",MemTxt$(1))
?Data : @DataExt                                                  Folha No: @Pag#
?================================================================================
? Codigo         Nome                                                    Valor  #
?================================================================================
end sub


SUB Doc1_Lin 'linha
'tmp=SqlCalc("BemGopc")            'gerar valores calculados

?@Cod          @Nome                                            @D1_Vl          #

'linha adicional
usa=SqlOpcCon("LinAdi")           'validar linha adicional
if usa=1 then
?                      @Num           @Tot         @Med                         #
   tmp=CntLin("INC",1)            'contar linha adicional
end if
end sub


SUB Doc1_LinTit1 'titulo 1
tmp=CntLin("MIN",5)                         'minimo de linhas
tmp=CntLin("INC",1)                         'contar linha
print tab(5) "Ano: " SbtInf$("ACT",1)       'identificar grupo
end sub


SUB Doc1_LinTit2 'titulo 2
tmp=CntLin("MIN",5)                         'minimo de linhas
tmp=CntLin("INC",1)                         'contar linha
print tab(5) "Grupo : " SbtInf$("ACT",2)    'identificar grupo
end sub


SUB Doc1_LinSbt1 'sobtotal 1
print tab(5) "Subtotal: " SbtInf$("ANT",1);          'identificar subtotal
print tab(53) FrmNum$( 3.0,TotCnt("D1_Vl",1));
print tab(64) FrmNum$(15.1,Total("D1_Vl",1))

?
tmp=CntLin("INC",2)          'contar linhas
x=TotLpz(1)                  'limpar totais
end sub


SUB Doc1_LinSbt2 'sobtotal 2
print tab(5) "Subtotal: " SbtInf$("ANT",2);
print tab(53) FrmNum$( 3.0,TotCnt("D1_Vl",2));
print tab(64) FrmNum$(15.1,TotCon("D1_Vl",2))
?
?
tmp=CntLin("INC",3)              'contar linhas
x=TotLpz(2)                      'limpar totais
end sub


SUB Doc1_Fim 'totais
?================================================================================
?                                           Totais : @TotCnt    @D1_VlTot       #
?================================================================================
FxDiv LstPer,SP
'Print PrtCmd$("[SP]");
end sub


SUB Doc1_FimAjt 'fim de pagina intermedia
?================================================================================
FxDiv LstPer,SP
'Print PrtCmd$("[SP]");
end sub
##



