criando relatorio de pesquisa

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Gelson
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 16 Abr 2005 17:04

criando relatorio de pesquisa

Mensagem por Gelson »

Boa tarde, pessoal

Estou tentando criar meu primeiro relatório em clipper coisa simples mas estou apanhando não sei onde. tenho um banco de dados movim(conta,data,ct,dat_lanc,valor) clientes(conta,nome,endereço) preciso que o relatório saia apenas as contas com os nomes dos clientes com o saldo devedor no periodo solicitado.Antes até imprimia só que tudo errado, mas agora de tanto mexer e re-mexer no fonte o papel fica parado perto da cabeça de impressão e não imprime nada, andei pesquisando aqui no site e vi uma serie de tipos de filtragem, confesso que ainda estou meio perdido, se alguém puder me mostar onde estou errando, fico grato. segue abaixo meu fonte (só não reparem a simplicidade do mesmo).

Código: Selecionar todos

*PROGRAMA  :   CCOP33
*AUTOR        :   GELSON
*DATA          :   04/04/2005
*OBJETIVO    :   EMITIR RELACAO DE SALDOS DEVEDORES
*
CLEAR
mlinha = 66
mfolha = 1
mtotsal = 0.00
mdat_ini   = CTOD('  /  /  ')
mdata      = CTOD('  /  /  ')
mdatfim    = CTOD('  /  /  ')
mdata   = CTOD('  /  /  ')
mtipo   = 0

USE CLIENTES INDEX INCLIENT
SELECT 2
USE MOVIM    INDEX IMOVIM
SELECT 3
USE HISTOR  INDEX IHISTOR

@12,10 SAY 'INFORME DATA INICIAL:'
@12,34 GET mdat_ini PICTURE '99'
@13,10 SAY 'INFORME DATA FINAL:'
@13,34 GET mdatfim
@14,01 SAY 'INFORME O TIPO:'
@14,21 GET mtipo PICTURE '9'
@14,23 SAY '1 -> CARRETEIRO'
@15,23 SAY '2 -> CLIENTES'
@16,23 SAY '3 -> FUNCIONARIOS'
@17,23 SAY '4 -> TODOS' 
@24,11 SAY DAY(DATE())
@24,16 SAY CMONTH(DATE())
@24,25 SAY YEAR(DATE())

READ

SET CONSOLE OFF
SET PRINT ON
?? CHR(27) + CHR(15)
SET PRINT OFF
SET CONSOLE ON

SET DEVICE TO PRINT

SELECT 1
DO WHILE .NOT. EOF()
 IF CONTA = '99998'
  SKIP
  LOOP
 ENDIF
 DO CASE 
  CASE mtipo = 1
   IF VAL(CONTA)  > 19999
    SKIP
    LOOP
   ENDIF
  CASE mtipo = 2
   IF VAL(CONTA)  > 30000 .OR. VAL(CONTA)  < 20000
    SKIP
    LOOP
   ENDIF
  CASE mtipo = 3 
   IF VAL(CONTA)  < 30000
    SKIP
    LOOP
   ENDIF
  CASE mtipo = 4
  IF VAL(CONTA) < 1 .OR. VAL(CONTA) > 99998
  SKIP
  LOOP
  ENDIF
 ENDCASE

 SELECT 2
 mvalor = 0.00
 SEEK CLIENTES->CONTA
 DO WHILE CLIENTES->CONTA = CONTA .AND. DATA  <= mdatfim;
                                                             .AND. .NOT. EOF()
*    SET FILTER TO CT = 01 //tentei usar não deu certo
    IF CT = 01
   mvalor = mvalor + VALOR
   ENDIF
  SKIP
 ENDDO
 IF mlinha > 50
  @1,10 SAY '** xxxxxxxxxxxxxxxx **  -  xxxxxxxxxxx'
  @1,65 SAY 'FOLHA'
  @1,69 SAY mfolha PICTURE '999'
  @2,20 SAY 'RELACAO DE SALDOS DEVEDORES ATE'
  SET CENTURY ON
  @2,48 SAY mdat_ini
  @2,61 SAY mdatfim
  SET CENTURY OFF
  DO CASE
   CASE mtipo = 1
    @2,75 SAY 'CARRETEIROS'
   CASE mtipo = 2
    @2,75 SAY 'CLIENTES'
   CASE mtipo = 3  
    @2,75 SAY 'FUNCIONARIOS'
   CASE mtipo = 4
   @2,75 SAY 'TODOS'
   ENDCASE
  @4,4  SAY 'CONTA'
  @4,14 SAY 'NOME'
  @4,50 say 'SALDO'
  mfolha = mfolha + 1
  mlinha = 5
 ENDIF
 SELECT 1
 @mlinha,4   SAY CONTA
 @mlinha,10  SAY NOME
