Página 1 de 1
Sobre relatórios
Enviado: 01 Set 2006 19:12
por janio
Olá a todos,
Em todo o meu sistema os relatórios podem ser enviados para a impressora ou para o vídeo e utilizo a mesma formatação para ambos. Quando o usuário pede um relatório, aparece a opção de escolha para o vídeo ou impressora.
Para exibir os relatórios no vídeo, utilizo uma função chamada LERTEXTO que peguei no site do Toledo feita com o tbrowse, muito boa por sinal.
Agora vem o problema: O que tem me chateado nessa função é que tenho que gerar primeiro um arquivo texto... depois copiar todo o conteúdo desse arquivo para um DBF TEMPORÁRIO e só então EXIBIR o relatório na tela. E mais: em muitos relatórios do sistema tenho que GERAR um DBF temporário, indexá-lo, então gerar o ARQUIVO TXT, copiar o conteúdo do TXT para o outro DBF temporário gerado pela função LERTEXTO e só então exibir o relatório. Ou seja, para exibir um simples relatório, tenho que gerar 04 ARQUIVOS e isso leva tempo pq tenho que ler arquivo inteiro.
Pensei numa maneira de ir exibindo o relatório a medida que ele tá sendo gerado... sei lá... preecher uma matriz... não sei.
Como vcs utilizam o esquema de relatórios????
Janio
Enviado: 02 Set 2006 08:25
por Alessandro
Olá Jânio
Utilizo uma função que é bem simples para isso...
Basta eu direcionar a emissão do relatório para um arquivo texto, e após isso a chamo, e ela exibe o relatório na tela.
Caso queira posso lhe enviar
Enviado: 02 Set 2006 10:34
por janio
Ok. manda pra eu testar!
janioaguiar@yahoo.com.br
Janio
Enviado: 03 Set 2006 10:48
por marcos.gurupi
Eu utilizo da seguinte maneira: Tb pergunto ao usuario c ele quer visualizar o mandar direto para impressora ao escolher o video eu crio um arq. temp. com ext prn e entaum exibo com edit. Soh isso! Entaum apartir do edit tb posso imprimir.
Marcos Roberto.
Enviado: 03 Set 2006 13:34
por Marcelo Aparecido
Pessoal,
Eu também, como o Janio, precisaria de uma função de relatório na tela.
No meu programa eu coloco uma opção para gerar o relatório em arquivo, depois em outra opção para o usuário visualizar o arquivo, na tela, informando o nome do arquivo gerado.
Se vocês tiveram uma função para visualizar o relatório em tela, de uma só vez, me envie se possível.
muito obrigado pela atenção
Marcelo
mmartinucci@ig.com.br
Enviado: 03 Set 2006 16:17
por janio
Pessoal, deixa eu explicar melhor:
A função q tenho pra exibir relatório na tela é excelente. O meu problema e o que acho muito ruim é só poder EXIBIR o relatório depois de ter gerado TODO o TXT.
O que eu queria era uma maneira de ir EXIBINDO o relatório à medida que o TXT vai sendo gerado! Entenderam???
Marcelo Aparecido
Pegue a mesma função que utilizo. Ela faz as duas coisas ao mesmo tempo. É ótima!
Vá em
www.pctoledo.com.br
download
funções com fontes
função de nº 25
Veja:
Código: Selecionar todos
IF vIMP = 1 // se impressao pra tela
GERA_TMP()
SET PRINT ON
SET PRINTER TO &nomefile
SET DEVICE TO PRINTER
SET CONSOLE OFF
vPAGINA = 1
SETPRC(0,0)
@ PROW() + 01, 00 SAY EMPRESA PICT "@!"
...
...
...
SET CONSOLE ON
SET PRINTER OFF
SET PRINTER TO
SET DEVICE TO SCREEN
lertexto(alltrim(nomefile))
ERASE C:\WINDOWS\&NomeFile
RETURN .T.
ENDIF
FUNCTION GERA_TMP
SET DEFAULT TO C:\WINDOWS
PUBLIC contafile := 1 ,;
nomefile := space(8)
IF FILE('temp0001.txt')
nomefile = 'temp' + strzero(contafile,4) + '.txt'
DO WHILE FILE(nomefile)
contafile = contafile + 1
nomefile = "temp" + STRZERO(contafile,4) + '.txt'
ENDDO
ELSE
nomefile := 'temp0001.txt'
ENDIF
RETURN .T.
Enviado: 03 Set 2006 17:09
por Marcelo Aparecido
Valeu Janio, já fiz o downloado da função, depois te falo se deu tudo certinho... obrigadão
Enviado: 03 Set 2006 18:24
por Stanis Luksys
Olá...
Para exibir os relatórios na tela, uma vez que vc já tem a rotina, é muito simples, basta usar o Set Printer To Arquivo.ext e depois mostra-lo com a função MemoRead(). Eu uso ssim, não preciso de nenhum DBF temporário, e este mesmo txt onde gravei o relatório ofereço a opção de salvar, sendo que depois ele pode abrir pelo proprio programa relatorios antigos, novamente usando MemoRead(). Se ele não quer salvar eu apago o txt.
É uma de muitas formas.
Enviado: 03 Set 2006 19:35
por Marcelo Aparecido
Olá Stanis, obrigadão pela dica, vou fazer, qualqur dúvida te falo... valeu
Stanis Luksys escreveu:Olá...
Para exibir os relatórios na tela, uma vez que vc já tem a rotina, é muito simples, basta usar o Set Printer To Arquivo.ext e depois mostra-lo com a função MemoRead(). Eu uso ssim, não preciso de nenhum DBF temporário, e este mesmo txt onde gravei o relatório ofereço a opção de salvar, sendo que depois ele pode abrir pelo proprio programa relatorios antigos, novamente usando MemoRead(). Se ele não quer salvar eu apago o txt.
É uma de muitas formas.
Enviado: 04 Set 2006 09:40
por Eliane
Também uso o set printer to file para gerar o relatório.
Só que tanto para exibir como para imprimir utilizo rotinas de leitura de arq.MS-DOS( baixo nível). É bem rápido.
Utilizo um gerador de relatórios GRELATO que peguei na internet e fiz algumas adaptações. Desta maneira não há limite do tamanho do arquivo. Gostaria de saber se o MEMOREAD() é tão rápido qto leitura de arq.DOS e se tem o limite de 64. Obrigado pela atenção.
[/code]
Enviado: 04 Set 2006 10:04
por Stanis Luksys
Olá,
O MemoRead() é bem rapidinho, porém tem este problema com 64Kb sim. Eu particularmente não passo mais por este problema por que meus aplicativos estão todos rodando com xHarbour, em que o limite é memória do PC.
Esqueci de dizer deste limite, existe sim.