Newsgroup: it.comp.appl.access
Titolo: Re: mantenere disponibili le office library 10.0

 grazie a tutti.
 
usa il late binding per svincolarti dalla versione delle librerie office
 
http://msofficefun.wordpress.com/2011/02/26/early-binding-vs-late-binding-in-office-vba/
 
 
 
ciao!

ciao!
 
grazie, non ho capito molto, anche per il mio scarso inglese, qualcuno sa 
spiegarmi di cosa si tratta e come modificare il mio db per svincolarmi 
definitivamente dalla versione delle office library?
 
grazie anticipatamente a tutti.
 

 LATEBINDING Vs EARLYBINDING
 
    Ci sono 2 modi per sfruttare OLE Automation al fine di controllare applicazioni esterne(che ovviamente espongono un'interfaccia OLE)
 
    1) LATE BINDING (Associazione Tardiva) che sfruttando il metodo CreateObject(per istanziare un oggetto nuovo)
    o GetObject(per usare l'istanza di un'oggetto già aperto).
 
    Questo metodo non fa esplicito riferimento ad una Libreria, ma lascia l'autonomia al
    sistema di istanziare il riferimento più recente di quel SERVER di Automazione.
    NON SERVONO RIFERIMENTI A LIBRERIE ESTERNE.
 
    Esempio di codice in modalità LATEBINDING per istanziare un'oggetto EXCEL:
    codice:
 
            Dim xlApp As Object
            Set xlApp = CreateObject("Excel.Application")
            xlApp.Workbooks.Open "c:\NomeFile.xls"
 
    Oppure apriamo l'istanza di Excel già in esecuzione:
    codice:
 
            Dim xlApp As Object
            Set xlApp = GetObject("c:\NomeFile.xls")
 
    La variabile Oggetto [xlApp] ora contiene un'istanza di Excel nuova o preesistente.
    Chiaramente se si cerca di usare il GetObject e non esiste nessuna istanza del Server di Automazione(EXCEL in questo caso) verrà
    restituito un'errore Err=429, gestendo il quale si prevengono inceppamenti, in quanto si tenta di usare GETOBJECT, si intercetta l'errore 429 ed in tal caso si
    ricorre al CREATEOBJECT.
 
    VANTAGGI:
    Non richiedendo riferimenti fissi, su qualsiasi macchina venga eseguito il codice, anche se presenti VERSIONI di SERVER OLE diverse.
    Il LATEBINDING è definito VERSION INDIPENDENT.
    Notevole miglioria soprattutto per distribuzioni MDE che non richiederà lo scroll della collection REFERENCES con il Check della propery
    ISBROKEN o BROKENREFERENCE membro di Application per poi caricarle RUNTIME, ma questo richiede la selezione del File SERVER OLE, quindi altro Codice.
 
    SVANTAGGI:
    Gli oggetti dichiarati in LATEBINDING non consentono di esporre gli EVENTI, quindi se si devono intercettare EVENTI dell'oggetto EXCEL da Access
    è impossibile con questa tecnica.
    Gli oggetti dichiarati in LATEBINDING non consentono l'elenco di Metodi/Proprietà come in VBEditor è normale vedere con l'uso dell'Intellisense.
    Gli oggetti dichiarati in LATEBINDING non consentono di usare le costanti appartenenti a quella Application in quanto non inseriti.
    Gli oggetti dichiarati in LATEBINDING non consentono l'accesso all'HELP specifico della Libreria.
 
    2) EARLY BINDING (Associazione Preventiva)
    Questo metodo invece richiede l'esplicito riferimento al SERVER di AUTOMAZIONE, che dovrà essere inserito nelle LIBRERIE di riferimento del progetto.
    Esempio di codice in modalità EARLYBINDING per istanziare un'oggetto EXCEL:
    codice:
 
            Dim xlApp As New Excel.Application
            Set xlApp = New Excel.Application
            xlApp.Workbooks.Open "c:\NomeFile.xls"
 
    VANTAGGI:
    E' leggermente più veloce l'istanza dell'oggetto in quanto non serve la ricerca del SERVER OLE, che è già definito
    Possiamo ereditare EVENTI.
    Possiamo accedere all'uso delle Costanti.
    Possiamo avere, tramite Intellisense da VBeditor, l'elenco di Metodi/Proprietà/Eventi.
    Possiamo accedere all'HELP della libreria.
 
    SVANTAGGI:
    Il più grosso svantaggio, che però pesa a tal punto da rendere sconveniente questo metodo nonostante i numerosi vantaggi, è il
    fatto che proprio per essere VERSION DIPENDENT, è come avere le mani legate, quindi le librerie del PC di sviluppo dovranno
    essere le stesse di quelle del PC di destinazione, cosa non sempre possibile.
 
    In conclusinoe, se non si devono ereditare eventi, il suggerimento è di far riferimento SEMPRE alla tecncia LATEBINDING, ma, in fase di sviluppo
    è stupido rinunciare ai VANTAGGI di EARLYBINDING, quindi il mio consiglio è di sviluppare inserendo i RIFERIMENTI, e prima di distribuire
    toglierli, inserendo la parte di codice per l'istanza in LATEBINDING sostituendo l'assegnazione delle Variabili da esplicito ad Object. 
 
 
@Alex