IF mvalor < 0.00
 @mlinha,44  SAY -mvalor PICTURE '9,999,999,999.99D'
mlinha = mlinha + 1
  SKIP
  ENDIF
ENDDO
@mlinha,35 SAY 'T O T A L    = >'
EJECT
SET DEVICE TO SCREEN

SET CONSOLE OFF
SET PRINT ON
?? CHR(27) + '@'     
SET PRINT OFF
SET CONSOLE ON
EJECT
USE
CLEAR
RETURN
me desculpem pelas letras em maiúsculo, sei que é falta de educação, tenho que mudar meu fonte.
Avatar do usuário
marbio
Usuário Nível 3
Usuário Nível 3
Mensagens: 206
Registrado em: 29 Jul 2004 16:26

Rotina de pesquisa

Mensagem por marbio »

Bom dia!!!


Ainda nao termineio a minha rotina, mas aqui vc pode colar filtro por periodo, com arquivo temporario,


o arquivo CREDITO.DBF -> contas a receber
o arquivo CLIENTE.DBF -> e a onde que sistema pega o codigo para buscar no banco CREDITO.DBF para ficar mais facil.

:xau

Código: Selecionar todos

#include "common.ch"
#include "inkey.ch"
save screen to screen
close all
box3dr2(07,13,41,54)
box3df2(05,20,04,75)
setcolor(cor4)
@03,15 say empresa
@01,05 say 'Usuario.: ' +user
@05,07 say ' Relatorio de Convenios atrazado '
setcolor(cor2)

select 1
if netuse("credito",.f.,10)
set index to cre001, cre002
else
   msgab()
   return
endif

select 2
if netuse("cliente",.f.,10)
*set index to pro002,pro001, pro003
else
   msgab()
   return
endif


letragrande(08,07,"AGUARDE",219)

l=1
set device to print
@prow()+00,00 say chr(15)
@prow()+01,00 say '---------------------------------------------------------'
@prow()+01,00 say date()
@prow()+00,30 say time()
@prow()+01,00 say '---------------------------------------------------------'
@prow()+01,13 say chr(15)+chr(14)+'Contas a Receber'
@prow()+01,00 say chr(18)+chr(15)+'---------------------------------------------------------'
@prow()+01,00 say 'Cliente                                          Valor R$'
@prow()+01,00 say '---------------------------------------------------------'
set device to screen

xtotal6=0
do while .t.

select 2
aa=reccount()

select 2
for xx=1 to aa
   xcli=codigo
   xnome=nome
   select 1
   set order to 1
   seek xcli
   prow=1
   if  found()
      xtotal5=0
      select 1
      set device to print
      preco()
      set device to screen
   endif
   select 2
   skip
next
set device to print
@prow()+01,01 say 'Total R$' + Transform(xtotal6, "@e 999,999.99")
set device to screen
   restore screen
*exit
do rpro001
enddo


************************************
function preco
      do while (.T.)
         GO TOP
         do while (!EOF())
            if xcli=codcl
               xtotal5+=venda
            endif
            skip
         enddo
         @prow()+01,01 say xnome + ' - ' + Transform(xtotal5, "@e 999,999.99")
         xtotal6+=xtotal5
         if (EOF())
            exit
         endif
      enddo

*do principa 

vc pode tirar uma ideia verto

:*
Sempre há uma solucao para os nossos problema clipper.....
Gelson
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 16 Abr 2005 17:04

Mensagem por Gelson »

Pessoal,
Fiz a seguinte mudança no meu fonte aproveitando as dicas deixadas neste forum no topico "filtro por data e codigo"

agora ficou assim :

