Sobre relatórios
Moderador: Moderadores
Sobre relatórios
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
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
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
-
Alessandro
- Usuário Nível 3

- Mensagens: 141
- Registrado em: 07 Jul 2004 09:39
- Localização: Santo Antonio da Platina-PR
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
-
marcos.gurupi
- Usuário Nível 4

- Mensagens: 939
- Registrado em: 06 Jul 2004 11:53
- Localização: Gurupi-TO
-
Marcelo Aparecido
- Usuário Nível 1

- Mensagens: 7
- Registrado em: 03 Set 2006 12:31
- Localização: Sertãozinho/SP
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
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
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:
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.
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
-
Marcelo Aparecido
- Usuário Nível 1

- Mensagens: 7
- Registrado em: 03 Set 2006 12:31
- Localização: Sertãozinho/SP
-
Stanis Luksys
- Colaborador

- Mensagens: 1329
- Registrado em: 18 Jun 2005 03:04
- Localização: São Paulo
- Contato:
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.
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.
Stanis Luksys
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
-
Marcelo Aparecido
- Usuário Nível 1

- Mensagens: 7
- Registrado em: 03 Set 2006 12:31
- Localização: Sertãozinho/SP
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.
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]
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]
-
Stanis Luksys
- Colaborador

- Mensagens: 1329
- Registrado em: 18 Jun 2005 03:04
- Localização: São Paulo
- Contato:
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.
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.
Stanis Luksys
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
