DEFININDO O NOME DA IMPRESSORA ARMAZENADA NO BD
uso o VB6, Visual Reportx e bd Access
tenho uma tabela chamada CONFIGURACOES
nela possuo o seguintes campos: IMP1_MAQ_AV e o campo IMP1_COMPART_AV
sendo que:
no campo IMP1_MAQ_AV é armazenado o nome da maquina na rede onde fica a impressora. exemplo: BALCAO01, BALCAO02, CAIXA...
no campo IMP1_COMPART_AV é armazenado o nome do compartilhamento da impressora na rede. exemplo: IMPRESSORA01, IMPRESSORA01, MATRICIAL01...
Pois bem:
Armazenei no campo IMP1_MAQ_AV a string BALCAO01 e no campo IMP1_COMPART_AV a string IMPRESSORA01.
O Visual Reportx possui uma propriedade chamada NOMEDAIMPRESSORA, onde eu defino o nome da impressora que sempre será impresso aquele relatorio.
então se eu colocar lá assim: NOMEDAIMPRESSORA = [txt-color=#e80000]IMPRESSORA01[/txt-color], toda vez q mandar imprimir, poderá ter 10 impressoras instalada na maquina e ele sempre vai imprimir na que possui o nome IMPRESSORA01
se eu coloca NOMEDAIMPRESSORA = [txt-color=#e80000]\\BALCAO01\IMPRESSORA01[/txt-color], toda vez ele vai imprimir na impressora de rede que possuir esse compartilhamento.
até ai tudo bem.
entao crei aqueles campos: IMP1_MAQ_AV e o campo IMP1_COMPART_AV para eu poder mudar assim que eu quizer a impressora que vai ser usada, sem ter q mudar o código.
vou colocar somente a parte que se refere ao que falei, pois esse relatorio é bem grande e exibe muitas coisas, entao vou colocar só a parte final onde tá o q mudei:
quando debugo e coloco emcima aparece o nome completo do endereço da impressora, assim \\BALCAO01\IMPRESSORA01
mais ele pega a impressora padrão do computador local, ou seja, ele não ler a linha onde diz q o nome da impresso é aquele...
ai para testar mais ainda, mudei assim:
debuguei, coloquei o mouse emcima, apareceu: IMPRESSORA01 e mesmo assim continua pegando a impressora padrão da maquina local.
eu eu for na propriedade NOMEDAIMPRESSORA e deixar fixo [Ô]IMPRESSORA01[Ô] ou [Ô]\\BALCAO01\IMPRESSORA01[Ô] ele funciona uma maravilha, agora na questão de pegar o nome da impressora armazenado no bd ele sempre pega a q estiver padrão.
então o que estou fazendo de errado?
tenho uma tabela chamada CONFIGURACOES
nela possuo o seguintes campos: IMP1_MAQ_AV e o campo IMP1_COMPART_AV
sendo que:
no campo IMP1_MAQ_AV é armazenado o nome da maquina na rede onde fica a impressora. exemplo: BALCAO01, BALCAO02, CAIXA...
no campo IMP1_COMPART_AV é armazenado o nome do compartilhamento da impressora na rede. exemplo: IMPRESSORA01, IMPRESSORA01, MATRICIAL01...
Pois bem:
Armazenei no campo IMP1_MAQ_AV a string BALCAO01 e no campo IMP1_COMPART_AV a string IMPRESSORA01.
O Visual Reportx possui uma propriedade chamada NOMEDAIMPRESSORA, onde eu defino o nome da impressora que sempre será impresso aquele relatorio.
então se eu colocar lá assim: NOMEDAIMPRESSORA = [txt-color=#e80000]IMPRESSORA01[/txt-color], toda vez q mandar imprimir, poderá ter 10 impressoras instalada na maquina e ele sempre vai imprimir na que possui o nome IMPRESSORA01
se eu coloca NOMEDAIMPRESSORA = [txt-color=#e80000]\\BALCAO01\IMPRESSORA01[/txt-color], toda vez ele vai imprimir na impressora de rede que possuir esse compartilhamento.
até ai tudo bem.
entao crei aqueles campos: IMP1_MAQ_AV e o campo IMP1_COMPART_AV para eu poder mudar assim que eu quizer a impressora que vai ser usada, sem ter q mudar o código.
vou colocar somente a parte que se refere ao que falei, pois esse relatorio é bem grande e exibe muitas coisas, entao vou colocar só a parte final onde tá o q mudei:
Relatorio.NumeroRegistros = Round((rsItens.RecordCount / 26) + 0.49)
[ô]Configurar a impressora para impressão do pedido
Call ABRIR_BD_SEM_DATA1
SQL_Conf = [Ô]SELECT * FROM CONFIGURACAO WHERE (CODIGO = 1)[Ô]
Set RS_Conf = BD.OpenRecordset(SQL_Conf)
Dim var_Maq As String
Dim var_Comp As String
If Not IsNull(RS_Conf!IMP1_MAQ_AV) Then var_Maq = RS_Conf!IMP1_MAQ_AV
If Not IsNull(RS_Conf!IMP1_COMPART_AV) Then var_Comp = RS_Conf!IMP1_COMPART_AV
Relatorio.NomeImpressora = [Ô]\\[Ô] & var_Maq & [Ô]\[Ô] & var_Comp
Relatorio.Ativar
End Sub
quando debugo e coloco emcima aparece o nome completo do endereço da impressora, assim \\BALCAO01\IMPRESSORA01
mais ele pega a impressora padrão do computador local, ou seja, ele não ler a linha onde diz q o nome da impresso é aquele...
ai para testar mais ainda, mudei assim:
Relatorio.NomeImpressora = var_Comp
debuguei, coloquei o mouse emcima, apareceu: IMPRESSORA01 e mesmo assim continua pegando a impressora padrão da maquina local.
eu eu for na propriedade NOMEDAIMPRESSORA e deixar fixo [Ô]IMPRESSORA01[Ô] ou [Ô]\\BALCAO01\IMPRESSORA01[Ô] ele funciona uma maravilha, agora na questão de pegar o nome da impressora armazenado no bd ele sempre pega a q estiver padrão.
então o que estou fazendo de errado?
Cara, você está fazendo muita coisa para pouca coisa que deve ser feito. Não sei se eu entendi bem, mais não é só você definir a impressora como padrão para resolver isso tudo. aqui no VBMANIA, tem vários exemplos de como mudar uma impressora para padrão.
na verdade nao... é bem mais complexo que vc imagina:
para ver ter ideias, são 3 tipos diferentes do mesmo relatorio e varias impressoras instaladas.... para cada aplicação: compra a vista, compra a prazo é uma impressora diferente...
exemplo:
se eu finalizar o pedido e for avista ele vai para uma impressora
se eu finalizar o pedido e for aprazo ele vai para outra impressora
se eu finalizar o pedido e quizer detalhado, vai para outra impressora
sem contar q a impressora pode ser local ou em rede...
por isso, se eu deixar somente para 1 impressora padrão não vai dar certo
para ver ter ideias, são 3 tipos diferentes do mesmo relatorio e varias impressoras instaladas.... para cada aplicação: compra a vista, compra a prazo é uma impressora diferente...
exemplo:
se eu finalizar o pedido e for avista ele vai para uma impressora
se eu finalizar o pedido e for aprazo ele vai para outra impressora
se eu finalizar o pedido e quizer detalhado, vai para outra impressora
sem contar q a impressora pode ser local ou em rede...
por isso, se eu deixar somente para 1 impressora padrão não vai dar certo
E se você abrir um formulário antes de enviar a impressão listando todas a impressoras instaladas na maquina para definir qual vai ser padrão e imprimir? Não daria certo?
Vou te mandar uma tela de um sistema meu:
Escolho a impressora clicando duas vezes sobre o nome, na qual se torma padrão e mando imprimir para a que eu quiser.
Vou te mandar uma tela de um sistema meu:
Escolho a impressora clicando duas vezes sobre o nome, na qual se torma padrão e mando imprimir para a que eu quiser.
o problema é q queria algo automatico, sem interação do usuario.
tenho cliente que:
Imprime avista numa impressora termica nao fiscal e a venda a prazo numa hp deskjet
já outro:
imprime tanto avista como a prazo numa hp deskjet
já outro:
imprime tanto avista como a prazo numa termina nao fiscal
e ambos possui terminais em rede q imprime via rede
entao criei esse formulario para configurar cada cliente para ficar automatico, sendo assim, nao precisarei ter q ficar alterando código e nem dependendo de cliente para escolher a impressora correta.
mande imagem da tela de configuração
tenho cliente que:
Imprime avista numa impressora termica nao fiscal e a venda a prazo numa hp deskjet
já outro:
imprime tanto avista como a prazo numa hp deskjet
já outro:
imprime tanto avista como a prazo numa termina nao fiscal
e ambos possui terminais em rede q imprime via rede
entao criei esse formulario para configurar cada cliente para ficar automatico, sendo assim, nao precisarei ter q ficar alterando código e nem dependendo de cliente para escolher a impressora correta.
mande imagem da tela de configuração
Estou vendo ai. Já que começou assim tem que terminar assim.rs
entao, era como to falando... para venda avista tem q definir 3 impressoras e aprazo tb... sendo que não posso deixar o usuario escolher, até mesmo, 2 deles são lugares q precisam de atendimento rapido... ai se tiver q escolher a impressora, o cliente vai chiar....
Alguem sabe como resolver isso?
Alguem sabe como resolver isso?
alguem ?
Já que o seu programa sempre imprime na impressora padrão tente mudar a impressora padrão via código:
Dim X As Printer
For Each X In Printers
[ô]Feito com [Ô]InStr[Ô], pois no Win2000 o [Ô]DeviceName[Ô] vem com o path i.e. [Ô]\\SrvPfs\Epson Fx-1170[Ô] e nao [Ô]Epson Fx-1170[Ô]
If InStr(UCase(X.DeviceName), UCase(nomedaimpressora)) > 0 Then
Set SetarImpressora = X
Set Printer = X
Exit For
End If
depois disso você efetua a sua impressão
Next
Dim X As Printer
For Each X In Printers
[ô]Feito com [Ô]InStr[Ô], pois no Win2000 o [Ô]DeviceName[Ô] vem com o path i.e. [Ô]\\SrvPfs\Epson Fx-1170[Ô] e nao [Ô]Epson Fx-1170[Ô]
If InStr(UCase(X.DeviceName), UCase(nomedaimpressora)) > 0 Then
Set SetarImpressora = X
Set Printer = X
Exit For
End If
depois disso você efetua a sua impressão
Next
Tópico encerrado , respostas não são mais permitidas