Newsgroup: it.comp.appl.access
Titolo: Impostare la stampante predefinita???? Un gran casino!!!!!!!!!

Ciao raga,
prendendo spunto da SitoComune ho collaudato il programmino per impostare la
stampante predefinita...
Il tutto lo ho realizzato sul lavoro, dove abbiamo ben 6 stampanti connesse
tra parallela e rete. ( ma lo stesso problema ho notato che lo ho pure a
casa dove ho collegato la stampante piů il fax).
La spiacevole sorpresa e' che una volta selezionata la stampante da Access,
aprendo la cartella stampanti, si trovano selezionate come predefinite ben
due stampanti (una era quella di default ovvero predefinita di winzoz mentre
l'altra č quella appena scelta) e che se provo a reimpostare da access la
stampante predefinita di winzoz questa non lo diviene piů!!!
Per ripristinare il tutto devo entrare nella cartella stampanti, selezionare
una 3 stampante come predefinita, poi selezionare di nuovo la stampante
originaria di winzoz per ripristinare la stampante originale predefinita...
mmmmmhhh   spero di non aver fatto troppo casino, se qcuno mi sa dare
qualche dritta, č ben accetto.
Grazie, ah il mio SO da entrambe le parti (casa, ufficio) č win 98 e A97 -
WinME e A97
Salutation
Marco


Credo che la stampante che usi da Access, seguendo l'esempio sul sitocomune,
sia valida solo fino a che Access è aperto.
Per sapere con esattezza quale è la stampante predefinita anche se la
cartella stampante ne evidenzia due, apri il Win.ini con notepad e leggi la
stampante predefinita.
Quella riportata è quella valida per Windows.
Comunque aprendo un report e usando i tasti CTRL+P puoi scegliere la
stampante su cui stampare.
Puoi anche usare DoCmd.RunCommand acCmdPrint.
Ciao, Carlo

 ha scritto nel messaggio
news:fTTxa.13070$Ny5.3...@twister2.libero.it...

Prova a sostituire il contenuto del modulo Printers dell'esempio pubblicato
sul Sito Comune con le seguenti dichiarazioni e funzioni:
Declare Function GetProfileSection& Lib _
"kernel32" Alias "GetProfileSectionA" _
(ByVal lpAppName As String, ByVal _
lpReturnedString As String, ByVal nSize As Long)
Declare Function GetProfileString& _
Lib "kernel32" Alias "GetProfileStringA" _
(ByVal lpAppName As String, ByVal lpKeyName _
As String, ByVal lpDefault As String, ByVal _
lpReturnedString As String, ByVal nSize As Long)
Declare Function WriteProfileString& Lib _
"kernel32" Alias "WriteProfileStringA" _
(ByVal lpszSection As String, ByVal _
lpszKeyName As String, ByVal lpszString As String)
Public DefaultPrinter As String
Public Function SostCar _
(s As String, c1 As String, c2 As String) As String
Dim pos As Integer
pos = InStr(1, s, c1)
If pos > 0 Then Mid(s, pos) = c2
SostCar = s
End Function
Public Sub SetDefaultPrinter(s As String)
On Error GoTo Esci
Dim WshNetwork As Object
Dim Lunghezza As Integer
If InStr(1, s, ",") = 0 Then
    Lunghezza = Len(s)
Else
    Lunghezza = InStr(1, s, ",") - 1
End If
If IsNull(s) Or s = "" Then Exit Sub
Set WshNetwork = _
CreateObject("WScript.Network")
WshNetwork.SetDefaultPrinter _
(Left(s, Lunghezza))
Set WshNetwork = Nothing
DoEvents
Esci:
End Sub
Public Sub ResetDefaultPrinter()
SetDefaultPrinter (DefaultPrinter)
End Sub
Public Function GetDefaultPrinter() _
As String
Dim x As Integer
Dim buffer As String
buffer = Space$(255)
x = GetProfileString("windows", _
"device", "?", buffer, 255)
Dim Lunghezza As Integer
If InStr(1, buffer, ",") = 0 Then
    Lunghezza = Len(buffer)
Else
    Lunghezza = _
    InStr(1, buffer, ",") - 1
End If
GetDefaultPrinter = _
Left$(buffer, Lunghezza)
End Function
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Ciao Marco
La procedura del sito comune per l'impostazione della stampante è riferita a
Windows 3.1 o Windows 3.11 e non è detto che su altre versioni di windows
funzioni correttamente.
In alternativa puoi utilizzare  Windows Script Host di cui ti posto un
esempio dal suo help su come impostare la stampante predefinita.
Esempio
Sub Set_Prn(ByVal PrinterPath As Variant)
Dim Wsh As Object
Set Wsh = CreateObject("WScript.Network")
Wsh.SetDefaultPrinter PrinterPath
Set Wsh = Nothing
End Sub
Utilizzo :
Set_Prn "HP LaserJet 4"
Ciao Giorgio.