Newsgroup: it.comp.appl.access
Titolo: winfax e access

Mi ritrovo con il seguente problema:
ho un db access che mi genera un report dove ci sono vari tipi di font, sia
in grassetto che in corsivo. Ho poi della grafica per il logo dell'azienda e
delle barre grige per l'aspetto estetico del report.
Quando stampo sulla stampante viene, ovviamente, tutto bene.
Quando invece invio a winfax, i caratteri in corsivo non risultano leggibili
e le barre grige non ci sono.
Ho utilizzato la modalita di qualità fotografica ma il risultato non cambia.
Se però salvo il file come PDF e da arcobat reader lo invio al fax tutto
viene stampato a meraviglia.
perche stù fatto????
Grazie a tutti
bio

"bio" <c...@zed.met> ha scritto nel messaggio
news:b5t1qs$osr$1...@geronimo.keycomm.it...

Io ho provato e non ho alcun problema ad inviare per per FAX con WinFax PRO
un report che contiene caratteri in corsivo.
Cosa usi per inviare il report per FAX con WinFax? Usi DDE o SDK?
In ogni caso prova ad impostare da codice VBA l'alta risoluzione del FAX.
Se usi DDE prova con:
DDEPoke lngChannelNumber, "SendFax", "resolution(""HIGH"")"
se invece usi SDK prova con:
objWinfaxSend.SetResolution (1)
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


scusa non è che per caso hai un esempio di invio fax con DDE?
quello sul sito comune non mi funziona, sai se invece funziona?
attendo notizie. grazie.

 ha scritto nel messaggio
news:b5up5s$570$1...@lacerta.tiscalinet.it...

