Página 1 de 1

Configurar formulário para razao

Enviado: 03 Mar 2011 17:34
por rubens
Fiz umas pesquisas no Fórum e vi umas postagens informando que se eu mandasse o comando
? chr(27)+chr(67)+"31"
a impressora ia ficar configurada para 31 linhas no meu caso aqui o formulário razao é 31 linhas e a folha inteira é 62 linhas.
Só que quando chega na linha 30 e envio um comando eject ele salta a folha inteira. Imaginei que com o comando eject ele ia para o inicio da próxima pagina do formulário razao, que é a linha 32.
Tenho que configurar mais alguma coisa para funcionar assim? ou não funciona dessa forma e toda vez que eu enviar um eject vai pular o formulario inteiro indo para o inicio da próxima pagina?

Eu usava o controle de linhas mas começou a dar problemas. Na primeira página do razão imprime bem, na segunda em diante sempre está abaixando uma linha... já revisei a rotina mas não encontrei nada de diferente ou que eu mudei da ultima versao para cá..
Tentei configurar o razão por ser mais fácil fazer o controle. Pelo controle de linhas são muitas variávies para se controlar...

Se alguem tiver uma dica aí...


Obrigado

Rubens

Re: Configurar formulário para razao

Enviado: 03 Mar 2011 17:51
por beltrani_mi
Boa tarde!

Tente assim:

Antes de começar a imprimir use o setprc(0,0).

Va imprimindo linha a linha utilizando prow()+1.

Para saber em qual linha está é só pegar o retorno da função prow().

Apos imprimir na linha 62 de um eject:

if prow() = 62
eject
endif

Apos o eject, o função prow() sera reiniciada com 0 (zero).

Não sei se é exatamente isso que vc precisa. Seria mais fácil de enviasse seu codigo.

Re: Configurar formulário para razao

Enviado: 03 Mar 2011 20:26
por Toledo
Rubens, se for impressora Epson... o comando certo é:

CHR(27)+'C'+CHR(31)

Abraços,

Configurar formulário para razao

Enviado: 04 Mar 2011 08:42
por Pablo César
No momento de dar um avanço de página, para não ocupar uma linha com ? ch(12) experiemente ?? chr(12) que irá ficar na mesma linha 30. Mas acredito que não deva ser esse o problema e sim o comando como o Sr. Toledo falou.

Re: Configurar formulário para razao

Enviado: 04 Mar 2011 14:30
por rubens
Fiz como o Toledo falow mas não vejo diferença entre CHR(27)+"C"+CHR(31) e CHR(27)+CHR(67)+CHR(31) , por que CHR(67) vai se transformar em "C", correto?

fiz o teste com a rotina abaixo, mas continua saltando a página inteira quando envio um comando eject. Se Finalizasse a página na linha 31 e inicisasse a próxima pagina na linha "33" (32 é a serrilha) é que seria ideal, como não consegui tive que fazer a quebra na unha mesmo..
Se alguem tiver mais alguma sugestão ou correção da rotina abaixo, eu testo aqui de novo...
SET DEVICE TO PRINT
SET PRINTER TO LPT1
?? CHR(27)+"C"+CHR(31)
SETPRC(0,0)
FOR X = 1 TO 3
WHILE PROW() < 30
@ PROW()+1,00 SAY "LINHA "+STR(PROW(),2)
ENDDO
EJECT
NEXT
?? CHR(27)+"C"+CHR(62)
SET PRINTER TO
SET DEVICE TO SCREEN
Vlw...

Rubens

Re: Configurar formulário para razao

Enviado: 04 Mar 2011 17:22
por Toledo
Rubens, já desenvolvi relatórios para formulários de vários tamanhos, ontem mesmo fiz um com 51 linhas. E sempre usei o comando que lhe passei, mudando apenas o último CHR com o número de linhas.
rubens escreveu:Fiz umas pesquisas no Fórum e vi umas postagens informando que se eu mandasse o comando
? chr(27)+chr(67)+"31"
rubens escreveu:não vejo diferença entre CHR(27)+"C"+CHR(31) e CHR(27)+CHR(67)+CHR(31) , por que CHR(67) vai se transformar em "C", correto?
O comando que sempre usei EM IMPRESSORAS EPSON foi o que lhe passei. Nunca fiz um teste para ver se existe alguma diferença entre CHR(27)+"C"+CHR(31) e CHR(27)+CHR(67)+CHR(31), mas você tinha informado antes que estava usando chr(27)+chr(67)+"31", ai sim tem muita diferença com CHR(27)+"C"+CHR(31).

Agora vamos analisar este seu exemplo:

Código: Selecionar todos

SETPRC(0,0)
Altera o valor de PROW e PCOL para 0

Código: Selecionar todos

WHILE PROW() < 30
Vai ficar em LOOP até PROW() igual a 29, mas para sair do LOOP PROW() tem que valer 30.

Código: Selecionar todos

@ PROW()+1,00 SAY "LINHA "+STR(PROW(),2)
Aqui sempre vai estar imprimindo na linha seguinte de PROW() (PROW()+1), mudando dentro do DO WHILE o valor de PROW que é a condição para permanecer no DO WHILE.

Bom, como todo formulário começa na linha 0 (zero), então tudo indica que quando você sai do LOOP já vai estar na linha 31, então deve ser por isto que pula um formulário em branco.

