Página 1 de 1
Relatórios em rede
Enviado: 17 Set 2004 21:06
por PITERGALDIANO
Pessoal estou com a seguinte dúvida
tenho um banco de dados fluxo.dbf que controla a movimentação financeira de uma empresa, este programa roda em rede e no prg eu uso um set filter para filtrar somente o que o usuário querer, o problema é o seguinte:
Se dois usuários ao mesmo tempo emitir dois relatórios diferentes, como o clipper encara isso?
Enviado: 17 Set 2004 22:44
por Augusto
Companheiro... Não há com o que se preocupar...
Partindo do princípio de que o controle de abertura multi usuária dos DBF's esteja correto, da mesma forma que o Clipper controla a área de memória quando vc usa um SELECT ARQ por exemplo ele tbm vai controlar um SET FILTER TO... ou seja, tudo é feito na memoria RAM da máquina ou em aqruivos temporários tbm criados pelo Clipper que são "invisíveis" ao usuário.
Portanto, como eu disse no início, não há com que se preocupar...
Aproveitando o gancho.... Posso dar um conselho ?? Evite usar o SET FILTER procure outras soluções mais rápidas, principalmente em ambientes multi usuários... Use arqs temporários para seleção de registros... é muito mais tranquilo de ler e indexar... Ok ??
Enviado: 18 Set 2004 20:13
por rochinha
Amigunho
Aproveitando também o gancho
Se voce gera os arquivos antes de imprimir deve levar em consideração que o mesmo não pode ter nomes identicos, exemplo:
SET ALTERNATE TO ARQUIVO.TXT
... linhas do relatorio
SET ALTERNATE TO
No exemplo acima se um usuario for enviar o relatorio de Contas a receber em uma maquina e outro enviar o relatorio de Estoque usando o mesm arquivo o que voce obterá é uma salada de dados, tipo:
Cliente A tem 15 peças no estoque para pagar.
Neste caso use técnicas de geração dinamica de arquivos:
Eu costumo usar o timer para obter o nome do arquivo, desta forma eles nunca se repetem, exemplo:
arquivo := "_TMP"+substr(time(),6,3)+".TXT"
SET ALTERNATE TO &(arquivo)
... linhas do relatorio
SET ALTERNATE TO
Para imprimir use:
SET PRINTER TO &(arquivo)
Ou
!COPY /B &(arquivo) LPT1
Ou se sua impressora estiver em rede
!COPY /B &(arquivo) \\MAQUINA\EPSONLX
O comando acima força até para impressoras NonDOS e USB( nem todas )
@braços :?)
Enviado: 19 Set 2004 14:40
por Augusto
Amiguinho...
É claro que a preocupação de arqs com o mesmo nome existe e quando eu trabalho em ambiente multi usuário o nome do arq temporário é sempre o nome do usuario no login da maquina ou do próprio sistema se existir... ou seja... logo no inicio do programa eu uso o "NETNAME()" ou solicito o nome do usuário... Ok ??
Enviado: 19 Set 2004 21:55
por rrfsistemas
Amiguinhos
só para completar :
Eu gero o arquivo antes de imprimir.
Este arquivo é gerado EM UMA PASTA LOCAL NO MICRO USUÁRIO SOLICITANTE.
Assim podemos ter o mesmo nome de arquivo .