Video x Impressora (URGENTE)

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

diegofreak
Usuário Nível 1
Usuário Nível 1
Mensagens: 2
Registrado em: 06 Abr 2006 00:04

Video x Impressora (URGENTE)

Mensagem por diegofreak »

E ae pessoal,

Bom, tenho de fazer meu programa mostrar e imprimir os dados apresentados na tela.

A impressão está ok, agora fazer essa sincronia está complicado...rss
Sei que existe o SET DEVICE TO SCREEN, no qual se coloca no final da rotina, alguém pode me dizer onde ?...rss

Segue o código:

clear
USE tecnico INDEX indtec
USE nivel INDEX indniv NEW
SELE tecnico
l=8
p=1

DO WHILE .NOT. EOF()
SET DEVICE TO PRINT
@2,2 SAY "Data: " + dtoc(date())
@2,60 SAY "Pagina: " + ltrim(str(p))
@4,20 SAY "RELACAO DE ALUNOS POR NIVEL"
@6,2 SAY "Codigo"
@6,10 SAY "Nome"
@6,50 SAY "Nivel"
@7,2 SAY replicate ("=",70)
DO WHILE l < 20 .AND. .NOT. EOF()
@l,2 SAY CODIGO
@l,10 SAY NOME
chave1=niv
SELE nivel
seek chave1
@l,50 SAY NOME
SELE técnico
l=l+1
SKIP
ENDDO
INKEY(2)
EJECT
p=p+1
l=8

ENDDO
INKEY(3)
DO PRINCIPAL


Espero que alguém possa me ajudar!
Fico muito agradecido!

Obrigado mesmo!
Até!
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

Ele deve ficar antes do Do While
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
digitom
Usuário Nível 2
Usuário Nível 2
Mensagens: 93
Registrado em: 06 Abr 2006 13:52
Localização: Anápolis-Go
Contato:

Re: Video x Impressora (URGENTE)

Mensagem por digitom »

diegofreak escreveu:E ae pessoal,

Bom, tenho de fazer meu programa mostrar e imprimir os dados apresentados na tela.

A impressão está ok, agora fazer essa sincronia está complicado...rss
Sei que existe o SET DEVICE TO SCREEN, no qual se coloca no final da rotina, alguém pode me dizer onde ?...rss

Segue o código:

clear
USE tecnico INDEX indtec
USE nivel INDEX indniv NEW
SELE tecnico
l=8
p=1

DO WHILE .NOT. EOF()
SET DEVICE TO PRINT
@2,2 SAY "Data: " + dtoc(date())
@2,60 SAY "Pagina: " + ltrim(str(p))
@4,20 SAY "RELACAO DE ALUNOS POR NIVEL"
@6,2 SAY "Codigo"
@6,10 SAY "Nome"
@6,50 SAY "Nivel"
@7,2 SAY replicate ("=",70)
DO WHILE l < 20 .AND. .NOT. EOF()
@l,2 SAY CODIGO
@l,10 SAY NOME
chave1=niv
SELE nivel
seek chave1
@l,50 SAY NOME
SELE técnico
l=l+1
SKIP
ENDDO
INKEY(2)
EJECT
p=p+1
l=8

ENDDO
INKEY(3)
DO PRINCIPAL


Espero que alguém possa me ajudar!
Fico muito agradecido!

Obrigado mesmo!
Até!
Tente da seguinte forma:

clear
USE tecnico INDEX indtec
USE nivel INDEX indniv NEW
SELE tecnico
l=8
p=1

SET CONSOLE OFF
SET DEVICE TO PRINT

DO WHILE .NOT. EOF()
@2,2 SAY "Data: " + dtoc(date())
@2,60 SAY "Pagina: " + ltrim(str(p))
@4,20 SAY "RELACAO DE ALUNOS POR NIVEL"
@6,2 SAY "Codigo"
@6,10 SAY "Nome"
@6,50 SAY "Nivel"
@7,2 SAY replicate ("=",70)
DO WHILE l < 20 .AND. .NOT. EOF()
@l,2 SAY CODIGO
@l,10 SAY NOME
chave1=niv
SELE nivel
seek chave1
@l,50 SAY NOME
SELE técnico
l=l+1
SKIP
ENDDO
INKEY(2)
EJECT
p=p+1
l=8
ENDDO

SET PRINTER TO
SET DEVICE TO SCREEN
SET CONSOLE ON