La funzione pubblicata sul Sito Comune con WinFax PRO 10.0 della Symantec
non funziona; sembra che funzionasse con una vecchia versione di WinFax.
Ho riscritto sia la funziono per l'invio di fax con DDE che la funzione per
impostare la stampante WinFax come stampante predefinita.
In una modulo del tuo database memorizza le seguenti funzioni:
Declare Function FindWindow& Lib "user32" Alias "FindWindowA" _
(ByVal IpClassName As String, ByVal IpWindowName As String)
Function SendWinFax(strFaxName As Variant, strFaxNumber As Variant, _
strReportName As String, Destinatario As Variant, Oggetto As Variant, _
Orario As Variant, DataFAX As Variant, Finestra As Integer, _
FileCover As Variant, TestoCover As Variant, _
Risoluzione As Integer) As Integer
'strFaxName      Variabile Stringa che contiene il nome del destinatario del
'                         FAX; può anche assumere il valore Null o la
'                         lunghezza zero
'strFaxNumber   Variabile Stringa che contiene il numero di FAX; se
'                        NumeroFAX è Null o ha lunghezza zero,
'                        verrà chiesto di digitare un numero di FAX in una
'                       finestra di dialogo
'strReportName   Variabile Stringa che contiene il nome del report che va
'                      inviato per fax. Può assumere anche il valore Null o
'                      avere lunghezza zero nel caso in cui si vuole usare
'                      la funzione per inviare solo una copertina.
'Destinatario    Variabile Stringa che contiene il nome della società del
'                     destinatario può anche assumere il valore null o avere
'                     lunghezza zero
'Oggetto         Variabile Stringa che contiene l'oggetto del FAX;
'                      può anche assumere il valore Null o avere lunghezza
'                      zero.
'Orario          Variabile Stringa che contiene l'orario in cui inviare il
'                    FAX nella forma HH:nn:ss ; se ha un valore Null o ha
'                    lunghezza zero, il fax verrà inviato all'ora corrente.
'DataFAX         Variabile Stringa che contiene la data di invio FAX nella
'                    forma mm/gg/aa ; se ha un valore Null o ha lunghezza
'                    zero, il FAX verrà trasmesso nella data odierna.
'Finestra        Variabile Intera che contiene il valore 1 la finestra di
'                     progressione va visualizzata; se il valore numerico è
'                    diverso
'                    da 1, la finestra non verrà visualizzata.
'FileCover       Variabile Stringa che contiene il path completo del file
'                     .CVP che contiene la copertina da usare; può anche
'                     assumere
'                     il valore Null o avere lunghezza zero nel caso non si
'                     voglia inviare
'                     una copertina o si vuole usare la copertina di default
'TestoCover      Variabile Striga che contiene il testo del messaggio da
'                    scrivere nella copertina; può anche assumere il valore
'                    Null
'                    o avere lunghezza zero nel caso in cui non si vuole
'                     inviare per FAX una copertina ma solamente un report
'Risoluzione     Variabile Intera che contiene il valore 1 se Alta
'                      risoluzione; se il valore numerico è diverso da 1,
'                      verrà impostata la bassa risoluzione
    '***********************
    ' Definizione di tutte le variabili
    '***********************
    Dim Comodo As Variant
    Dim lngChannelNumber As Long
    Dim strFaxStatus As String
    Dim strRecipFaxNum As String
    Dim strRecipTime As String
    Dim strRecipDate As String
    Dim strRecipName As String
    Dim strDestinatario As String
    Dim strOggetto As String
    Dim MioNumeroFAX As Variant
    Dim strRecipient As String
    'Attiva la routine per il trattamento personalizzato degli errori
    On Error GoTo SendWinFax_Error
    '*********************************************
    ' Settaggio delle variabili con i parametri passati alla funzione
    '*********************************************
    MioNumeroFAX = strFaxNumber
    If Nz(strFaxNumber, "") = "" And Nz(strFaxName, "") = "" Then
    ' se il numero di fax ed il nome del destinatario
    ' non sono significativi fai digitare un numero di fax
    MioNumeroFAX = InputBox("Digita un numero di FAX!", _
    "Destinatario sconosciuto")
    If MioNumeroFAX = "" Then
         ' se non è stato digitato un numero di fax, danne notizia e ...
         MsgBox "Non hai digitato un numero di FAX!" _
         & Chr$(10) & Chr$(13) & "Questo FAX non sarà inviato!", _
         vbCritical + vbOKOnly, "Destinatario sconosciuto"
         ' ... imposta l'esito di invio a negativo ...
         SendWinFax = 0
         ' ... ed esci dalla funzione
         Exit Function
        End If
    Else
        If Nz(strFaxNumber, "") = "" Then
            ' Se il numero di fax non è significativo
            ' fai digitare un numero di fax
            MioNumeroFAX = InputBox("Digita il numero di FAX" & Chr$(10) & _
            Chr$(13) & "di " & strFaxName, "Numero di FAX sconosciuto")
            If MioNumeroFAX = "" Then
                ' Se non non è stato digitato un numero di fax, danne
                ' notizia e ...
                MsgBox "Non hai digitato un numero di FAX!" _
                & Chr$(10) & Chr$(13) & "Questo FAX non sarà inviato!", _
                vbCritical + vbOKOnly, "Numero di FAX sconosciuto"
                ' ... imposta l'esito di invio a negativo ...
                SendWinFax = 0
                ' ... ed esci dalla funzione
                Exit Function
            End If
        End If
    End If
    strRecipFaxNum = Chr$(34) & MioNumeroFAX & Chr$(34)
    strRecipTime = Chr$(34) & Nz(Orario, "") & Chr$(34)
    strRecipDate = Chr$(34) & Nz(DataFAX, "") & Chr$(34)
    strRecipName = Chr$(34) & Nz(Left$(strFaxName, 24), "") & Chr$(34)
    strDestinatario = Chr$(34) & Nz(Mid(Trim(Destinatario), 1, 42), "") _
                              & Chr$(34)
    strOggetto = Chr$(34) & Nz(Oggetto, "") & Chr$(34)
    'Crea il recipiente di trasmissione
    strRecipient = strRecipFaxNum & "," & strRecipTime & "," _
    & strRecipDate & "," & strRecipName & _
    "," & strDestinatario & "," & strOggetto