Faça um teste, mude esta linha para:

Código: Selecionar todos

WHILE PROW() < 25
Abraços,

Re: Configurar formulário para razao

Enviado: 04 Mar 2011 18:30
por Clipper
Prezado Colega

Uso em várias empresas o formulário razão, e em todas funciona perfeitamente, uma observação que tenho a fazer é que o formulário razão tem 33 linhas e não 31 como você mencionou, vejamos :

FORMULÁRIO CARTA = 11 polegadas
FORMULÁRIO RAZÃO = 5,5 polegadas

Se usarmos 6 linhas por polega que é o padrão então teremos :

11 x 6 = 66
5,5 x 6 = 33

Então o comando correto será CHR(27)+CHR(67)+"33"
Que é exatamente como eu uso.

Se usarmos 8 linhas por polegada então teremos :

11 x 8 = 88
5,5 x 8 = 44

Então o comando correto será CHR(27)+CHR(67)+"44"
Não uso assim porque em todos meus clientes imprimo em 6LPP, mas funciona perfeitamente para quem usa 8LPP.

Verifique.

Até logo.

Marcelo

Re: Configurar formulário para razao

Enviado: 04 Mar 2011 22:34
por Toledo
Clipper escreveu:Então o comando correto será CHR(27)+CHR(67)+"33"
Bom, já to ficando confuso, sempre usei o comando CHR(27)+'C'+CHR(33) para formulários com 33 linhas (5,5 pol). Acho que CHR(27)+'C'+CHR(33) e CHR(27)+CHR(67)+CHR(33) é a mesma coisa, mas nunca fiz desta maneira como vocês fazem.
Clipper escreveu:Se usarmos 8 linhas por polegada então teremos :
11 x 8 = 88
5,5 x 8 = 44
Então o comando correto será CHR(27)+CHR(67)+"44"
Se vou utilizar 8 linhas por polegadas, só envio o comando CHR(27)+'0', mas uso o mesmo comando para o tamanho da página, que neste exemplo seria CHR(27)+'C'+CHR(33).

Abraços,

Re: Configurar formulário para razao

Enviado: 05 Mar 2011 07:36
por rubens
Bom pessoal, eu mandei imprimir uma pagina aqui e coube 62 linhas na página.. quando chega no picote ela está com 31 linhas...
Mas resolvi fazer como o toledo sugeriu de novo e continua saltando para a próxima página...

Imagem

tentei tb indicando 33 linhas mas dá o mesmo resultado... Mudei a linha ?? CHR(27)+"C"+CHR(31) para @ PROW(),PCOL() SAY CHR(27)+"C"+CHR(31) e também saltou a pagina inteira.

Código: Selecionar todos

SET DEVICE TO PRINT
SET PRINTER TO LPT1
?? CHR(27)+"C"+CHR(31)
SETPRC(0,0)
FOR X = 1 TO 3
	WHILE PROW() < 24
		@ PROW()+1,00 SAY "LINHA "+STR(PROW(),2)
	ENDDO
	EJECT
NEXT
?? CHR(27)+"C"+CHR(62)
SET PRINTER TO
SET DEVICE TO SCREEN

Re: Configurar formulário para razao

Enviado: 05 Mar 2011 07:52
por Toledo
Rubens, esta impressora que você está usando é uma EPSON?

Bom, se for, faça o seguinte:

1 - Altere o se código para:

Código: Selecionar todos

SET PRINTER TO LPT1
SET DEVICE TO PRINT
@ 0,0 SAY CHR(27)+"C"+CHR(33)
FOR X = 1 TO 3
   WHILE PROW() < 24
      @ PROW()+1,00 SAY "LINHA "+STR(PROW(),2)
   ENDDO
   EJECT
NEXT
@ PROW(),PCOL() SAY CHR(27)+'C'+CHR(66)
SET PRINTER TO
SET DEVICE TO SCREEN
2 - No painel da impressora tem como você escolher a fonte, escolha a fonte DRAFT.

Depois faça um outro teste.

Abraços,

Re: Configurar formulário para razao

Enviado: 05 Mar 2011 09:01
por rubens
Toledo...

Resolveu...geralmente esses erros são por falta de atenção ou por insistência da gente mesmo em ficar testanto um tese errada e não prestar atenção em detalhes... Desde o início eu estava pensando que o chr(31) era o número de linhas, na realidade o chr(31) ou chr(33) não é número de linhas e sim comando... troquei para CHR(33) e funcionou. Indepente de começar com ?? ou @ prow(),pcol() e indepente de colocar o setprc(0,0) ou não...
Vlw.. e desculpa ter pertubado por uma falta de atenção minha aqui...


Rubens

Re: Configurar formulário para razao

Enviado: 05 Mar 2011 09:31
por Toledo
rubens escreveu:Desde o início eu estava pensando que o chr(31) era o número de linhas
Mas é o número de linhas! O que você tem que fazer para saber o número exato de linhas é pegar uma regua que tenha medição por polegadas, ai ver quantas polegadas tem o formulário de picote a picote. Ai é só fazer como o Marcelo (Clipper) explicou... em cada polegada tem 6 linhas. Então, se este seu formulário tem 5,5 polegadas, é só multiplicar por 6, que será igual a 33 linhas.

Abraços,