select 2
mvalor = 0.00
seek clientes
Do while clientes->conta = conta .and. .not. eof()
set filter to CT=001 .and. DATA >=dat_ini .and. DATA <= datfim
mvalor = mvalor + VALOR

só que agora a impressora nem puxa o papel.
Avatar do usuário
marbio
Usuário Nível 3
Usuário Nível 3
Mensagens: 206
Registrado em: 29 Jul 2004 16:26

de uma olha

Mensagem por marbio »

Ola Gelson,



Vc deu uma olha no fonte acima, se vc usar o set filter vai ficar muito lento, se vc trabar em rede entao nem si fala,

Em baixo o SET FILTER colocar GO TOP, vc se da certo ok.



:* -:] :xau
Sempre há uma solucao para os nossos problema clipper.....
Gelson
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 16 Abr 2005 17:04

Mensagem por Gelson »

ok, vou testar agora mesmo.
Antes tenho que desligar o micro pois estou usando o XP, e o sistema ainda não esta entrando no XP, tenho que ficar trocando de HD para abrir o sistema.

obrigado pela ajuda, já já eu volto.
Gelson
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 16 Abr 2005 17:04

Mensagem por Gelson »

blz, Marbio
Depois que coloquei GO TOP abaixo do set filter, a impressora voltou a dar sinal de vida. Até que o set filter foi rápido
Porém tem algo de errado com meu filtro, foram impressas 12 contas sem saldo nenhum no periodo selecionado, deveria sair apenas uma conta com valor de 950,00,
Na teoria seria assim: data inicial - data final, tipo de cliente (1,2,3..) somando apenas os valores dos respectivos clientes quando o campo CT for exatamente igual a 001, quem não tiver nenhuma movimentação com este codigo no periodo não pode sair no relatório.
Avatar do usuário
marbio
Usuário Nível 3
Usuário Nível 3
Mensagens: 206
Registrado em: 29 Jul 2004 16:26

Mensagem por marbio »

Ola Gelson,

Vc deu uma olha na minha rotina eu acho que fica mais faciel, de vc usar de uma olha outra vez, vc nao tera esse tipo de problema.

Pega a funcao que eu fiz, vc tera o seguinte a impresso de todos os cliente, vc melhora a funcao para trabalar em periodo, pode ser indice temporario,

t+

:-Y
Sempre há uma solucao para os nossos problema clipper.....
Gelson
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 16 Abr 2005 17:04

Mensagem por Gelson »

Olá. Marbio blz ?

Eu já vi o seu fonte, não queria confessar mas estou todo perdido nele, não sei se serve como desculpa mas este é meu primeiro relatório até suas linhas de programação são muito mais arrojadas do que as minhas.
tô até envergonhado. :-O Se você tiver alguma apostila maneira ai manda para mim, olhei aqui no site e não achei na net só achei uma peguei e já estou usando.

Quanto ao relatório ainda tento descobrir minha mancada.

obrigado pelo apoio.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Mensagem por Toledo »

Gelson,

Alterei algumas linhas de comandos no seu fonte, veja as anotações no próprio fonte.

Código: Selecionar todos

*PROGRAMA  :   CCOP33 
*AUTOR        :   GELSON 
*DATA          :   04/04/2005 
*OBJETIVO    :   EMITIR RELACAO DE SALDOS DEVEDORES 
* 
CLEAR 
mlinha = 66 
mfolha = 1 
mtotsal = 0.00 
mdat_ini   = CTOD('  /  /  ') 
mdata      = CTOD('  /  /  ') 
mdatfim    = CTOD('  /  /  ') 
mdata   = CTOD('  /  /  ') 
mtipo   = 0 

*** SELECIONAR A AREA DE ABERTURA DO ARQUIVO ***
SELECT 1
USE CLIENTES INDEX INCLIENT 
SELECT 2 
USE MOVIM    INDEX IMOVIM 
SELECT 3 
USE HISTOR  INDEX IHISTOR 

