Newsgroup: it.comp.appl.access
Titolo: Stampare non su stampante predefinita ...

Ho fatto un pò di ricerca "preventiva" con google ma non ho trovato la
soluzione.
Ho aanche scaricato dal sitocomune stampanti.zip, molto interessante lo
userò sicuramente, ma non risolve completamente il mio problema.
Io vorrei forzare una stampa su una determinata stampante, che non è quella
predefinita.
Lo vorrei fare da codice perchè premendo un altro pulsante la stessa andrà
su quella predefinita, insomma non posso neppure forzarla da
"Vis.Struttura"+"Imposta Pagina".
In vb questo riesco a farlo, ma credo di avere capito che non è possibile
farlo da Access.
Ditemi che non ho capito niente ! :-)
--
ciao MarcoS
www.marcosanti.it

 ha scritto nel messaggio
news:bakk52$oc6a$1...@ID-122915.news.dfncis.de...

Se devi stampare solo un report su una stampante che non è quella
predefinita, a mio avviso devi:
1) Memorizzarti l'attuale stampante predefinita usando la funzione
GetDefaultPrinter che trovi nel modulo Printers dell'esempio Stampanti.zip
che hai scaricato dal Sito Comune.
2) Impostare la tua stampante come predefinita usando la funzione
SetDefaultPrinter che trovi nel modulo Printers dell'esempio Stampanti.zip
che hai scaricato dal Sito Comune.
3) Lanciare il report.
4) Reimpostare come predefinita la stampante che lo era inizialmente e per
fare questo puoi usare la funzione ResetDefaultPrinter che trovi nel modulo
Printers dell'esempio Stampanti.zip che hai scaricato dal Sito Comune.
C'è solo un piccolo problema: la funzione SetDefaultPrinter che è pubblicata
su Sito Comune non è valida per tutte le versioni di Windows e/o per tutte
le versioni di Access, ti consiglio di sostituirla con questa:
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
In alternativa puoi modificare la proprietà PrtDevMode: ma io l'ho sempre
trovata una proprietà mal documentata e quindi difficile da usare.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 trovata una proprietà mal documentata e quindi difficile da usare.
grazie Roberto per i suggerimenti :-)
--
ciao MarcoS
www.marcosanti.it

 ciao MarcoS
-- 


 della stampamte predefinita.
E' un ottima alternativa, peccato che non mi funzioni.
Seleziono la stampante, effettivamente la stampa arriva alla stampante
selezionata, il problema è che non arriva "MioReport" ma la scheda da cui la
lancio, cioè quella a video.
Es. da MioForm lancio MioReport su stampante HP2, bene arriva su HP2
MioForm.
grazie
Marco s.

 ha scritto nel messaggio
news:bav81n$40l75$1...@ID-122915.news.dfncis.de...

Se avviene questo significa che NON hai selezionato il report da stampare
con la DoCmd.SelectObject , che vuol dire che o non hai eseguito il metodo
SelectObject oppure lo hai eseguito indicando un nome di report inesistente.
Con
DoCmd.RunCommand acCmdPrint
viene stampato l'oggetto che è in quel momento attivo e se non riesci a
selezionare correttamente il report da eseguire con la DoCmd.SelectObject
l'oggetto attivo risulta essere proprio MioForm che è la maschera
all'interno della quale stai operando, e quello ti viene giustamente
stampato.
Prova a postare tutto il codice VBA che usi per stampare il report.



Una soluzione da abbinare al codice che già usi.
Imposti via codice la stampante predefinita...come già fai,
usa il pulsante nella maschera per aprire il report in anteprima
DoCmd.OpenReport "TuoReport", acPreview
poi nel report scrivi:
Private Sub Report_Activate()
DoCmd.PrintOut acPrintAll, 1, 1, acMedium, 1, True
DoEvents
DoCmd.Close acReport, Me.Name
Doevents
End Sub
Leggi nella guida "PrintOut" per le opzioni e la stampa "da" pagina "a"
pagina.
Questo stamperà il report dalla maschera sulla stampante predefinita.
Unica limitazione è quella che se vuoi visualizzare e basta il report, non
sarà possibile.
Per aggirare questo problema potresti realizzare un secondo report, identico
al primo, da utilizzare solo per la stampa.
Prova e facci sapere.
Ciao, Carlo

 Prova a postare tutto il codice VBA che usi per stampare il report.
eccolo:
DoCmd.SelectObject acReport, "R_Mag_Off", True
DoCmd.RunCommand acCmdPrint
ti assicuro che il report R_Mag_Off esiste.
ciao e grazie
marco s.

 ha scritto nel messaggio
news:bavcje$3v6hp$1...@ID-122915.news.dfncis.de...

Non saprei proprio cosa dirti: io lo uso regolarmente e a me Access stampa
il report e non la maschera.
Per scrupolo, prima di risponderti, ho fatto il copia/incoola del tuo codice
nell'evento "Su clic" di un pulsante di comando, ho cambiato il nome del
report e tale report mi è stato regolarmente stampato.
Mi dispiace.


 Mi dispiace.
Se prima chiudo la maschera da cui la lancio funziona :-) :
On Error GoTo CmdPDF_ERR
DoCmd.Close acForm, "S_Mag_SelPrint"
DoCmd.SelectObject acReport, "R_Mag_Off", True
DoCmd.RunCommand acCmdPrint
CmdPDF_ERR:
Exit Sub
Devo intercettare l'errore perchč se faccio annulla dalla maschera di
"seleziona stampanti" mi genera un errore, capita anche a Te ?
p.s. La maschera da cui lancio la stampa e di tipo:
Popup = Sě
A scelta obbligatoria = Sě
Che non sia questo il motivo per cui la devo chiudere ?
ciao
marco s.

 marco s.
