Relatorios em WordPad
Moderador: Moderadores
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
Relatorios em WordPad
Ola pessoal
tenho o seguinte comando no sistema para impressão em arquivo
run("start wordpad.exe RECIBOS.TXT /mfileprintdefault")
porém, em alguns computadores, aparece o seguinte erro:
C:\WINDOWS\RECIBOS.TXT
Não é possível encontrar este arquivo
Verifique se o caminho e o nome do arquivo estão corretos
Como devo prodecer para acertar isso, pois, com o mesmo comando, na maioria dos computadores da rede, funciona normalmente.
Laudelino.
tenho o seguinte comando no sistema para impressão em arquivo
run("start wordpad.exe RECIBOS.TXT /mfileprintdefault")
porém, em alguns computadores, aparece o seguinte erro:
C:\WINDOWS\RECIBOS.TXT
Não é possível encontrar este arquivo
Verifique se o caminho e o nome do arquivo estão corretos
Como devo prodecer para acertar isso, pois, com o mesmo comando, na maioria dos computadores da rede, funciona normalmente.
Laudelino.
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
Re: Relatorios em WordPad
Ou se há uma saída diferente que esta para impressão em arquivo, seria benvinda
Laudelino.
Laudelino.
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Re: Relatorios em WordPad
Olá!
O teu aplicativo gera esse arquivo sempre no mesmo lugar?
Já tentou informando o caminho completo do arquivo Recibos.Txt?
O teu aplicativo gera esse arquivo sempre no mesmo lugar?
Já tentou informando o caminho completo do arquivo Recibos.Txt?
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Re: Relatorios em WordPad
Olá!
Tem uma opção que muita gente usa: o Win32PRN. Nunca usei.
Veja Win32prn para Iniciantes neste fórum.
Tem uma opção que muita gente usa: o Win32PRN. Nunca usei.
Veja Win32prn para Iniciantes neste fórum.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
Re: Relatorios em WordPad
Vc pode usar o NODOSIMP para imprimir o arquivo e não o notepad como vc esta fazendo.
run nodosimp C:\WINDOWS\RECIBOS.TXT 80
Com o WIN32PRN vc pode montar todo o relatório dentro do sistema, sem precisar usar programas externos.
Sobre o seu problema inicial, vc já verificou se o arquivo é realmente criado nessa pasta. Dependendo da configuração do windows, seu usuário pode não ter direito de gravar arquivos nela.
run nodosimp C:\WINDOWS\RECIBOS.TXT 80
Com o WIN32PRN vc pode montar todo o relatório dentro do sistema, sem precisar usar programas externos.
Sobre o seu problema inicial, vc já verificou se o arquivo é realmente criado nessa pasta. Dependendo da configuração do windows, seu usuário pode não ter direito de gravar arquivos nela.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
Re: Relatorios em WordPad
O arquivo é gerado sempre na pasta do sistema. So muda de nome: de .prn para .txt. Na rede, 4 computadores abrem o arquivo, somente não.
O comando
run nodosimp C:\WINDOWS\RECIBOS.TXT 80
é para visualização do relatorio antes da impressão?
Tenho uma idéia inicial o Win32prn, mas tenho que reprogramar todos os relatrorios para usá-lo, e para impressão em impressoras matricias, a impressão fica lenta. Como a tendencia é o uso de impressoras laser função da NFe, vou implementar o sin32prn logo que terminhar a NFe.
Laudelino.
O comando
run nodosimp C:\WINDOWS\RECIBOS.TXT 80
é para visualização do relatorio antes da impressão?
Tenho uma idéia inicial o Win32prn, mas tenho que reprogramar todos os relatrorios para usá-lo, e para impressão em impressoras matricias, a impressão fica lenta. Como a tendencia é o uso de impressoras laser função da NFe, vou implementar o sin32prn logo que terminhar a NFe.
Laudelino.
Re: Relatorios em WordPad
[Laudelino Scarmagnani]
O comando é para mandar a impressão do arquivo texto direto para a impressora. Junto com o programa vem um arquivo texto explicando os parâmetros de funcionamento.
Para "ver" o arquivo antes eu uso o readme (borland) que abre o arquivo texto.
Com esses dois programas eu consigo fazer o preview e imprimir em qq impressora instalada no windows do usuário.
O problema é que o readme é DOS e não windows.
Preview em programas gráficos podem ter distorção quando usada uma fonte proporcional.
Ah! O WIN32PRN não tem preview tb.
Pq vc colocou que na rede 4 computadores abrem o arquivo. Vc deve colocar esse tipo de arquivo na máquina do usuário e dela mandar a impressão. Colocar o mesmo arquivo texto compartilhado para várias máquinas só vai te arranjar problemas.
O comando é para mandar a impressão do arquivo texto direto para a impressora. Junto com o programa vem um arquivo texto explicando os parâmetros de funcionamento.
Para "ver" o arquivo antes eu uso o readme (borland) que abre o arquivo texto.
Com esses dois programas eu consigo fazer o preview e imprimir em qq impressora instalada no windows do usuário.
O problema é que o readme é DOS e não windows.
Preview em programas gráficos podem ter distorção quando usada uma fonte proporcional.
Ah! O WIN32PRN não tem preview tb.
Pq vc colocou que na rede 4 computadores abrem o arquivo. Vc deve colocar esse tipo de arquivo na máquina do usuário e dela mandar a impressão. Colocar o mesmo arquivo texto compartilhado para várias máquinas só vai te arranjar problemas.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
Re: Relatorios em WordPad
E que faco o seguinte:
Se escolha foi arquivo
Set printer to relatorio.txt
Senao
Set printer to relatorio.prn
endif
ao final
se escolha foi arquivo
se escolha = arquivo
set printer to
run("start wordpad.exe arquivo.TXT /mfileprintdefault")
ELSE
if empty(sgportare).OR..NOT.EMPTY(SGPRINTERRE)
SAVE SCREEN TO TELA
IF EMPTY(SGPRINTERRE)
Sele_Impressora(SGPRINTERRE)
SGPRINTERRE = SGPRINTERNF
ENDIF
cFile := "arquivo.PRN"
@24,00 clear to 24,79
SET PRINTER OFF
set printer to
nResult := PRINTFILERAW(SGPRINTERRE, cFile, "Relatorio " )
SWITCH nResult
CASE -1
@24,05 say cMsg += "Invalid parameters passed to function"
CASE -2
@24,05 say cMsg += "WinAPI OpenPrinter() call failed" && ; EXIT
CASE -3
@24,05 say cMsg += "WinAPI StartDocPrinter() call failed" && ; EXIT
CASE -4
@24,05 say cMsg += "WinAPI StartPagePrinter() call failed" && ; EXIT
CASE -5
@24,05 say cMsg += "WinAPI malloc() of memory failed" && ; EXIT
CASE -6
@24,05 say cMsg += "File " + cFile + " Nao Encontrado" && ; EXIT
DEFAULT
@24,05 say cMsg += cFile + " IMPRESSAO OK!!!"
END
inkey(0)
RESTORE SCREEN FROM TELA
ENDIF
endif
SGPRINTERNF = space(1)
RETURN
Mas vou pensar em gerar no micro que está efetuando a operacao. Realmente evita problemas no caso de dois pedidos ao mesmo tempo.
Se escolha foi arquivo
Set printer to relatorio.txt
Senao
Set printer to relatorio.prn
endif
ao final
se escolha foi arquivo
se escolha = arquivo
set printer to
run("start wordpad.exe arquivo.TXT /mfileprintdefault")
ELSE
if empty(sgportare).OR..NOT.EMPTY(SGPRINTERRE)
SAVE SCREEN TO TELA
IF EMPTY(SGPRINTERRE)
Sele_Impressora(SGPRINTERRE)
SGPRINTERRE = SGPRINTERNF
ENDIF
cFile := "arquivo.PRN"
@24,00 clear to 24,79
SET PRINTER OFF
set printer to
nResult := PRINTFILERAW(SGPRINTERRE, cFile, "Relatorio " )
SWITCH nResult
CASE -1
@24,05 say cMsg += "Invalid parameters passed to function"
CASE -2
@24,05 say cMsg += "WinAPI OpenPrinter() call failed" && ; EXIT
CASE -3
@24,05 say cMsg += "WinAPI StartDocPrinter() call failed" && ; EXIT
CASE -4
@24,05 say cMsg += "WinAPI StartPagePrinter() call failed" && ; EXIT
CASE -5
@24,05 say cMsg += "WinAPI malloc() of memory failed" && ; EXIT
CASE -6
@24,05 say cMsg += "File " + cFile + " Nao Encontrado" && ; EXIT
DEFAULT
@24,05 say cMsg += cFile + " IMPRESSAO OK!!!"
END
inkey(0)
RESTORE SCREEN FROM TELA
ENDIF
endif
SGPRINTERNF = space(1)
RETURN
Mas vou pensar em gerar no micro que está efetuando a operacao. Realmente evita problemas no caso de dois pedidos ao mesmo tempo.
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Re: Relatorios em WordPad
Amiguinho,
Nunca coloque arquivos de nome fixo na rede para compartilhar, se voce tem estações e envia arquivos para um unico lugar para imprimir, enumere-os, tipo RECIBO.001, RECIBO.002, etc.
Ao passar comandos via RUN passe o caminho completo, use CurDIR() e CurDrive() para obter os componentes e monte o arquivo de lote ou comando RUN para executar.
Nunca coloque arquivos de nome fixo na rede para compartilhar, se voce tem estações e envia arquivos para um unico lugar para imprimir, enumere-os, tipo RECIBO.001, RECIBO.002, etc.
Ao passar comandos via RUN passe o caminho completo, use CurDIR() e CurDrive() para obter os componentes e monte o arquivo de lote ou comando RUN para executar.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
Re: Relatorios em WordPad
Ok. Estou ajustando a rotina de impressão para informar o caminho copleto na busca do arquivo.
Quanto a usar nomes diferentes, não havia pensado nisso, e é bem melhor que fazer um algoritmo para verificar se o arquivo está sendo usado por alguem, esperar.
Valeu!
Laudelino
Quanto a usar nomes diferentes, não havia pensado nisso, e é bem melhor que fazer um algoritmo para verificar se o arquivo está sendo usado por alguem, esperar.
Valeu!
Laudelino
Re: Relatorios em WordPad
Depois de montar o arquivo texto eu coloco o seguinte código:
Código: Selecionar todos
y_arq := 'readme ' + x_arq
run (y_arq)
if alert('Confirma Imprimir Relatorio?', {'Sim', 'Nao'}) = 1
y_arq := 'nodosimp ' + x_arq + ' 120 /apa'
run (y_arq)
end"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Relatorios em WordPad
Se servir via Word posso postar um exemplo, acho que até já postei aqui no fórum, mas não achei o link
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Re: Relatorios em WordPad
Amiguinhos,
Será que usando OLE não seria possivel?
Faça uma adaptação para CreateObject() ao invés de TOleAuto() caso este não exista no xHarbour.
Quanto ao que o GVC postou sobre a Win32PRN não ter preview acho que é possivel criar um usando MemoEdit() que abra o arquivo de resultado.
Será que usando OLE não seria possivel?
Código: Selecionar todos
...
LOCAL QueTexto := "C:\AUTOEXEC.BAT", QueroVer := .f.
...
function MostraTexto( QueTexto, QueroVer )
local oWord
oWord:=TOleAuto():New( "Word.Application" )
oWord:Documents:Open( QueTexto )
oWord:WindowState := 0
if QueroVer
oWord:Visible := .t.
else
oWord:Visible := .f.
oWord:PrintOut()
endif
oWord:Quit()
oWord:End()
return nil
Quanto ao que o GVC postou sobre a Win32PRN não ter preview acho que é possivel criar um usando MemoEdit() que abra o arquivo de resultado.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Re: Relatorios em WordPad
Tentei compilar o exemplo do Rochinha e compilou sem problemas mas esta dando o erro abaixo:
Segue código:
Uso o Harbour 2.1.0
Alguém saberia....
Obs. tentei tb com CreateObject("Word.Application")
Sds.
Código: Selecionar todos
hbmk2 -omesclar @teste.hbp
Harbour 2.1.0beta2 (Rev. 15281)
Copyright (c) 1999-2010, http://harbour-project.org/
Compiling 'MESCLAR.PRG'...
Lines 1052, Functions/Procedures 2
Generating C source output to 'C:\DOCUME~1\Familia\CONFIG~1\Temp\hbmk_uaudkh.dir
\MESCLAR.c'... Done.
MESCLAR.c
mesclar.exe
Error WINOLE/1007 Argument error: OPEN (DOS Error -2147352571)
Called from WIN_OLEAUTO:OPEN(0)
Called from MOSTRATEXTO(20)
Called from MAIN(12)Segue código:
Código: Selecionar todos
Proc Main
LOCAL QueTexto := "doc.doc", QueroVer := .f.
MostraTexto()
Return
*******************************************
Function MostraTexto( QueTexto, QueroVer )
local oWord
oWord:=TOleAuto():New( "Word.Application" )
oWord:Documents:Open( QueTexto )
oWord:WindowState := 0
if QueroVer
oWord:Visible := .t.
else
oWord:Visible := .f.
oWord:PrintOut()
endif
oWord:Quit()
oWord:End()
return nil
Alguém saberia....
Obs. tentei tb com CreateObject("Word.Application")
Sds.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
-
Euclides
- Usuário Nível 3

- Mensagens: 154
- Registrado em: 12 Mai 2007 14:07
- Localização: São Paulo, Capital
Re: Relatorios em WordPad
fladimir,
Esse número que V ´achou´ (-2147352571), verificando no winerror.h é:
Hex (80020005) Type mismatch.
Portanto tem a ver com o arquivo sendo aberto.
O exemplo do Rochinha funciona perfeitamente.
Dependendo da versão, talvez dê algum erro no End/quit, mas isso é outro assunto.
T+
Euclides
Esse número que V ´achou´ (-2147352571), verificando no winerror.h é:
Hex (80020005) Type mismatch.
Portanto tem a ver com o arquivo sendo aberto.
O exemplo do Rochinha funciona perfeitamente.
Dependendo da versão, talvez dê algum erro no End/quit, mas isso é outro assunto.
T+
Euclides