Como gerar relatorio no HMG modo console.
Moderador: Moderadores
Como gerar relatorio no HMG modo console.
Primeiramente queria agradecer ao Pablo Cesar, sua dica de conversao do Clipper para HMG foi fantastica, converti me sistema de impressao de notas em clipper para HMG em modo console sem problemas, mas estou tendo problema na parte da impressão, como no clipper era direcionado para a porta LPT1 e agora como esta no win8 nao consigo emitir nenhum relatorio, tenho que alterar o fonte? Como faço? desde já agradeco a todos que poderem me ajudar.
Como gerar relatorio no HMG modo console.
Olá, também fiz a conversão neste mês de janeiro/2014 e estou totalmente cru em Harbour.
Se alguém puder dar alguma dica também fico muito grato.
)
)
) :% :% :% :-Y :-Y :-Y
Se alguém puder dar alguma dica também fico muito grato.
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Como gerar relatorio no HMG modo console.
Amigos, se está em modo console, não muda nada em relação a impressão feita em Clipper, são os mesmos comandos. A única diferença é se a impressora for USB, neste caso tem que gravar o relatório em um arquivo e depois enviar para a impressora usando a função PrintFileRaw(). Usando a busca do fórum você encontra vários tópicos sobre PrintFileRaw().
Abraços,
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Como gerar relatorio no HMG modo console.
Oi.
Eu estou tentando usar as funções GetPrinter(), aPrinter() e PrintFileRaw().
Estava compilando e executando sem erros, mas ao colocar uma dessas funções em um dos meus prg. ele dá erro quando compilo.
Será que é necessário colocar algum comando ou algo no inicio do prg?
Estou compilando no modo console, no H.M.G. 3.0.35
Grato se alguém puder me orientar.
Eu estou tentando usar as funções GetPrinter(), aPrinter() e PrintFileRaw().
Estava compilando e executando sem erros, mas ao colocar uma dessas funções em um dos meus prg. ele dá erro quando compilo.
Será que é necessário colocar algum comando ou algo no inicio do prg?
Estou compilando no modo console, no H.M.G. 3.0.35
Grato se alguém puder me orientar.
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Como gerar relatorio no HMG modo console.
A função aPrinter() não existe no Harbour, e as duas outras funções é da lib xhb, então verifique se na compilação você está incluindo a xhb.lib.acf escreveu:Eu estou tentando usar as funções GetPrinter(), aPrinter() e PrintFileRaw().
É muito importante informar qual é a mensagem de erro que está ocorrendo, ajuda na solução do problema.acf escreveu:mas ao colocar uma dessas funções em um dos meus prg. ele dá erro quando compilo.
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Como gerar relatorio no HMG modo console.
Obrigado pela pela a orientação Toledo, mas ainda não consegui resolver meu problema.
A mensagem de erro:
1. C:/hmg.3.0.35//lib/libhmg.a(h_msgbox.o):h_msgbox.c:(.text+0x0): multiple definition of `MSGBOX`
.hbmk\win\mingw\vlib2.o:vlib2.c:(.text+0x820): first defined here
---> deve estar fazendo referencia a função `HB_FUN_MSGBOX'
2.C:/hmg.3.0.35//lib/libhmg.a(errorsys.o):errorsys.c:(.text+0xe0): multiple definition of `ERRORSYS'
.hbmk\win\mingw\funcoe2.o:funcoe2.c:(.text+0x580): first defined here
---> deve estar fazendo referencia a função `HB_FUN_ERRORSYS'
Se retiro a linha que utilizo a função GetPrinter(), dai compilo e executo normalmente. Deixando aparece esses dois erros acima.
Gostaria de saber como faco pra incluir a lib xhb e compilar? E onde consigo essa lib?
Grato
Antonio Carlos.
A mensagem de erro:
1. C:/hmg.3.0.35//lib/libhmg.a(h_msgbox.o):h_msgbox.c:(.text+0x0): multiple definition of `MSGBOX`
.hbmk\win\mingw\vlib2.o:vlib2.c:(.text+0x820): first defined here
---> deve estar fazendo referencia a função `HB_FUN_MSGBOX'
2.C:/hmg.3.0.35//lib/libhmg.a(errorsys.o):errorsys.c:(.text+0xe0): multiple definition of `ERRORSYS'
.hbmk\win\mingw\funcoe2.o:funcoe2.c:(.text+0x580): first defined here
---> deve estar fazendo referencia a função `HB_FUN_ERRORSYS'
Se retiro a linha que utilizo a função GetPrinter(), dai compilo e executo normalmente. Deixando aparece esses dois erros acima.
Gostaria de saber como faco pra incluir a lib xhb e compilar? E onde consigo essa lib?
Grato
Antonio Carlos.
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Como gerar relatorio no HMG modo console.
Antonio Carlos, o seu programa é modo console ou gráfico (MiniGui/HMG)?
A função GetPrinter() também está na libhmg.a, então acho que ai que ocorre o problema, libhmg.a é para modo gráfico.
Se o seu programa é modo console, então use as funções WIN_PRINTERLIST() e WIN_PRINTERGETDEFAULT().
WIN_PRINTERLIST() = retorna um array com todas as impressoras instaladas no Windows.
WIN_PRINTERGETDEFAULT() = retorna o nome da impressora padrão.
Abraços,
Esta mensagem indica que a função MSGBOX está duplicada, foi definida primeiro no arquivo vlib2.o (vlib2.prg) e depois na lib libhmg.a (que é a lib principal da HMG/MiniGui) e esta lib só se usa em modo gráfico, não em modo console.acf escreveu:C:/hmg.3.0.35//lib/libhmg.a(h_msgbox.o):h_msgbox.c:(.text+0x0): multiple definition of `MSGBOX`
.hbmk\win\mingw\vlib2.o:vlib2.c:(.text+0x820): first defined here
O mesmo ocorre com a função ERRORSYS(), que está no arquivo funcoe2.o (funcoe2.prg) e também na libhmg.a.acf escreveu:C:/hmg.3.0.35//lib/libhmg.a(errorsys.o):errorsys.c:(.text+0xe0): multiple definition of `ERRORSYS'
.hbmk\win\mingw\funcoe2.o:funcoe2.c:(.text+0x580): first defined here
A função GetPrinter() também está na libhmg.a, então acho que ai que ocorre o problema, libhmg.a é para modo gráfico.
Se o seu programa é modo console, então use as funções WIN_PRINTERLIST() e WIN_PRINTERGETDEFAULT().
WIN_PRINTERLIST() = retorna um array com todas as impressoras instaladas no Windows.
WIN_PRINTERGETDEFAULT() = retorna o nome da impressora padrão.
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Como gerar relatorio no HMG modo console.
E modo console e usando a IDE HMG 3.0.35 do Roberto LopesToledo escreveu:Antonio Carlos, o seu programa é modo console ou gráfico (MiniGui/HMG)?
Você esta correto toledo, usando essas funções não dá problema de compilação. As funções retornam uma matriz e a outra a impressora padrão.acf escreveu:Se o seu programa é modo console, então use as funções WIN_PRINTERLIST() e WIN_PRINTERGETDEFAULT().
Estou fazendo dessa forma:
cArq := "TESTE.TXT"
cPrinter := WIN_PRINTERGETDEFAULT()
PrintFileRaw(cPrinter, cArq)
Baixei um exemplo que foi postado no fórum, no exemplo mostra possível erro.
Chega aparecer muito que rapidamente na caixa de impressão da impressora o arquivo. Mas não imprime nada.
O que sera que falta ainda.
Abraços,
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Como gerar relatorio no HMG modo console.
Antonio Carlos, neste caso seria bom verificar qual foi o retorno da função PrintFileRaw().
Abraços,
Código: Selecionar todos
cArq := "TESTE.TXT"
cPrinter := WIN_PRINTERGETDEFAULT()
cMsg:="Arquivo "+cArq+" impresso com sucesso!"
nResult := PrintFileRaw( cPrinter, cArq, "Titulo da Impressao" )
IF nResult = -1
cMsg = "Parametros Invalido, Favor Tentar Novamente"
ELSEIF nResult = -2
cMsg = "Falha na chamada da Impressora, Favor Verificar a Impressora"
ELSEIF nResult = -3
cMsg = "Falha ao Iniciar Impressão, Favor Verificar a Impressora"
ELSEIF nResult = -4
cMsg = "Falha ao Iniciar a Primeira Pagina, Favor Verificar a Impressora"
ELSEIF nResult = -5
cMsg = "Falha de Memoria da Impressora, Favor Verificar a Impressora"
ELSEIF nResult = -6
cMsg = "Não foi Possivel localizar o arquivo de Impressão, Favor Tentar Novamente"
ENDIF
ALERT(cMsg)Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
- Cavalo Marinho
- Usuário Nível 3