'*******************
' Inizio della sezione DDE
'*******************
' Verifica se il Controller di WinFax è attiva
If FindWindow("Cfaxmng", vbNullString) <= 0 Then
    ' Se Il Controller di WinFax non è attivo,
    ' danne notizia all'operatore
    MsgBox "Il Controller di WinFax non è attivo", _
    vbCritical + vbOKOnly, "Messaggio WinFax"
    If Dir("C:\Programmi\WinFax\FAXMNG32.EXE") = "" Then
        ' Se il Controller NON è contenuto nella Directory
        'C:\Programmi\WinFax
        ' richiedi che il Controller venga attivato manualmente ...
        MsgBox "Attiva manualmente il Controller di WinFax", _
        vbExclamation + vbOKOnly, "Messaggio WinFax"
    Else
        If MsgBox("Vuoi che lo attivo io automaticamente?", _
        vbQuestion + vbYesNo, _
        "Controller WinFax non Attivo") = vbYes Then
            ' Se il Controller è contenuto nella directory
            'C:\Programmi\WinFax
            ' e l'operatore lo ritiene opportuno, attivalo
            Comodo = Shell("C:\Programmi\WinFax\FAXMNG32.EXE", _
            vbMinimizedNoFocus)
            ' Dai notizia all'operatore dell'avvenuta attivazione del
            ' Controller di WinFax
            MsgBox "Ora il Controller di WinFax é attivo", _
            vbInformation + vbOKOnly, "Messaggio WinFax"
            ' Continua l'invio del FAX
            GoTo Riprova
        End If
    End If
    ' ... imposta l'esito di invio a negativo...
    SendWinFax = 0
    ' ... ed esci dalla funzione
    GoTo SendFax_Exit
End If
Riprova:
        'Inizializza la connessione DDE
        lngChannelNumber = DDEInitiate("faxmng32", "CONTROL")
        'Legge lo stato della connessione DDE
        strFaxStatus = DDERequest(lngChannelNumber, "STATUS")
        ' Se WinFax è occupato, cicla sino a quando non si libera
        While strFaxStatus Like "Busy*"
            strFaxStatus = DDERequest(lngChannelNumber, "STATUS")
        Wend
        'Imposta ChannelNumber con il Canale DDE corrente
        lngChannelNumber = DDEInitiate("faxmng32", "TRANSMIT")
        'Imposta il recioiente di trasmissione
        DDEPoke lngChannelNumber, "Sendfax", _
        "recipient(" & strRecipient & ")"
        ' Se il valore di Finestra è uguale a 1 ...
        If Finestra = 1 Then
            ' ... imposta a SI la visualizzazione della finestra di dialogo
            DDEPoke lngChannelNumber, "Sendfax", "showsendscreen(""1"")"
        Else
            ' ... altrimenti imposta a NO la visualizzazione della finestra
            'di dialogo
            DDEPoke lngChannelNumber, "Sendfax", "showsendscreen(""0"")"
        End If
        ' Se il valore di FileCover è significativo ...
        If Nz(FileCover, "") <> "" Then
            ' ... imposta il nome del file .CVP che contiene il path
            ' della copertina che si vuole usare ...
            DDEPoke lngChannelNumber, "Sendfax", _
            "setcoverpage(" & Chr$(34) & FileCover & Chr$(34) & " )"
            ' Se il testo della copertina è significativo ...
            If Nz(TestoCover, "") <> "" Then
                ' ... imposta il testo della copertina
                DDEPoke lngChannelNumber, "Sendfax", _
                "fillcoverpage(" & Chr$(34) & TestoCover & Chr$(34) & ")"
            End If
        End If
        ' Se il valore di Risoluzione è uguale a 1 ...
        If Risoluzione = 1 Then
            'Imposta ad Alta la risoluzione ...
            DDEPoke lngChannelNumber, "SendFax", "resolution(""HIGH"")"
        Else
            ' ... altrimenti impostala a Bassa
            DDEPoke lngChannelNumber, "SendFax", "resolution(""LOW"")"
        End If
        ' memorizza il nome della stampande predefinita nella variabile
        ' globale DefaultPrinter usando la funzione GetDefaultPrinter
        DefaultPrinter = Left(GetDefaultPrinter, _
        InStr(GetDefaultPrinter, ",") - 1)
        ' Imposta WinFax come stampante predefinita usando la funzione
        ' SetDefaultPrinter
        Call SetDefaultPrinter("WinFax")
        'Esegui il report da inviare per FAX
        DoCmd.OpenReport strReportName, A_NORMAL
        ' Imposta a Vero l'esito dell'invio del FAX
        SendWinFax = -1
SendFax_Exit:
    ' Termina tutti i collegamenti e resetta ChannelNumber
    DDETerminateAll
    lngChannelNumber = False
    ' ripristina il nome della stampante predefinita
    Call ResetDefaultPrinter
    Exit Function
