PROBLEMA COM SELECAO DE IMPRESSORA

GAMISTIK 27/08/2007 09:39:18
#232778
Pessoal, fiz um código onde armazeno numa tabela o nome da impressora que escolhi em um form.

Depois, faço a seguinte função para chamar a impressora para um serviço:

'-->CHAMAR IMPRESSORA PADRAO DE BOLETOS
Public Function ChamaImpPadrao() As Printer
Set cConn = New ADODB.Connection
Set rs = New ADODB.Recordset
If ConectaBanco = True Then
SQL = " Select ImpressoraBoleto from tb_ImpBoleto "
rs.Open SQL, cConn, adOpenDynamic, adLockBatchOptimistic
If Not rs.EOF Then
For Each ChamaImpPadrao In Printers
If ChamaImpPadrao.DeviceName = rs("ImpressoraBoleto") Then
Set Printer = ChamaImpPadrao
Exit For
End If
Next ChamaImpPadrao
End If
End If
End Function

'-->FIM DE CHAMAR IMPRESSORA PADRAO DE BOLETOS

Quando vou executar a impressao nessa parte:

With ChamaImpPadrao
.CurrentX = 0
.CurrentY = 0
.DrawStyle = 0
.PrintQuality = vbPRPQDraft
.ScaleMode = Picture1.ScaleMode
.ColorMode = vbPRCMMonochrome
.ScaleHeight = Picture1.ScaleHeight
.ScaleWidth = Picture1.ScaleWidth
.ScaleTop = Picture1.ScaleTop
.ScaleLeft = Picture1.ScaleLeft
End With

dá a mensagem "383 - 'CurrentX' property is read-only".

Alguém sabe porque???
USUARIO.EXCLUIDOS 27/08/2007 09:43:53
#232780


Se vc tirar esse código o q acontece?
GAMISTIK 27/08/2007 09:46:40
#232782
Não posso tirar este código porque são as características da medida do boleto. A questão é que antes eu usava o commondialog.showprinter pra apresentar seleçao de impressoras, mas o cliente não quis desse jeito, ele queria selecionar uma vez e todas as vezes que ele fosse imprimir boletos fosse direto para a impressora que ele escolheu. Qdo era com o commondialog.showprinter funcionava normal, sem essa mensagem.
USUARIO.EXCLUIDOS 27/08/2007 09:49:16
#232783
Resposta escolhida
Tente assim:

Dim Impressora as Printer
Set Impressora = ChamaImpPadrao

With Impressora
.CurrentX = 0
.CurrentY = 0
.DrawStyle = 0
.PrintQuality = vbPRPQDraft
.ScaleMode = Picture1.ScaleMode
.ColorMode = vbPRCMMonochrome
.ScaleHeight = Picture1.ScaleHeight
.ScaleWidth = Picture1.ScaleWidth
.ScaleTop = Picture1.ScaleTop
.ScaleLeft = Picture1.ScaleLeft
End With

USUARIO.EXCLUIDOS 27/08/2007 09:51:00
#232784

Eu n entendi esse seu For Each..pra q serve?

GAMISTIK 27/08/2007 09:58:17
#232786
MARCELOHF, tentei sua alternativa mas continua dando a mesma mensagem.

SINKERTEC, o For Each verifica dentre as impressoras instaladas se alguma é igual à que eu defini em minha tabela tb_ImpBoleto.

Meu, não sei mais o que fazer.
USUARIO.EXCLUIDOS 27/08/2007 10:07:09
#232789


Qtas e quais os tipos de impressoras instaladas na máquina?
GAMISTIK 27/08/2007 10:11:37
#232791
SINKERTEC E MARCELOHF obrigado pela ajuda, consegui resolver aqui. Fiz o seguinte:

na função publica tirei o Set Printer = ChamaImpPadrao

Depois fiz

Set Printer = ChamaImpPadrao
e no With coloquei
With Printer
. blá blá
end With

Deu certo!
USUARIO.EXCLUIDOS 27/08/2007 10:13:07
#232793
é amigo... acho que falei besteira... rsrs

Vc está tentando alterar algumas propriedades da impressora é isto??
Como realiza a impressão?

Através do Printer.Print??


Se sim, faça desta forma:
call ChamaImpPadrao()
With Printer
.CurrentX = 0
.CurrentY = 0
.DrawStyle = 0
.PrintQuality = vbPRPQDraft
.ScaleMode = Picture1.ScaleMode
.ColorMode = vbPRCMMonochrome
.ScaleHeight = Picture1.ScaleHeight
.ScaleWidth = Picture1.ScaleWidth
.ScaleTop = Picture1.ScaleTop
.ScaleLeft = Picture1.ScaleLeft
End With

Tópico encerrado , respostas não são mais permitidas