- Mensagens: 156
- Registrado em: 01 Ago 2009 10:01
- Localização: Aracaju/Se
Como gerar relatorio no HMG modo console.
Boa tarde Toleto
Eu tambem estou com este mesmo problema, tenho uma impressora hb 1020 na usb0001 que está imprimindo normal em qualquer programa instalado, mas ao fazer o teste com printfileraw() nao imprime de jeito nenhum, fiz o teste como você mencionou, mostra a mensagem que imprimiu com sucesso, o retorno da função é 1 (positivo), e ao clicar na referida impressora mostra na tela que tem um arquivo imprimindo como mostra na imagem em anexo
Eu tambem estou com este mesmo problema, tenho uma impressora hb 1020 na usb0001 que está imprimindo normal em qualquer programa instalado, mas ao fazer o teste com printfileraw() nao imprime de jeito nenhum, fiz o teste como você mencionou, mostra a mensagem que imprimiu com sucesso, o retorno da função é 1 (positivo), e ao clicar na referida impressora mostra na tela que tem um arquivo imprimindo como mostra na imagem em anexo
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Como gerar relatorio no HMG modo console.
Amigo, resta saber se esta impressora imprime em modo RAW, pois pela imagem que você postou, o arquivo TXT foi enviado para a impressora.
Se esta impressora não aceitar modo RAW, neste caso teria que enviar o TXT de outra forma para a impressora. Veja este exemplo do Itamar: https://pctoledo.org/forum/viewto ... 936#p95938
Faz um teste com a função postada pelo Itamar, neste meu exemplo acima, altere:
Troque por:
A função PrintWinPrn() está no tópico do Itamar que o link está acima.
Obs.: na função do Itamar, ele está usando a função hwg_Msginfo(), que é da HwGui, então troque por MsgInfo() da MiniGui ou Alert() para modo console.
Abraços,
Se esta impressora não aceitar modo RAW, neste caso teria que enviar o TXT de outra forma para a impressora. Veja este exemplo do Itamar: https://pctoledo.org/forum/viewto ... 936#p95938
Faz um teste com a função postada pelo Itamar, neste meu exemplo acima, altere:
Código: Selecionar todos
nResult := PrintFileRaw( cPrinter, cArq, "Titulo da Impressao" )Código: Selecionar todos
PrintWinPrn(cArq,cPrinter)Obs.: na função do Itamar, ele está usando a função hwg_Msginfo(), que é da HwGui, então troque por MsgInfo() da MiniGui ou Alert() para modo console.
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