'************************************
'* ROUTINE DI GESTIONE DEGLI ERRORI
'************************************
SendWinFax_Error:
        ' visualizza il numero e la descrizione degli altri errori
        MsgBox "Error:" + Error$, 0, "Invio FAX"
        ' esci dalla funzione
        Resume SendFax_Exit
        GoTo SendFax_Exit
End Function
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
'sostituisce un carattere con un altro in una stringa
' (solo prima occorrenza)
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)
'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
La funzione va richiamata nel modo seguente:
Dim varInvio As Integer
varInvio = SendWinFax(NomeFAx, NumeroFAX, _
ReportFAX, SocietàFax, OggettoFAX, _
OrarioFAX, DataFAX, _
Finestra, CopertinaFAX, _
TestoCopertina, Risoluzione)
If varInvio = -1 Then
    MsgBox "Invio OK"
Else
    MsgBox "Invio FALLITO"
End If
Per quanto riguarda i parametri di richiamo della funzione, vedi quanto
scritto nelle note all'interno della funzione.
Ho anche un esempio, ma naturalmente non posso invirlo sul NG. Se vuoi
averlo al tuo indirizzo e-mail fammelo sapere.


"bio" <c...@zed.met> ha scritto nel messaggio
news:b5t1qs$osr$1...@geronimo.keycomm.it...

io mando semplicemente in stampa sulla stampante "winfax qualità"
Sbaglio?
bio
Grazie

prova
"bio" <c...@zed.met> ha scritto nel messaggio
news:b5t1qs$osr$1...@geronimo.keycomm.it...


"bio" <c...@zed.met> ha scritto nel messaggio
news:b5vg6s$mc6$1...@geronimo.keycomm.it...

Non si può dire proprio che sbagli, ma certamente non controlli da codice il
processo di invio FAX, quindi WinFax durante l'invio usa le impostazioni di
default impostate durante l'installazione di WinFax (o da te successivamente
modificate con la finestra Configurazione), visto che tu in nessuna maniera
le modifichi da codice VBA.
Se decidi di continuare ad inviare fax nella maniera attuale, per avere una
buona qualità di trasmissione FAX devi effettuare alcune impostazioni nella
finestra di Configurazione del programma WinFax: ad esempio nella
configurazione dell'opzione Driver di stampa devi scegliere Stampa di
qualità fotografica, ma innanzitutto nell'opzione Invio, nella scheda
Generale devi scegliere come Risoluzione fax Alta e non Standard; se non fai
questo il fatto che tu scelga come stampante la WinFax (Qualità fotografica)
potrebbe non essere sufficiente a sortire l'effetto desiderato.
Comunque, prova a dare uno sguardo alle funzioni che ho inviato a Simba883
con il mio messaggio di ieri delle ore 15:26; usando quelle funzioni l'invio
del fax è parametrico e tra l'altro puoi scegliere da codice anche la
risoluzione di trasmissione. Io con quella funzione, impostando l'alta
risoluzione, ottengo risultati soddisfacienti pur usando la stampante WinFax
standard e non quella di qualità fotografica: d'altra parte il parametro
risoluzione viene usato da WinFax a monte della trasmissione, ovvero nel
momento che converte il tuo file in file di tipo WinFax; ritengo che sia del
tutto inutile usare il driver migliore quando poi la risoluzione (ovvero la
conversione del file) è scadente.


Ti ringrazio moltissimo per il suggerimento....proverò a metterlo in
pratica.
Nel frattempo ho provato a fare i settaggi che mi hai consigliato.
Risultato: se scelgo stampa dal menu file e poi seleziono la stampante
winfax qualità il risultato è ancora scadente (identico a prima) ma, e qui
viene la stranezza se annullo e poi rimando la stampa dal pulsante sulla
barra degli strumenti.... come per magina (!!??) il report viene stampato
che è una meraviglia.
Bah!!!
bio

"bio" <c...@zed.met> ha scritto nel messaggio
news:b61hrf$btt$1...@geronimo.keycomm.it...

Se usi il comando di stampa dal menu File, prima di dare l'OK, prova a
pigiare il tasto proprietà e reimposta la definizione.
Probabilmente se usi il tasto di stampa dalla barra degli strumenti vengono
usate altre proprietà quali l'alta risoluzione.
Comunque sono dell'eavviso che, operando in Access, non sarebbe sbagliato
governare WinFax da codice VBA.