@12,10 SAY 'INFORME DATA INICIAL:' 
*** A MASCARA PARA DATA E "@D" E NAO "99" ***
@12,34 GET mdat_ini PICTURE '@D' 
@13,10 SAY 'INFORME DATA FINAL:' 
@13,34 GET mdatfim PICT '@D'
@14,01 SAY 'INFORME O TIPO:' 
@14,21 GET mtipo PICTURE '9' 
@14,23 SAY '1 -> CARRETEIRO' 
@15,23 SAY '2 -> CLIENTES' 
@16,23 SAY '3 -> FUNCIONARIOS' 
@17,23 SAY '4 -> TODOS' 
@24,11 SAY DAY(DATE()) 
@24,16 SAY CMONTH(DATE()) 
@24,25 SAY YEAR(DATE()) 

READ 

*** PARA ENVIAR PARA A IMPRESSORA USE APENAS ***
*** OS COMANDOS ABAIXO ***
SET PRINTER TO LPT1
SET DEVICE TO PRINT 
?? CHR(27) + CHR(15) 

SELECT 1 
DO WHILE .NOT. EOF() 
 IF CONTA = '99998' 
  SKIP 
  LOOP 
 ENDIF 
 DO CASE 
  CASE mtipo = 1 
   IF VAL(CONTA)  > 19999 
    SKIP 
    LOOP 
   ENDIF 
  CASE mtipo = 2 
   IF VAL(CONTA)  > 30000 .OR. VAL(CONTA)  < 20000 
    SKIP 
    LOOP 
   ENDIF 
  CASE mtipo = 3 
   IF VAL(CONTA)  < 30000 
    SKIP 
    LOOP 
   ENDIF 
  CASE mtipo = 4 
   IF VAL(CONTA) < 1 .OR. VAL(CONTA) > 99998 
    SKIP 
    LOOP 
   ENDIF 
 ENDCASE 

 SELECT 2 
 mvalor = 0.00 
 *** O CORRETO AQUI SERIA DAR UM SEEK NA CONTA E ***
 *** DATA INICIAL INFORMADA, MAS PRA ISTO, VOCE TEM ***
 *** QUE CRIAR UM INDICE CUJO CAMPOS CHAVES SEJAM ***
 *** CONTA+DTOS(DATA). ***
 SEEK CLIENTES->CONTA 
 DO WHILE CLIENTES->CONTA = CONTA .AND. !EOF()
  IF CT = 01 .AND. (DATA  >=mdat_ini .AND. DATA <= mdatfim)
   mvalor = mvalor + VALOR 
  ENDIF 
  SKIP 
 ENDDO 
 IF mlinha > 50 
  @1,10 SAY '** xxxxxxxxxxxxxxxx **  -  xxxxxxxxxxx' 
  @1,65 SAY 'FOLHA' 
  @1,69 SAY mfolha PICTURE '999' 
  @2,20 SAY 'RELACAO DE SALDOS DEVEDORES ATE' 
  SET CENTURY ON 
  @2,48 SAY mdat_ini 
  @2,61 SAY mdatfim 
  SET CENTURY OFF 
  DO CASE 
   CASE mtipo = 1 
    @2,75 SAY 'CARRETEIROS' 
   CASE mtipo = 2 
    @2,75 SAY 'CLIENTES' 
   CASE mtipo = 3  
    @2,75 SAY 'FUNCIONARIOS' 
   CASE mtipo = 4 
    @2,75 SAY 'TODOS' 
  ENDCASE 
  @4,4  SAY 'CONTA' 
  @4,14 SAY 'NOME' 
  @4,50 say 'SALDO' 
  mfolha = mfolha + 1 
  mlinha = 5 
 ENDIF 
 SELECT 1 
 @mlinha,4   SAY CONTA 
 @mlinha,10  SAY NOME 
 IF mvalor < 0.00 
  @mlinha,44  SAY -mvalor PICTURE '9,999,999,999.99D' 
  mlinha = mlinha + 1 
  *** ESTE SKIP TEM QUE ESTAR FORA DO ENDIF ***
*  SKIP 
 ENDIF 
 SKIP
ENDDO 
@mlinha,35 SAY 'T O T A L    = >' 
EJECT 
?? CHR(27) + '@'
SET PRINTER TO
SET DEVICE TO SCREEN 
*** PARA FECHAR TODOS OS ARQUIVOS ***
*** VOCE DEVE USAR O CLOSE DATABASES ***
CLOSE DATA
CLEAR 
RETURN 
Caso no arquivo MOVIM você crie um novo arquivo de índice com os campos chaves CONTA+DTOS(DATA), selecione este novo índice na abertura do arquivo MOVIM e altere o seu fonte da seguinte maneira:

