Página 3 de 3
Enviado: 01 Ago 2007 11:04
por diogenes_varela
mlinha = mlinha + 1
O comando "?" não poderá ser usado no seu caso, pois a posição da linha está sendo atribuída a uma variável (mlinha).
Sou sempre a favor da compactação de comandos:
a) para pular uma linha: mlinha++
b) para pular duas linhas: mlinha+=2
Para acumular o valor para cada cliente:
Use apenas um vtotal+=valor
Para zerar a variável quando mudar o cliente:
Use apenas um vtotal=0, como sugeriu o sygecom...
Enviado: 01 Ago 2007 11:16
por Pablo César
Ahh sim, esse contador mlinha, não tem necessidade de utilizar logo após que o Gelson me confirmou que iriá utilizar o "?" quando eu o questionei sobre:
veja um detalhe Gelson, aconselho você utilizar para imprimir o "?" ou "@" para que fique padronizado
Mas a sua indicação serve como boa referência de compactar comandos. As vezes eu coloco de forma mais entendível e acabo induzindo ao uso à moda antiga. Mas é louvável você ter mencionado. No entanto o colega agora está com um problema de datas, percebeu ?
ahh gostei da sua frase, Diógenes: "Quem é esse General Failure? O que ele está fazendo no meu HD ?" hohoho essa é boa !
Enviado: 01 Ago 2007 11:39
por Ademir
desculpe... peguei o bonde meio que andando mas o problema do Gelson não seria mais facil ele gerar um arquivo temporario a partir das datas inicial e final indexado por nome e ai sim imprimir este arquivo separando os totais por nome ?
Enviado: 01 Ago 2007 11:41
por Ademir
acho que se ele tem um arquivo indexado por nome+data por exemplo vai ser meio complicado ele filtrar na impressao por data e ainda subtotalizar por nome...
até da pra fazer, mas a logica é um pouco mais complicada acho eu.
Enviado: 01 Ago 2007 11:42
por Pablo César
Acho válido gerar um arquivo temporário, isto iria isolar a seleção de registros e ele poder avaliar o que está ocorrendo. no entanto eu são a favor de criar arquivos temporários, só nas últimas instâncias, ora para obter uma resposta mais rápida e o usuário não ficar muito tempo esperando. Se bem que há vezes não é tanto assim....
Enviado: 01 Ago 2007 11:59
por Ademir
acho que seria mais ou menos isso...
Código: Selecionar todos
subtotal=0
mlinha=99
go top
do whil !eof()
if mlinha > 60
@ 0,0 say "CABEÇALHO"
@ 1,0 say repl("=",80)
mlinha=2
endi
if NDATAEM >= datainicial .and. NDATAEM <= datafinal
subtotal=subtotal+NVALORNOTA
@mlinha,4 SAY NDATAEM
@mlinha,14 SAY NNUMERONOT
@mlinha,24 SAY NRAZAO
@mlinha,68 SAY NVALORNOTA PICTURE '9,999,999,999.99'
mlinha++
endi
NRAZAOV=NRAZAO
skip
if eof() .or. NRAZAO#NRAZAOV
if subtotal > 0
@MLINHA,24 SAY "Total de " + NRAZAOV + subtotal
MLINHA=MLINHA+2
subtotal=0
endi
endi
endd
Enviado: 01 Ago 2007 12:05
por Pablo César
Se mais o colega queria os resultados ordenados e o maior problema é o índice.
Obs.: Ademir, poderia marcar bloco do seu código-exemplo e utilizar o botão "code" para que tudo fque edentado da prox. vez ?
Enviado: 01 Ago 2007 12:14
por Ademir
desculpe mas nao estou acostuma a foruns.... vai dando as dicas que eu vou me corrigindo aqui ok ?
valeu
Enviado: 01 Ago 2007 14:08
por Gelson
Olá, Pablo. Tudo bem ?
Data incial ou mdati_ini = testei com 01/06/2007
Data final ou mdatfim = testei com 15/06/2007
Têm que constar todas as NF emitidas neste período, incluindo as NF do dia 01/06, e as do dia 15/06.
[ as informações abaixo saem no relatório ]
@mlinha,4 SAY NDATAEM
@mlinha,14 SAY NNUMERONOT
@mlinha,24 SAY NRAZAO
@mlinha,68 SAY NVALORNOTA PICTURE '9,999,999,999.99'
Vou aproveitar as dicas do diogenes_varela para dar uma enxugada no meu fonte.
Está funcionando com o +1 e –1, vou fazer vistas grossas e deixar assim mesmo por ora, depois vou re-mexendo até descobrir. Fiquei curioso porque achei muito estranho.
Agora vou testar via rede, e dando certo, vou dar uma estudada na visual lib hoje a noite e ver de faço um tela mais interessante.
Mais uma vez fico grato a você e os demais colegas pela atenção, as explicações que tenho recebido têm sido ricas em detalhes o que ajuda muito.
Enviado: 01 Ago 2007 14:37
por Ademir
VEJA MEU EXEMPLO... TALVEZ O AJUDE...
Enviado: 01 Ago 2007 17:49
por Gelson
Olá, Ademir
O seu exemplo não gera o relatório com os espaços quando muda o nome ( nrazão)
Mesmo trocando o # por =, pois no fonte que Pablo passou está diferente,
também falta repetir NRAZAOV=NRAZAO depois que é impresso o total.
Porém mesmo alterando não gera com espaço quando muda o nome.
Vou passar a indexar só pelo nome, ou seja, nrazao, para ver se é indice mesmo, e tentar ver o porque do fonte acima não fazer o mesmo que o Pablo me passou.
Fico lhe muito grato pela atenção.