Newsgroup: it.comp.appl.access
Titolo: Report....vari quesiti

come da oggetto:
1) Ho la necessità di far impostare all'utente una stampante specifica solo
per un report; se il programma è in formato .mdb solitamente lo facevo fare
entrando in file imposta pagina etc.etc.
Se però il programma è compilato in .mde ho visto che le impostazioni non
vengono salvate...quindi come fo ?
2) Ho pensato allora di creare un .mdb con tabelle collegate che contenga
solo i report; è possbile aprire il report dell'.mdb da una maschera
dell'.mde ?
Sono in super-panne
Vi prego aiutatemi !
Grazie in anticipo
--------------------------------
Inviato via 
http://usenet.libero.it


Da VBA puoi:
1) Salvare in una variabile globale il nome della stampante predefinita
corrente
2) Impostare il nuovo nome della stampante predefinita
3) Esegui il tuo report
4) Reimposta come predefinita la stampante che era corrente al punto 1)
Per fare questo in un modulo del tuo database memorizza le seguenti
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 Sub SetDefaultPrinter(s As String)
'imposta la stampante passata come argomento a predefinita
On Error GoTo Esci
Dim WshNetwork As Object
If IsNull(s) Or s = "" Then Exit Sub
Set WshNetwork = CreateObject("WScript.Network")
WshNetwork.SetDefaultPrinter (s)
Set WshNetwork = Nothing
DoEvents
Esci:
End Sub
Public Sub ResetDefaultPrinter()
'reimposta a predefinita la stampante memorizzata nella var globale
SetDefaultPrinter (DefaultPrinter)
End Sub
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
Fatto questo puoi eseguire il report in questa maniera:
  ' memorizza il nome della stampande
  ' predefinita nella variabile globale DefaultPrinter
  ' usando la funzione GetDefaultPrinter
DefaultPrinter = Left(GetDefaultPrinter, InStr(GetDefaultPrinter, ",") - 1)
  ' Imposta come stampante predefinita la stampante specifica
  ' per il tuo report usando la funzione SetDefaultPrinter
Call SetDefaultPrinter("NomeStampanteSpecifica")
  'Esegui il report
DoCmd.OpenReport "NomeReport"
  ' ripristina il nome della stampante predefinita
Call ResetDefaultPrinter
dove, al posto della parola NomeStampanteSpecifica digiterai il nome della
stampante che vuoi usare solo per quel report ed al posto della parola
NomeReport digiterai il nome del report che vuoi eseguire.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ciao
