Newsgroup: it.comp.appl.access
Titolo: Non cambia la stampante... Access 2003

Ho convertito da A97 a A2003 fin qui tutto bene.
Genero da un Report un file in PDF con PDFWriter
- con Access 97 tutto bene- adesso quando
via codice gli faccio cambiare la stampante di default (hp1300)
in PDFWriter non la cambia e stampa sempre con HP1300
questo è il codice:
Public Function GetDefaultPrinter() As String
    'ritorna il nome della stampante predefinita
    Dim X As Integer
    Dim buffer As String
    buffer = Space$(255)
    X = GetProfileString("windows", "device", "?", buffer, 255)
    GetDefaultPrinter = Left$(buffer, X)
End Function
Public Sub SetDefaultPrinter(s As String)
On Error GoTo Esci
    'imposta la stampante passata come argomento a predefinita
    Dim X As Long
    If IsNull(s) Or s = "" Then Exit Sub
    X = WriteProfileString("windows", "device", vbNullString)
    DoEvents
    X = WriteProfileString("windows", "device", s)
    DoEvents
Esci:
End Sub
Public Sub ResetDefaultPrinter()
    'reimposta a predefinita la stampante memorizzata nella var globale
    SetDefaultPrinter (DefaultPrinter)
End Sub
 Public Function Chiama()
    SetPdfFileName (strFileName)
    DefaultPrinter = GetDefaultPrinter()
    SetDefaultPrinter ("Acrobat PDFWriter")
- NON FUNZIONA
 Dim Criterio As String
    Dim stDocName As String
    stDocName = rptReportCorrente.Name
    Criterio = "[IDOrdine]=" & rptReportCorrente![IDOrdine]
    DoCmd.OpenReport stDocName, acNormal, , Criterio
    For J = 0 To 7000
    DoEvents
    Next J
    SetDefaultPrinter (DefaultPrinter)
END FUNCTION
Grazie a tutti coloro che mi
daranno 1 mano
Ciao!
Davide

 ha scritto nel messaggio news:43205cd2$0$8487$5fc...@news.tiscali.it...

Passando al 2003 non dovresti più aver bisogno di quel codice perché puoi gestire tutto tramite l'oggetto Printer (vedi help) e le 
sue proprietà...
Ciao.
-- 
Sergio MAZZA 



Come ti ha detto Sergio in A2003 puoi usare l'oggetto Application.Printer e 
anche la classe Printers.
A volte A2003 trova difficoltà con le impostazioni predefinite per i report 
e le maschere. Per questo puoi dare un'occhiata qui:
http://support.microsoft.com/?scid=kb;it;290293&spid=2509&sid=72
Ciao, Carlo 

 ha scritto nel messaggio
news:dfpn70$906$1...@area.cu.mi.it...

Sergio, grazie mille per la tua veloce risposta!
Ho provato a cambiare la stampante con l'oggetto Printer , ma
non stampa perché vede la porta: DOT4_0001 che è
la porta della HP1300 USB.
Se hai degli altri suggerimenti...
Ciao e grazie. Davide

 ha scritto nel messaggio
news:5nZTe.29299$O6.18...@news3.tin.it...

Carlo, grazie mille per il link.
Ho provato ma non funzia. Con l'ggetto
Application.Printer  vede tutte le stampanti
con la porta predefinita USB che della HP1300
Meglio A97. Torno indietro...
Ciao e grazie. Davide


Questa funzione elenca le stampanti e le loro porte:
Public Function elencaStampanti()
Dim MiaStampante As Printer
For Each MiaStampante In Application.Printers
With MiaStampante
Debug.Print MiaStampante.DeviceName & " porta: " & .Port
End With
Next MiaStampante
End Function
Ciao, Carlo

 ha scritto nel messaggio 
news:432065ad$0$8489$5fc...@news.tiscali.it...
cut
Lo strano è che mi legge sempre la stessa porta!!!!!!
Forse trovato un bug.
Ciao, Carlo 

 ha scritto nel messaggio
news:gk_Te.29621$O6.18...@news3.tin.it...

Carlo, l'avevo già fatto. E' un bug.
Non ho parole...
Non mi cambia la stampante; non c'è niente da fare...
Se tu ci riesci dimmi qls!
Ciao, DAVIDE

 Ciao, Carlo
Ciao Carlo;
Vuoi dire che se hai 2 stampanti USB connesse, ti ritorna sempre la stessa porta?
Ciao.
-- 
Sergio MAZZA 


Prova con una script VBS;
es.
Dim WshNetwork as Object
Set WshNetwork = CreateObject("WScript.Network")
PrinterPath = "Nome stampante"
WshNetwork.SetDefaultPrinter PrinterPath
Set WshNetwork = nothing
Ciao.
-- 
Sergio MAZZA 


Sì, ma sei ca. il no 23456 che l'ha trovato. ;-)
"Port" fornisce sempre la porta della stampante predefinita.
Il bug esiste già da AX. MS lo sa, ma non l'ha riparato in A03.
-- 
cu
Karl
*********
Access FAQ: 
www.donkarl.com/it
+ Conferenza Italiana per Sviluppatori di Access (CISA) 


Sě, sempre la porta di default.
Secondo Karl č un bug noto e non corretto nemmeno in A2003...eppure 
basterebbe leggere il registro...e cchč cč vň!
Ciao, Carlo 

 Karl
 Quando lo hai scoperto tu, a che numero eri?
Ciao, Carlo 

 Karl
Quale è il numero di KB a cui si riferisce il bug?
Ciao, Carlo 


Questi alcuni link che potrebbero interessarti:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnacc2k2/html/ODC_acc10_Printers.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbaac10/html/acproprtmip.asp
Ciao, Carlo

 ha scritto nel messaggio
news:3oba73F...@individual.net...

Karl, non c'è nessun metodo per cambiare sta stampante??
Ciao, Davide
P.s. grazie a te, sergio e carlo

 Quale è il numero di KB a cui si riferisce il bug?
Non esiste.
Invece a google è "documentato" alcune volte p.e.
http://groups.google.com/group/it.comp.appl.access/browse_frm/thread/7c17a2e1b99f41bc/a8746a2ac731b8c2
Dove si vede che persino il mitico Simba l'ha già scroperto. :-)


 Ciao, Davide
E vorrei vedere che non ci fosse!
Puoi invocare una funzione globale del genere con Access XP
'Imposta la Stampante s (Passata come Parametro) Come Predefinita per la
sessione corrente
Public Function SetDefaultPrinter(S As String) As Boolean
    Dim Prn As Printer
    On Error GoTo Esci
    SetDefaultPrinter = False
    For Each Prn In Application.Printers
        If Prn.DeviceName = S Then Application.Printer = Prn
    Next Prn
    SetDefaultPrinter = True
Esci:
End Function
Oppure se usi il vecchio codice per Access 97 (che imposta la predefinita di
windows specificata) devi poi resettare l'insieme printers di A XP
Application.Printer = Nothing
Ciao.

 ha scritto nel
messaggio news:gH%Te.54162$HM1.1...@twister1.libero.it...

Funziona!!
Oscar, sei grande!
Grazie mille.
Ciao, DAVIDE

 Ciao, Carlo
Eh già! Basta poco...
Ciao.
-- 
Sergio MAZZA 


Carlo ne parlò già Karl tempo fa
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa - Conferenza Italiana per Sviluppatori Access
Info:  
www.donkarl.com/it