Procure as seguintes linhas no seu fonte:

Código: Selecionar todos

 SEEK CLIENTES->CONTA 
 DO WHILE CLIENTES->CONTA = CONTA .AND. !EOF()
  IF CT = 01 .AND. (DATA  >=mdat_ini .AND. DATA <= mdatfim)
e troque por:

Código: Selecionar todos

 SET SOFTSEEK ON
 SEEK CLIENTES->CONTA+DTOS(mdat_ini)
 SET SOFTSEEK OFF
 DO WHILE CLIENTES->CONTA = CONTA .AND. DATA <= mdatfim;
  .AND. !EOF()
  IF CT = 01
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Gelson
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 16 Abr 2005 17:04

Mensagem por Gelson »

Boa noite, Toledo - blz ?

Fiz as alterações e cirei um arquivo de indice contadat com os campos chaves CONTA+DTOS(DATA), o select 2 ficou assim:
use movim index contadat

Porém na impressão ainda sae errado deveria sair apenas a conta 30300 com saldo de 950,00, não está saindo nenhum saldo e o nome, a conta e total geral estão sendo impresso na mesma linha, um emcima do outro, nem dá pra ler, não sei se tem algo ha ver mas estou usando uma impressora Apollo (jato de tinta).
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Mensagem por Toledo »

Gelson,

Estou com uma dúvida, no seu fonte original você está somando o campo VALOR do arquivo MOVIM em uma variável mvalor (mvalor = mvalor + VALOR), e depois você verifica se mvalor é menor que ZERO (IF mvalor < 0.00) para fazer a impressão. Minha dúvida é a seguinte: neste campo VALOR você grava valores menor que zero?

Se sim, use então este fonte:

Código: Selecionar todos

*PROGRAMA  :   CCOP33 
*AUTOR        :   GELSON 
*DATA          :   04/04/2005 
*OBJETIVO    :   EMITIR RELACAO DE SALDOS DEVEDORES 
* 
CLEAR 
mlinha = 66 
mfolha = 1 
mtotsal = 0.00 
mdat_ini   = CTOD('  /  /  ') 
mdata      = CTOD('  /  /  ') 
mdatfim    = CTOD('  /  /  ') 
mdata   = CTOD('  /  /  ') 
mtipo   = 0 

SELECT 1 
USE CLIENTES INDEX INCLIENT 
SELECT 2 
USE MOVIM    INDEX CONTADAT 
SELECT 3 
USE HISTOR  INDEX IHISTOR 

@12,10 SAY 'INFORME DATA INICIAL:' 
@12,34 GET mdat_ini PICTURE '@D' 
@13,10 SAY 'INFORME DATA FINAL:' 
@13,34 GET mdatfim PICT '@D' 
@14,01 SAY 'INFORME O TIPO:' 
@14,21 GET mtipo PICTURE '9' 
@14,23 SAY '1 -> CARRETEIRO' 
@15,23 SAY '2 -> CLIENTES' 
@16,23 SAY '3 -> FUNCIONARIOS' 
@17,23 SAY '4 -> TODOS' 
@24,11 SAY DAY(DATE()) 
@24,16 SAY CMONTH(DATE()) 
@24,25 SAY YEAR(DATE()) 

READ 

SET PRINTER TO LPT1 
SET DEVICE TO PRINT 
?? CHR(27) + CHR(15) 

