M.A.Engineering

Home ] Su ]

 

Cos’è un’add-in ?

Overview

Start

Repository Manager

Cos’è un’add-in ?

Una add-in è una estensione di Access. In una installazione "full" di Access, esistono una trentina di add-in. Chiunque abbia usato Access per più di 10 minuti è incappato in una add-in: Gestore tabelle collegate, wizards per la creazione di documenti (Autocomposizione maschera), Generatore Espressioni, Generatore stringhe di connessione, ecc.

Qual'è il formato di una add-in? E' un eseguibile? Una dll?

Le add-in di Access97 sono dei normali file access, con estensione mdb, mda o mde.  Microsoft Office 2000 Developer, prevede anche la creazione di add-in in formato dll.

Un sottoinsieme delle add-in sono le autocomposizioni (wizard). Un altro sottoinsieme è quello dei generatori (builder). Tutto ciò che non è né autocomposizione ne generatore resta add-in.

Le autocomposizione creano documenti (credo che l’autocomposizione più nota del mondo sia l’autocomposizione maschera).

I generatori invece creano stringhe, usate come pezzi di codice, valori di proprietà ecc. (il generatore espressioni ne è un esempio).

Perchè sono così largamente usate?
Perchè non intaccano la struttura generale del progetto msaccess.exe, pur consentendo una estensione delle sue funzionalità. Le add-in sono il modo per estendere Access appunto. Chiunque pensi che un problema debba far parte del corredo standard di access, può realizzare la relativa add-in e avere così una versione "estesa" di access.

Overview

Access Navigator è una add-in, ma non è un wizard, perchè non crea maschere e non crea report, né un builder perchè non genera stringhe. Access Navigator è uno strato di software che si sovrappone agli elementi base di una applicazione (chiamerò ognuno di questi elementi base con il termine generico DOCUMENTO):

maschere e report 
ma anche tabelle, query, macro, routine, stored procedure e pagine web,

e fornisce tre servizi:

Organizzazione gerarchica dei documenti;  
Navigazione documentale;
Costruzione di filtri;

in cantiere (servizi che attualmente non vengono forniti, ma sui quali sto rimuginando):

Gestione lingue 
SQL Maker ovvero un costruttore di viste per l'utente finale.
Batch report, un report-engine che genera file in formato: testo, html, xml. Un modulo che attualmente ho in VB5.0 sviluppato per  un contesto dove vengono stampate oltre 10.000 pagine al giorno su modulo continuo. Le performance di Batch report sono da 2 a 3 volte superiori a quelle di Access, semplicemente perchè esso è un report-engine ad un passo solo (per cui, per esempio, non è possibile mettere un totale in un header).
Report wizard

Voi scrivete i pezzi della soluzione, poi con Access Navigator li mettete insieme

 

Access Navigator 2.0 è una add-in application-oriented, orientata all'applicazione. Questo vuol dire che i servizi da essa offerti sono rivolti all'applicazione e perciò il "beneficiario" di tali servizi è l'utente finale, l'utente dell'applicazione scritta da voi. Chi costruisce applicazioni, si scontra con questi problemi:

1) Organizzazione gerarchica dei documenti: fornire un'interfaccia explorer-like per definire folder all'interno di ognuno dei quali poter inserire uno o più documenti (con documento intendo fare riferimento indistintamente a tabella, query, maschera, report, pagina html, routine e stored procedure) dell'applicazione:

2) Navigazione documentale: agganciare un documento con un altro. Sono sulla maschera A, voglio aprire il report B solo con i dati associati al record corrente della maschera (A). Ma anche collegare tra loro due maschere e far in modo che allo scrolling della maschera “master” l’altra maschera mostri solo i dati correlati. Le relazioni hanno senso solo tra documenti di tipo tabella,query o maschera e documenti di tipo tabella, query, maschera, report, pagina web, funzione (sub o function) o stored-procedure. Quando ho progettato questa funzione ho pensato alle relazioni tra tabelle. Credo che questa funzione realizzi il concetto di specificazione di relazioni tra le varie entità dell'applicazione. Oltre alla join-condition, una relazione tra documenti ha altre proprietà in funzione dei tipi di documenti coinvolti nella relatione.

3) Costruzione di filtri: fornire un'interfaccia per ogni documento, per consentire agli utenti di stampare solo una parte dei dati. Attraverso la funzione The Wheremaker è possibile definire per ogni documento una o più condizione, di salvarle e di editarle. Ci tengo a sottolineare che il WhereMaker è completo nel senso che non esiste una condizione così complessa da non poter essere creata attraverso le sue funzionalità. Esempi di condizioni create con The WhereMaker sono:

Esempio 1:

Campo1 like '*XXX*'

Esempio 2:

(Campo1 >= 'C' AND Campo1 <= 'P' ) OR (Campo2 like 'XXX*')

Esempio 3:

(Campo1 >= 'C' AND Campo1 <= 'P' ) OR Not (Campo2 Is NULL)

Esempio 4:

(Campo1 IN (1,1,2,3,5,8,13,21,34,55) AND (NOT (Campo2 IN (2,4,6,8)))) OR (Campo3 >= 10 and Campo3 <=100)
... ...
Esempio oo Non esiste predicato non esprimibile attraverso The WhereMaker

4) Allo stato attuale la gestione di più lingue è limitata alla add-in stessa, nel senso che Access Navigator è multilingua. Prevedo a breve di estendere tale funzionalità anche alle applicazioni da esso gestite.

Start

Dopo aver installato Access Navigator, nel menu Strumenti, Aggiunte è disponibile anche la voce  Access Navigator ?.? - by M.A.Engineering

Repository Manager

Dopo aver selezionato la voce Access Navigator ?.? by M.A.Engineering dal menu Aggiunte, nel database corrente vengono creati i seguenti oggetti:  

1 toolbar (Access Navigator ?.?)  
1 macro (Autoexec)   
1 reference
3 maschere (nascoste)  
zfMAE_Browse  
zfMAE_TreeView  
zfMAE_UniversalSubForm

Il primo pulstante, MAE, fa partire il   Repository Manager. Questo aspetto è importantissimo è va capito bene. Tutti i servizi offerti da Access Navigator si basano su informazioni archiviate in un database (detto appunto repository). L'interfaccia attraverso la quale si gestisce questo insieme di informazioni si chiama appunto repository manager.

L'elenco delle maschere, dei report, i campi dei rispettivi record source e molto altro ancora, sono tutte informazioni che Access Navigator si preoccupa di memorizzare in tabelle per potervi poi accedere all'uopo. Sarebbe stato possibile usare anche le tabelle di sistema di Access (MSysObjects e altre) ma ho preferito farne a meno per tante ragioni.

Per chi è interessato alla struttura del repository, le tabelle sono:  

ztMAE_Documents: Censisce i documenti di ogni applicazione, grazie all’attributo CurrentApplicationName è possibile distinguere i documenti di una applicazione da quelli di un'altra (il repository è UNICO!!! Tutte le applicazioni di una data installazione vengono gestite da una sola istanza di Access Navigator);

ztMAE_DocumentFields: Per ogni documento censisce i campi del corrispondente data source;

ztMAE_Menu: Anagrafica dei menu, infatti per ogni applicazione è possibile definire diversi menu assegnabili a utenti diversi;

ztMAE_Folders: Anagrafica dei folder del menu ad albero;

ztMAE_SubFolders: Anagrafica ricorsiva delle parentele Folder-SubFolder;

ztMAE_DocumentsFolder: Censisce l’elenco dei documenti assegnati ad ogni folder;

ztMAE_NavigatorMaster: Anagrafica delle relazioni tra documenti;

ztMAE_NavigatorDetail: Dettaglio delle relazione tra i documenti;

ztMAE_WhereConditionMaster: Anagrafica dei filtri (where condition); ogni filtro fa riferimento ad un documento;

ztMAE_WhereConditionDetail: Dettaglio di un filtro, elenca le espressioni relativi ad ogni filtro (numero di parentesi aperte, campo, operatore relazionale, valore, numero di parentesi chiuse, operatore logico);

La gestione del repository è AUTOMATICA. Ci pensa Access Navigator. Quando il Repository Manager parte, verifica la presenza delle informazioni necessarie per la gestione dell'applicazione corrente. Se il repository è vuoto o qualcosa è cambiato dall'ultima volta che è stato eseguito, vi chiede se volete aggiornarlo. Tale aggiornamento di fatto consiste nell'aprire in modalità struttura tutti i documenti (o solo quelli modificati) e nella registrazione di tutte le informazioni ritenute necessarie per la fornitura dei servizi che Access Navigator si prefigge di fornire.

Ecco come si presenta il repository manager quando non è ancora stata definita una struttura gerarchica (menù) tra i vari documenti dell'applicazione.

 

Usando il pulsante  

è possibile creare un menù di default.

Usando i pulsanti 

è possibile assegnare e/o eliminare un folder come subfolder di un altro. Con la stessa tecnica, siamo pronti per assegnare i documenti ai vari folder.

continua...

data ultimo aggiornamento 22/02/2001 10:22:48

Home Su

 

Created: 2000 - 05 - 01

Microsoft, Visual Basic, VBA and Access 97 are registered trademarks of Microsoft Corporation. All references to Visual Basic, Visual Basic for Applications (VBA), Access and Office are for products from Microsoft Corporation.