Ola Amigos
:| Estou tendo dificuldades de enterder como montar esse Relatorio alguem pode me ajudar...
Esse relatorio tem que fazer o seguinte Verificar a Data e se tem algo do Funcionario no Banco de Dados...
Exemplo: Data 01/09/2006
Funcionario: 0000001
Ele tem que checar a Data e o Func. se a data for outra mas o funcionario o mesmo continua a impressao... Agora se a Data for a mesma e for outro funcionario ele salta a pagina e continua imprimindo até terminar a data Solicitada...
Segue Abaixo o Fonte...
*************************************************************
* RelDia.Prg - Modulo de Relatorio Movimento Diario por Data/Funcionario
* Programador : Araujo
* Data........: 01/09/2006
*************************************************************
#include "inkey.ch"
#include "visual2.ch"
Local aEnv:=SavEnv(00,00,24,79) ,;
dataini:=ctod("") ,;
datafim:=ctod("") ,;
vcodi:=0 ,;
ncodifun:=0
CorAtual:=SetColor()
Public cCor1 := "w+/b" , cCor2 := "b*/w+" , cCor3 := "w+/w,n/w"
Public cCor4 := "w+/b,b/w,,,w+/b" , cCor5 := "b/w" , cCor6 := "w/n"
Public cCor7 := "n/n"
Public cCor8:=('gr+/w,w/r,,,gr+/w')
Set Key K_F10 to
USEARQ("ARQ_FUNC","FUN" , 15 )
INDEX ON CodiFun TAG CodFun TO ARQ_FUNC
INDEX ON NomeFun TAG NomFun TO ARQ_FUNC
USEARQ("ARQ_PGTO","PGTO" , 15 )
INDEX ON codiPgto TAG CodPgt TO ARQ_PGTO
USEARQ("ARQ_PROD","PROD" , 15 )
INDEX ON CodiPro TAG ProCod TO ARQ_PROD
INDEX ON DescPro TAG ProDes TO ARQ_PROD
USEARQ("Mov_Ped","PED" , 15 )
INDEX ON CodiPedi TAG CodPed TO MOV_PED
INDEX ON dtos(datacad)+CodiFun TAG DtCadFun TO MOV_PED
INDEX ON CodiPedi+CodiFun TAG FunPed TO MOV_PED
ClrTed()
do while .t.
nlin=04
setcolor("B/W")
Frame(03,01,08,78,"Informa‡äes para EmissÆo do Relat¢rio",2,,,"R*/W")
@nlin+1,02 Say "Informe a Data Inicial.: "
@nlin+1,40 Say "Informe a Data Final.: "
@nlin+3,02 say "Informe o C¢d. do Funcionario.: "
Setcolor(cCor8)
Set Cursor On
@nlin+1 ,28 get dataini pict "@D" when DwnMsg( "Informe a Data Inicial ou <Esc> para Sair" )
@nlin+1 ,63 get datafim pict "@D" when DwnMsg( "Informe a Data Final" )
Read
if dataini=ctod("") .and. datafim=ctod("")
FUN->( DbCloseArea() )
PROD->( DbCloseArea() )
PGTO->( DbCloseArea() )
PED->( DbCloseArea() )
exit
endif
@nlin+3,34 get ncodifun pict "999999" when DwnMsg( "Informe o C¢digo do Funcion rio ou deixe em Branco para Todos" ) Valid _Func(ncodifun)
Read
@nlin+3,34 say strzero(ncodifun,6)
ws_codfun=codifun
If ncodifun<>0
@nlin+3,41 say Left(nomefun,30)
ws_fun=nomefun
Else
setcolor("R/W")
@nlin+3,41 say space(30)
@nlin+3,41 say "T O D O S"
Endif
If .not. IsPrinter()
Set Cursor off
MsgBox("A Impressora Est Desligada !","Aten‡Æo",,"W+/N","W+/R","W+/R")
Inkey(3)
dataini:=ctod("")
datafim:=ctod("")
ncodifun:=0
ClrTed()
Endif
MsgBox("Aguarde o Final da ImpressÆo... "+chr(251),"Mensagem",,"W+/N","W+/R","W+/R")
Select PED
goto top
Set Printer to Rel
* set device to printer
lin=61 ;Pag:= I:= TotFun:= TotDia:=0
do while .not. eof()
Cabec()
if datacad>=dataini .and. datacad<=datafim
vcodi=codifun
if ncodifun=codifun
seek vcodi
@Prow()+2,01 say "Codigo..: "
@Prow()+2,11 say ws_codfun
@Prow()+2,18 say ws_fun
@Prow()+1,01 say "Pagamento Efetuado com.: "
@Prow()+1,26 say FormPgto
@Prow()+1,01 say "Valor Total Recebido.: "
@Prow()+1,24 say vl_tota Pict "@E 999,999.99"
i=i+1
Endif
Endif
Skip
if vcodi<>codifun
exit
endif
Enddo
Set Device to Screen
FUN->( DbCloseArea() )
PROD->( DbCloseArea() )
PGTO->( DbCloseArea() )
PED->( DbCloseArea() )
Exit
Enddo
Set Key K_F10 to Saida
RstEnv(aEnv)
FUNCTION _Func
PARAMETERS v_Func
IF v_Func<>0
SELE FUN
SET ORDER TO TAG CODFUN
SEEK v_func
IF .NOT. FOUND()
MsgBox1("C¢digo do Funcion rio NÆo Cadastrado !")
ncodifun=0
RETURN(.F.)
ENDIF
ENDIF
RETURN(.T.)
Procedure Cabec
**********************************************************
* Objetivo: Formatar o Cabe‡alho do Relat¢rio do Sistema *
**********************************************************
Parameters titulo1,titulo2
titulo1="Studio Hair Cabeleireiros"
titulo2="Relatorio dos Servicos Diarios"
titulo1=space( ( 40 - Len(titulo1 ) ) / 2 ) + titulo1
titulo2=space( ( 40 - Len(titulo2 ) ) / 2 ) + titulo2
pag = pag + 1
@ 01,01 say "Emissao:"
@ 01,11 say date()
@ 01,66 say "Pagina No.: "+str(pag,3)
@ 02,00 say replicate("=",80)
@ 03,01 say chr(27)+'(s10h'+titulo1
@ 04,01 say chr(27)+'(s10h'+titulo2
@ 05,01 say replicate("=",80)
ncol=80
Return
Ficarei Grato pela Ajuda
Help em Relatorio
Moderador: Moderadores
Help em Relatorio
Sou novato em Clipper, mas tudo que desejo fazer atualmente é aprender mais sobre o Clipper e se vc puder me ajudar, em meus programas havera uma fase de agradecimentos a todos que me ajudarem. Por isso um viva aos Programadores em Clipper.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Ajuda para relatório
Caro Araújo,
Você poderia ser mais sintético no seu problema ?. Porque a idéia, seria ajudar mas não resolver o seu problema, sem que você não tenha a sua interação. Desculpe, não é que queira dizer: TE VIRA !. Não é isso. É que muito de nós poderia te ajudar nas suas questões técnicas e não levar mérito por terminar fazendo o sistema. Não fique ofendido, por favor. É que essa é a idéia pricipal, discutir, instruir, compartilhar aqui no FORUM. E seria mais conveniente sintetizar a sua questão.
Aguardo sua explicação da sua questão. Porque eu não entendí com tanto código a ser lido. Mas vamos, lá. Talvez eu possa te ajudar...
:)Pos
Você poderia ser mais sintético no seu problema ?. Porque a idéia, seria ajudar mas não resolver o seu problema, sem que você não tenha a sua interação. Desculpe, não é que queira dizer: TE VIRA !. Não é isso. É que muito de nós poderia te ajudar nas suas questões técnicas e não levar mérito por terminar fazendo o sistema. Não fique ofendido, por favor. É que essa é a idéia pricipal, discutir, instruir, compartilhar aqui no FORUM. E seria mais conveniente sintetizar a sua questão.
Aguardo sua explicação da sua questão. Porque eu não entendí com tanto código a ser lido. Mas vamos, lá. Talvez eu possa te ajudar...
:)Pos
-
Everton
- Usuário Nível 3

- Mensagens: 143
- Registrado em: 07 Jul 2004 08:53
- Localização: Campo Grande - MS
Olá Araujo.
Pelo que entendi da sua duvida eu lhe dou essa alternativa.
Crie um indice com a data e depois dá um dbseek(datainicio) com isso vc vai estar no inicio dos dados solicitados, depois e só fazer uma condição com if mesmo para validar o funcionario e se a data é inferior a data final caso contrario dá um dbskip() até o fim do arquivo, se falei besteira me desculpe mas pelo que entendi sobre a sua duvida essa é uma das soluções mais praticas. qualquer coisa estamos ai....
Pelo que entendi da sua duvida eu lhe dou essa alternativa.
Crie um indice com a data e depois dá um dbseek(datainicio) com isso vc vai estar no inicio dos dados solicitados, depois e só fazer uma condição com if mesmo para validar o funcionario e se a data é inferior a data final caso contrario dá um dbskip() até o fim do arquivo, se falei besteira me desculpe mas pelo que entendi sobre a sua duvida essa é uma das soluções mais praticas. qualquer coisa estamos ai....
Everton Luiz Penteado
Clipper 5.2b - Blink 7.0
Clipper 5.2b - Blink 7.0
