acesso a dbf de terceiros

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

diogenes_varela
Usuário Nível 3
Usuário Nível 3
Mensagens: 206
Registrado em: 04 Nov 2006 19:33
Localização: Brasília - DF

Mensagem 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...
Os computadores não sabem o que fazem. Nós, na maioria das vezes, também não...

E disse ao Programador: "Todos os teus programas terão erros e irás corrigi-los até ao fim dos teus dias". Gen. 1:9
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem 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 !
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Ademir
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 31 Jul 2007 16:28
Localização: Porto Ferreira-SP

Mensagem 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 ?
Ademir
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 31 Jul 2007 16:28
Localização: Porto Ferreira-SP

Mensagem 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.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem 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....
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Ademir
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 31 Jul 2007 16:28
Localização: Porto Ferreira-SP

Mensagem 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
Editado pela última vez por Ademir em 01 Ago 2007 14:33, em um total de 4 vezes.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem 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 ?
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Ademir
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 31 Jul 2007 16:28
Localização: Porto Ferreira-SP

Mensagem por Ademir »

desculpe mas nao estou acostuma a foruns.... vai dando as dicas que eu vou me corrigindo aqui ok ?

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

Mensagem 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.
Ademir
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 31 Jul 2007 16:28
Localização: Porto Ferreira-SP

Mensagem por Ademir »

VEJA MEU EXEMPLO... TALVEZ O AJUDE...
Gelson
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 16 Abr 2005 17:04

Mensagem 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.
Responder