Newsgroup: it.comp.appl.access
Titolo: fax da access, aiuto urgente

Salve a tutti,
Ho scaricato dal sito comune il modulo per inviare automaticamente i fax da
access con WinFaxPro.
Il meccanismo funziona solo che i criteri utilizzati per selezionare i
records da inviare e il destinatario, indicati nalla funzione che riporto in
calce non vanno bene,  mi spiego:
da quanto ho capito essendo poco pratico di codice, questa funzione
"Function WinFaxInvoices()"(riportata alla fine di questo messaggio)apre la
TABELLA" CUSTOMERS" (con i campi CLIENTE - NUMFAX ecc.) e invia a ciascun
CLIENTE via fax il report "rptWinFaxInvoice" che è una lista di fatture,
usando il criterio: "[customerid] = '" & ![CustomerID] in modo che a ogni
cliente vengano spedite solo le sue fatture.
A me invece servirebbe una cosa credo più semplice e cioè:
Io ho una maschera "CLIENTI" basata sulla TABELLA CUSTOMERS con con tutti i
dettagli anagrafici del cliente(nome-tel-fax ecc.), dopo aver  inserito un
nuovo cliente  devo inviare al cliente una conferma via fax con la sua
scheda per farle verificare che tutti i dati siano esatti. In questo momento
io ho un pulsante nella maschera che tramite una macro stampa alla stampante
il RECORD attivo su un report"SCHEDE"( anch'esso basato sulla tabella
CUSTOMERS con gli stessi campi), usando il criterio nella condizione where
della macro [customerid]=forms!CLIENTI!customerid e poi faccio il fax a
mano.
Avrei bisono di automatizzare la cosa inviando direttamente da access
tramite il pulsante di conferma,via fax  il report "rptWinFaxInvoice" basato
anch'esso sulla tabella CUSTOMERS con gli stessi campi, al cliente al
momento attivo nella maschera chiaramente e con i dettagli dello stesso
cliente.
In pratica invece di usare la stampante, usare WinFaxProfacendo in modo che
in modo  si prenda automaticamente il numero di fax del cliente.
Non so se, visto che il modulo per l'invio funziona, sia possibile ottenere
ciò che mi serve sostituendo il codice della funzione "Function
WinFaxInvoices()" , ma se fosse possibile, qualcuno può inviarmelo ?
grazie per risposte e
Stefano
====================
Function WinFaxInvoices()
    Dim dbsNorthwind As Database
    Dim rstCustomers As Recordset
    Dim intSendFaxReturnVal As Integer
   Set dbsNorthwind = CurrentDb()
    Set rstCustomers = dbsNorthwind.OpenRecordset("Customers",
dbOpenDynaset) ' Set Recordset to Customers table
    intSendFaxReturnVal = -1   ' Priming return value to True
    If MsgBox("Do you want to fax invoices" & Chr(13) & "to all customers
using WinFax?", 4) = 6 Then ' Make sure user wants to send fax to customers
        intSendFaxReturnVal = -1   ' Priming return value to True
        With rstCustomers
        Do Until .EOF Or intSendFaxReturnVal = 0 ' start do until end of
file or return value = false
            strInvoiceWhere = "[customerid] = '" & ![CustomerID] & "'" '
sets global strInvoiceWhere
            intSendFaxReturnVal = SendWinFax(![ContactName], ![Fax],
"rptWinFaxInvoice") 'Call user defined function and pass in data
            .MoveNext   ' Move to next record in Recordset
        Loop
        End With
    End If
End Function



Ti basta sostituire Set rstCustomers =
dbsNorthwind.OpenRecordset("Customers", dbOpenDynaset).
In pratica devi aprire un Recordset (magari una query o una stringa SQL) che
abbia nei criteri di [CustomerID], il CustomerID della maschera.
Ricorda di salvare il record prima di eseguire la funzione.
Io ho provato con le seguenti modifiche e funziona.
Function WinFaxInvoices()
    Dim dbsNorthwind As Database
    Dim rstCustomers As Recordset
    Dim intSendFaxReturnVal As Integer
    '*****aggiunte
    Dim MioSQL As String, MioID As Long
    MioID = Forms![SClienti]![CODCLI]
    MioSQL = "SELECT CLIENTI.CODCLI AS CustomerID, CLIENTI.COGNOME AS
ContactName, CLIENTI.Telefono AS FAX FROM CLIENTI Where (((CLIENTI.CODCLI) =
" & MioID & ")) WITH OWNERACCESS OPTION;"
    '*****fine aggiunte
    Set dbsNorthwind = CurrentDb()
    Set rstCustomers = dbsNorthwind.OpenRecordset(MioSQL)
    intSendFaxReturnVal = -1   ' Priming return value to True
    If MsgBox("Do you want to fax invoices" & Chr(13) & "to all customers
using WinFax?", 4) = 6 Then ' Make sure user wants to send fax to customers
        intSendFaxReturnVal = -1   ' Priming return value to True
        With rstCustomers
        Do Until .EOF Or intSendFaxReturnVal = 0 ' start do until end of
file or return value = false
            strInvoiceWhere = "[customerid] = '" & ![CustomerID] & "'" '
sets global strInvoiceWhere
            intSendFaxReturnVal = SendWinFax(![ContactName], ![Fax],
"CLIENTI") 'Call user defined function and pass in data
            .MoveNext   ' Move to next record in Recordset
        Loop
        End With
    End If
End Function
In pratica ho passato a recordset una stringa SQL presa dalla mia tabella
Clienti, cambiando opportunamente i nomi dei campi per renderla simile alla
tua istruzione. Ho poi cambiato il nome del Report.
Non ti sarà difficile fare altrettanto.
Ciao, Carlo