General

6.110 Registrare in una tabella l’elenco delle copertine FAX da usare con WinFax PRO 10.0 di Symantec
  Roberto
Nella funzione ElencoCopertine contenuta nel modulo Funzione Crea Elenco Copertine del database di esempio allegato si opera facendo riferimento a SDK (Software Development Kit) le cui funzioni, oggetti e metodi vengono installati automaticamente durante l’installazione di WinFAx PRO 10.0 della Symantec.

Per usare la suddetta funzione è necessario aggiungere al database il riferimento WinFax Automation Server.
La funzione fa anche riferimento alla libreria Microsoft DAO quindi, se si usa una versione successiva ad Access 97 è necessario aggiungere tale libreria ai riferimenti del proprio database.

La funzione ElencoCopertine permette di memorizzare in una tabella scelta dall’utilizzatore l’indice, la descrizione ed il path delle copertine il cui elenco è contenuto in un database di WinFax PRO 10.0.
La funzione memorizza inoltre nella tabella il path di altri file .CVP che eventualmente risultino presenti nella directory delle copertine di cui sopra e registra infine il riferimento alla copertina di default.
La tabella in cui la funzione memorizza i dati deve contenere almeno tre campi di cui il primo deve essere di tipo Numerico e nel quale la funzione registrerà l’indice numerico della copertina; il secondo campo deve essere di tipo Testo ed in esso la funzione registrerà la descrizione della copertina; infine il terzo campo deve essere di tipo Testo ed in esso la funzione registrerà il path completo della copertina. La tabella può contenere eventuali altri campi a discrezione dell’utente e avrà il nome che l’utente deciderà e che comunicherà alla funzione al momento del suo richiamo.

Durante l’esecuzione della funzione non è necessario che il Controller di WinFax sia aperto.

La funzione ElencoCopertine è stata sviluppata e testata con Access 97 in ambiente Windows ME; si presuppone però che funzioni anche con versioni successive di Access in ambienti operativi diversi da Windows ME.

Il richiamo della funzione andrà effettuato nel modo seguente:
   Call ElencoCopertine("NomeTabella")
dove NomeTabella è il nome della tabella dove si vuole memorizzare l’elenco delle copertine.

Nel caso in cui non sia possibile aprire il database di esempio allegato, diamo qui di seguito il listato del codice VBA della funzioni di cui sopra.

    '*****************************************************************************
    '*                                                                                                                                                      *
    '* Questa funzione serve a registrare in una tabella l'indice, il nome e il path di                           *
    '* tutte le copertine (file .CVP) contenute nel database copertine di WinFax PRO 10.0               *
    '* della Symantec                                                                                                                            *
    '*                                                                                                                                                      *
    '* Autore: Roberto                                                                                                                          *
    '* Data: Marzo 2003                                                                                                                       *
    '*                                                                                                                                                     *
    '* Affinchè questa funzione non segnali errore, occorre aggiungere                                             *
    '* al database il riferimento a WinFax Automation Server                                                            *
    '*                                                                                                                                                     *
    '* Per migliorare la performance della funzione, prima dell'esecuzione, attivare il                      *
    '* Controller di WinFax PRO che altrimenti verrà aperto e poi richiuso automaticamente.         *
    '*                                                                                                                                                     *
    '****************************************************************************

Public Function ElencoCopertine(NomeTabella As String)

    ' NomeTabella è il nome di una variabile stringa che contiene il nome della tabella
    ' nella quale si vuole registrare i dati relativi alle copertine contenute nel database
    ' copertine di WinFax PRO 10.0 della Symantec.
    ' La tabella deve contenere almeno tre campi di cui il primo, di tipo dati Numerico,
    ' è la chiave primaria e conterrà l'indice della copertina; il secondo campo, di tipo
    ' dati Testo, conterrà la decrizione della copertina ed il terzo, di tipo dati Testo,
    ' conterrà il path completo del file .CVP che contiene la copertina. La tabella può
    ' contenere anche altri campi che però la funzione, nel creare i record, lascerà vuoti.

Dim pageObj As Object       ' variabile oggetto della pagina copertina
Dim pagesObj As Object      ' variabile oggetto dell'insieme delle pagine delle copertine
Dim t As Integer
Dim rst As DAO.Recordset        ' variabile recordset della tabella in cui registrare i dati
Dim PrimaCopertina As String
Dim MioPath As String
Dim Conta As Long
Dim NomeCopertina As String
Dim MioIndirizzo As String
Dim TerzoCampo As String