INKEY(3)
DO PRINCIPAL
Fui........ :|<
diegofreak
Usuário Nível 1
Usuário Nível 1
Mensagens: 2
Registrado em: 06 Abr 2006 00:04

Re: Video x Impressora (URGENTE)

Mensagem por diegofreak »

digitom escreveu:
diegofreak escreveu:E ae pessoal,

Bom, tenho de fazer meu programa mostrar e imprimir os dados apresentados na tela.

A impressão está ok, agora fazer essa sincronia está complicado...rss
Sei que existe o SET DEVICE TO SCREEN, no qual se coloca no final da rotina, alguém pode me dizer onde ?...rss

Segue o código:

clear
USE tecnico INDEX indtec
USE nivel INDEX indniv NEW
SELE tecnico
l=8
p=1

DO WHILE .NOT. EOF()
SET DEVICE TO PRINT
@2,2 SAY "Data: " + dtoc(date())
@2,60 SAY "Pagina: " + ltrim(str(p))
@4,20 SAY "RELACAO DE ALUNOS POR NIVEL"
@6,2 SAY "Codigo"
@6,10 SAY "Nome"
@6,50 SAY "Nivel"
@7,2 SAY replicate ("=",70)
DO WHILE l < 20 .AND. .NOT. EOF()
@l,2 SAY CODIGO
@l,10 SAY NOME
chave1=niv
SELE nivel
seek chave1
@l,50 SAY NOME
SELE técnico
l=l+1
SKIP
ENDDO
INKEY(2)
EJECT
p=p+1
l=8

ENDDO
INKEY(3)
DO PRINCIPAL


Espero que alguém possa me ajudar!
Fico muito agradecido!

Obrigado mesmo!
Até!
Tente da seguinte forma:

clear
USE tecnico INDEX indtec
USE nivel INDEX indniv NEW
SELE tecnico
l=8
p=1

SET CONSOLE OFF
SET DEVICE TO PRINT

DO WHILE .NOT. EOF()
@2,2 SAY "Data: " + dtoc(date())
@2,60 SAY "Pagina: " + ltrim(str(p))
@4,20 SAY "RELACAO DE ALUNOS POR NIVEL"
@6,2 SAY "Codigo"
@6,10 SAY "Nome"
@6,50 SAY "Nivel"
@7,2 SAY replicate ("=",70)
DO WHILE l < 20 .AND. .NOT. EOF()
@l,2 SAY CODIGO
@l,10 SAY NOME
chave1=niv
SELE nivel
seek chave1
@l,50 SAY NOME
SELE técnico
l=l+1
SKIP
ENDDO
INKEY(2)
EJECT
p=p+1
l=8
ENDDO

SET PRINTER TO
SET DEVICE TO SCREEN
SET CONSOLE ON

INKEY(3)
DO PRINCIPAL
Fui........ :|<

Então digitom fiz o procedimento que você me disse e a tela fica preta (sem nenhum dado), logo que fecho o programa ele imprime corretamente!

o SET PRINTER TO não tem nenhum parametro a mais ?
é assim mesmo a sintaxe, apenas isso ?

Segue o código (com a modificação):
PROCEDURE P_REL_N
CLEAR
USE tecnico INDEX indtec
USE nivel INDEX indniv NEW
SELE tecnico
l=8
p=1
r=0

SET CONSOLE OFF
SET DEVICE TO PRINT

DO WHILE .NOT. EOF()
@2,2 SAY "Data: " + dtoc(date())
@2,60 SAY "Pagina: " + ltrim(str(p))
@4,20 SAY "RELACAO DE ALUNOS POR NIVEL"
@6,2 SAY "Codigo"
@6,10 SAY "Nome"
@6,50 SAY "Nivel"
@7,2 SAY replicate ("=",70)
DO WHILE l < 20 .AND. .NOT. EOF()
chave1=niv
IF chave1 = sel_niv
@l,2 SAY CODIGO
@l,10 SAY NOME
chave1=niv
SELE nivel
seek chave1
@l,50 SAY NOME
SELE tecnico
l=l+1
r=r+1
SKIP
ELSE
SELE tecnico
SKIP
ENDIF

ENDDO
@21,2 SAY replicate("=",70)
@22,2 SAY "Registro(s) nesta pagina: " + ltrim(str(r))
EJECT
p=p+1
l=8
r=0

ENDDO
SET PRINTER TO
SET DEVICE TO SCREEN
SET CONSOLE ON

INKEY(0)
DO PRINCIPAL
Muito Obrigado!
Responder