SELECT 1 
DO WHILE .NOT. EOF() 
 IF CONTA = '99998' 
  SKIP 
  LOOP 
 ENDIF 
 DO CASE 
  CASE mtipo = 1 
   IF VAL(CONTA)  > 19999 
    SKIP 
    LOOP 
   ENDIF 
  CASE mtipo = 2 
   IF VAL(CONTA)  > 30000 .OR. VAL(CONTA)  < 20000 
    SKIP 
    LOOP 
   ENDIF 
  CASE mtipo = 3 
   IF VAL(CONTA)  < 30000 
    SKIP 
    LOOP 
   ENDIF 
  CASE mtipo = 4 
   IF VAL(CONTA) < 1 .OR. VAL(CONTA) > 99998 
    SKIP 
    LOOP 
   ENDIF 
 ENDCASE 

 SELECT 2 
 *** VAMOS PARA O INICIO DO ARQUIVO ***
 GO TOP
 mvalor = 0.00 
 SET SOFTSEEK ON 
 SEEK CLIENTES->CONTA+DTOS(mdat_ini) 
 SET SOFTSEEK OFF 
 DO WHILE CLIENTES->CONTA = CONTA .AND. DATA <= mdatfim; 
  .AND. !EOF() 
  IF CT = 01 
   mvalor = mvalor + VALOR 
  ENDIF 
  SKIP 
 ENDDO
 *** VAMOS SELECIONAR O ARQUIVO CLIENTES ***
 SELECT 1 
 *** SE mvalor FOR MENOR QUE ZERO ***
 *** VAMOS IMPRIMIR ***
 IF mvalor < 0 
  IF mlinha > 50 
   @1,10 SAY '** xxxxxxxxxxxxxxxx **  -  xxxxxxxxxxx' 
   @1,65 SAY 'FOLHA' 
   @1,69 SAY mfolha PICTURE '999' 
   @2,20 SAY 'RELACAO DE SALDOS DEVEDORES ATE' 
   SET CENTURY ON 
   @2,48 SAY mdat_ini 
   @2,61 SAY mdatfim 
   SET CENTURY OFF 
   DO CASE 
    CASE mtipo = 1 
     @2,75 SAY 'CARRETEIROS' 
    CASE mtipo = 2 
     @2,75 SAY 'CLIENTES' 
    CASE mtipo = 3  
     @2,75 SAY 'FUNCIONARIOS' 
    CASE mtipo = 4 
     @2,75 SAY 'TODOS' 
   ENDCASE 
   @4,4  SAY 'CONTA' 
   @4,14 SAY 'NOME' 
   @4,50 say 'SALDO' 
   mfolha = mfolha + 1 
   mlinha = 5 
  ENDIF 
  @mlinha,4   SAY CONTA 
  @mlinha,10  SAY NOME 
  @mlinha,44  SAY -mvalor PICTURE '9,999,999,999.99D' 
   mlinha = mlinha + 1 
 ENDIF
 SKIP 
ENDDO 
@mlinha,35 SAY 'T O T A L    = >' 
EJECT 
?? CHR(27) + '@' 
SET PRINTER TO 
SET DEVICE TO SCREEN 
CLOSE DATA 
CLEAR 
RETURN 
Obs.: no seu código original, você imprime a conta e o nome do cliente antes de saber se o mvalor é menor que zero; a soma da variável mlinha é feita apenas se o mvalor é menor que zero. Por este motivo que a impressão era feita uma sobre a outra... todos os clientes que tiverem valores maiores que zero, serão impresso um sobre o outro... sua impressora não tem nada a ver com isto.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Gelson
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 16 Abr 2005 17:04

Mensagem por Gelson »

Bom dia , Toledo

Eu errei o correto é: IF mvalor > 0.00 ( tem que sair apena os saldo maiores que zero.)

Já mudei meu fonte e daqui a pouco post os resultados.

Obrigado mais um vez.
Gelson
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 16 Abr 2005 17:04

Mensagem por Gelson »

Olá, Toledo,

Mudei para:
IF mvalor > 0.00
@mlinha,44 SAY -mvalor PICTURE '9,999,999,999.99D'
mlinha = mlinha + 1
ELSE **** ACRESCENTEI***
SKIP **** ACRESCENTEI***
ENDIF

Esta saindo o saldo correto, porém esta sendo impresso a mesma coisa várias vezes.
Gelson
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 16 Abr 2005 17:04

Mensagem por Gelson »

Olá, Toledo

Re-lendo seu post anterior vi que você já respondeu minha dúvida, alterei de acordo com seu post e deu tudo certinho...

Fico muitissimo grato a você e a todos os outros colegas pela ajuda.

:))

um abraço.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Mensagem por Toledo »

Gelson,

Utilize o fonte que eu alterei na minha mensagem anterior e faça a seguinte modificação:

Procure:

Código: Selecionar todos

 IF mvalor < 0
e troque por:

Código: Selecionar todos

 IF mvalor > 0
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Responder