' Abilita la routine di gestione degli errori
On Error GoTo ElencoCopertine_Errore
' cancella tutti i record dalla tabella delle copertine
DoCmd.SetWarnings False
DoCmd.RunSQL "Delete * From " & NomeTabella & ";"
DoCmd.SetWarnings True
' Imposta l'oggetto dell'insieme delle copertine
Set pagesObj = CreateObject("WinFax.CoverPages")
' Apri il recorset sulla tabella che deve contenere i dati
Set rst = CurrentDb().OpenRecordset(NomeTabella)
' Per ogni copertina contenuta nel database copertine
For t = 1 To 1000
    ' Imposta l'oggetto pagina-copertina con l'ennesimo item dell'insieme delle copertine
    Set pageObj = pagesObj.Item(t)
    ' aggiungi un record nella tabella
    rst.AddNew
    ' memorizza nel record corrente l 'indice della copertina
    rst.Fields(0) = t
    ' memorizza nel record corrente la descrizione della copertina
    rst.Fields(1) = pageObj.GetDescription
    ' memorizza nel record corrente il path del file della copertina
    rst.Fields(2) = pageObj.GetFilename
    If t = 1 Then
        ' Se è la prima copertina, memorizzane il path in una variabile
        PrimaCopertina = pageObj.GetFilename
        ' Determina il path della cartella che contiene le copertine
        MioPath = Left(PrimaCopertina, Len(PrimaCopertina) - Len(Dir(PrimaCopertina)) - 1)
    End If
    ' salva il record corrente nella tabella
    rst.Update
    ' chiudi la variabile oggetto copertina
    Set pageObj = Nothing
Next t

'*********************************
' ROUTINE DI USCITA DALLA FUNZIONE
'*********************************
ElencoCopertine_Esci:
If Nz(PrimaCopertina, "") = "" Then
    ' Se non esitono copertne nel database copertine di Win Fax,
    ' danne avviso all'operatore
    MsgBox "Il database delle copertine non è stato trovato" & _
    Chr$(10) & Chr$(13) & Chr$(10) & Chr$(13) & _
    "Puoi usare solo la copertina di Default", vbExclamation + vbOKOnly, _
    "Database delle copertine FAX"
Else
    ' Se invece esistono copertine nel database copertine di Win Fax,
    ' registra nella tabella anche i dati degli altri eventuali file .CVP
    ' non contenuti nel database copertine
    NomeCopertina = Dir(MioPath & "\*.CVP")
    Conta = t
    TerzoCampo = rst.Fields(2).Name
    Do Until NomeCopertina = ""
        MioIndirizzo = MioPath & "\" & NomeCopertina
        If DCount("*", NomeTabella, TerzoCampo & " = " & Chr$(34) & MioIndirizzo & Chr$(34)) = 0 Then
            rst.AddNew
            rst.Fields(0) = Conta
            rst.Fields(1) = "Altre_" & Left(NomeCopertina, Len(NomeCopertina) - 4)
            rst.Fields(2) = MioIndirizzo
            rst.Update
            Conta = Conta + 1
        End If
        NomeCopertina = Dir
    Loop
End If
' Registra il record relativo alla copertina di default
rst.AddNew
rst.Fields(0) = 0
rst.Fields(1) = " Copertina di Default"
rst.Fields(2) = Null
rst.Update
' chiudi il recordset e le variabili oggetto
Set rst = Nothing
Set pageObj = Nothing
Set pagesObj = Nothing
Exit Function

'*************************************
'* ROUTINE DELLA GESTIONE DEGLI ERRORI
'*************************************
ElencoCopertine_Errore:
' Se è un errore di fine ciclo vai alla routine di uscita della funzione
If Err.Number = -2147417851 Or Err.Number = 91 Then GoTo ElencoCopertine_Esci
'Visualizza il numero e la descrizione dell'errore
MsgBox Err.Number & " " & Err.Description, vbCritical + vbOKOnly, "Errore durante lettura copertine"
'Vai alla routine di uscita dalla funzione
GoTo ElencoCopertine_Esci
End Function

Download:
 
  CopertineFAX.zip (47Kb) MSAccess97 database


Se pensate di avere del materiale freeware interessante e volete pubblicarlo, allora leggete qui.