1. Fondamentali

1.1   Versioni di Access 1.19 DB con sistema di lingua diversa
1.2   Conversione in una versione diversa di Access 1.20 Convertire MDB in VB
1.3   Creare un exe 1.21 Cancellare oggetti in un altro DB
1.4   Specifiche 1.22 La dimensione del database cresce molto
1.5   Denominazioni 1.23 Decompile
1.6   Esecuzione automatica all'avvio 1.24 Tool per trova e analisi
1.7   Ignorare Autoexec e impostazioni di avvio 1.25 Libri
1.8   Impedire l'uso del tasto shift all'avvio 1.26 Ripristinare l’MDB da un MDE
1.9   Modificare l'immagine d'avvio 1.27 Come procedere con database danneggiati
1.10 Apertura del DB ridotto o ingrandito 1.28 Virgola o punto e virgola
1.11 Nascondere la finestra principale di Access 1.29 Stampare le relazioni
1.12 Impedire la chiusura del database 1.30 Repliche
1.13 Apertura di un altro DB 1.31 Normalizzazione e teoria sui database
1.14 Usare oggetti da altri database 1.32 Nascondere oggetti del database
1.15 Importare barre e specifiche da un altro database 1.33 Barre dei menu e delle icone
1.16 Recuperare oggetti cancellati 1.34 Programmi di setup alternativi
1.17 Quanto è sicuro Access? 1.35 Divisione in Frontend e Backend
1.18 Uso delle protezioni 1.36 Personalizzare i Ribbon
   
1.1 Versioni di Access
http://www.donkarl.com/it?FAQ1.1 aggiornato 2013-05-10

Problema

Cerchi un elenco delle versioni di Access.

Soluzione

Di Access esistono le seguenti versioni:

Versioni a 16 bit
1.0 e 1.1 (pubblicato 1992/93) ormai in disuso
2.0 versione stabile, poco diffusa

Versioni a 32 bit
Access 95 (7.0), poco usata, ha molti bug
Access 97 (8.0), versione molto stabile, ancora diffusa
Access 2000 (9.0), molte novità, dopo alcuni SP stabile
Access 2002 (10.0), versione corretta di Access 2000
Access 2003 (11.0), poche novità, versione stabile

Versioni a 32+64 bit
Access 2007 (12.0), molti cambiamenti: 2007 Office 2007 Technet
Access 2010 (14.0), alcuni miglioramenti rispetto alla 2007: 2010 Office 2010 Technet
Access 2013 (15.0), l'ultima versione, poche novità in parte molto dure: 2013 Office 2013 Technet

I siti di Allen Browne su 2007 e 2010 danno più informazioni rispetto a quelli della MS.

Per le sopraelencate versioni di Access, per esattezza di Office, esistono molti Service Pack (SP) detti Update, cioè Bugfix, che dovrebbero essere installati. Per alcuni Update potete trovare nel menu ?/Info di Access quale sia esattamente la versione installata sul vostro computer, per altri è un po' più complicato da scoprire. Tutti i SP vengono rilasciati nella lingua specifica e quindi per l'Office italiano servono le versioni italiane.

I collegamenti per gli update più importanti li trovate nelle pagine dei Link.

in alto

1.2 Conversione in una versione diversa di Access
http://www.donkarl.com/it?FAQ1.2 aggiornato 2013-05-17

Problema

Vuoi convertire un database in una versione diversa.

Soluzione

I database nel formato di una versione più recente non possono essere aperti in una versione di Access più vecchia (nessuna compatibilità verso il basso). La stessa cosa si applica ai singoli oggetti di un database.

Comunque tutte le versioni di Access sono in su compatibili (con alcune restrizioni). I database creati con le versioni di Access più vecchie possono essere utilizzati o convertiti con le versioni di Access più recenti per 2-3 successive versioni. La conversione avviene automaticamente (con una maschera di avviso) quando avvii l’mdb/accdb con una versione più recente oppure può esser fatto con una voce del menu/backstage ribbon nella versione più recente.

Se la conversione non è più offerta perché il formato dell’origine del database è troppo vecchio, puoi tentare di creare un database nel nuovo formato ed importare tutti gli oggetti dal vecchio database utilizzando la voce di menu File/Carica dati esterni/Importa o la voce del ribbon Dati esterni/Importa/Access. Questo funziona per alcune combinazioni.

Dopo la conversione devi effettuare una verifica per le parti di codice VBA insufficientemente convertite, cioè scegliere Debug/Compila nell’editore di VBA. Questo fa saltar fuori i pezzi di codice non corretti, vedi anche La conversione fallisce.

Per la conversione da A97 ad A03 MS offre la Access 2003 Conversion Toolkit.

In tutte le versioni da Access 2000 in su, vi sono voci di menu/ribbon per convertire un database all’indietro verso formati meno recenti. Ciò spesso funziona ma non sempre. In particolare se il database utilizza caratteristiche di una nuova versione che non esistono nel formato della più vecchia allora gli oggetti interessati possono comportarsi in modo strano, essi non si aprono, il db o Access stesso va in crash. Per questo dopo che hai convertito un database in una versione precedente dovresti attentamente esaminare tutti gli oggetti.

Incorri in meno problemi se al primo posto crei e lasci un database nel formato più vecchio e lo utilizzi con la versione di Access più recente. Ciò è possibile in tutte le versioni di Access moderne per 2-3 successive versioni.
In A07/A10 vi è un aspetto peculiare a questo riguardo. MS stabilisce di usare lo stesso formato per entrambe le versioni, cioè il formato di A07. Questo è corretto solo fino ad un certo punto. Anche qui si applica: se il database è utilizzato con differenti versioni di Access devi prender cura di evitare caratteristiche che non sono ancora presenti nella vecchia versione.

in alto

1.3 Creare un exe
http://www.donkarl.com/it?FAQ1.3 aggiornato 2013-08-12

Problema

Vuoi distribuire un database di Access ad un utente senza Access.

Soluzione

Non si possono realizzare file eseguibili da un database di Access. Tutti i file di database di Access (non importa se accdb, mdb, accde, mde ecc.) necessitano sempre di una versione di Access, cioè di msaccess.exe, installata per essere utilizzati come applicazione.

Per la distribuzione ad utenti senza Access esiste, fino alla versione 2002/XP, una versione speciale di Access o di Office, per sviluppatori acquistabile separatamente. Per la versione 2003 non esiste una versione speciale di Office ma un pacchetto chiamato "Visual Studio Tools for the Microsoft Office System". Con questo MS dà licenza di distribuzione illimitata delle proprie applicazioni di Access con la relativa versione Runtime.

Per Access 2007 le "Access Developer Extensions" per la creazione di pacchetti e il Runtime stesso sono disponibili come download gratuiti dalla MS.
Con Access 2010 non ci sono più Developer Extensions, la creazione di pacchetti ecc. sono inclusi direttamente in Access 2010, il Runtime è gratis.

Il Runtime è una versione modificata di Access per l'uso dei database nella quale mancano però diverse cose: p.e. la visualizzazione Struttura ed i menu standard (v.a. http://support.microsoft.com/?kbid=842004). Le versioni di database costruite con il Runtime, tramite l'autocomposizione fornita da MS, quando vengono installate su altri computer spesso presentano diversi errori: conflitti di versioni diverse per alcune DLL, conflitti con altre versioni di Access installate su quel computer ed altro ancora. A causa di questi problemi che sorgono con l'autocomposizione del setup fornito da MS molti sviluppatori utilizzano tools esterni, cioè programmi alternativi per il setup.

Nomi delle versioni per sviluppatori:
A2 --> Access Developer's Toolkit (ADT) per A2
A95 --> Access Developer's Toolkit (ADT) per A95
A97 --> Office Developer's Edition (ODE)
A00 --> Microsoft Office Developer (MOD)
AX --> Office XP Developer
A03 --> Access 2003 Developer Extensions (compreso in Visual Studio Tools for the Microsoft Office System, anche detto: Microsoft Visual Studio Tools for Office 2003)
A07 --> Access Developer Extensions, per il download gratuito delle ADE e del Runtime 2007 v. Link
A10 --> Microsoft Access 2010 Runtime, download gratuito, v. Link, non ci sono più Developer Extensions
A13 --> Microsoft Access 2013 Runtime, download gratuito, v. Link

Le versioni precedenti sono per lo più reperibili solo sul mercato dell'usato.

in alto

1.4 Specifiche
http://www.donkarl.com/it?FAQ1.4 aggiornato 2013-08-12

Problema

Cerchi informazioni sulle dimensioni massime di qualcosa in/con Access.

Soluzione

Nell'help in linea sotto la voce "Specifiche di Access" (se siete fortunati) trovate l'elenco di tutte le caratteristiche dimensionali per DB, tabelle, maschere, ecc.. Seguono le più importanti (con commento) nell'ordine in cui più spesso vengono chieste e di cui non si trova notizia nell'help in linea:

Dimensioni massime di un mdb
A1.1 - A97 = 1 GB
A00 - A13 = 2 GB
Tramite l'esportazione delle tabelle ed il loro successivo riallegamento si possono superare questi limiti.

Dimensione massima delle tabelle
A1.1 - A97 = 1 GB
A00 - A13 = 2 GB
Non esiste un numero massimo di record, ma solo questa dimensione massima di archiviazione. Altre dimensioni massime importanti per le tabelle sono: 255 campi, 32 indici, 2000 caratteri per record (salvo la presenza di campi di tipo Memo o OLE). Da A00 c'è una proprietà "compressione Unicode" per i campi testo, l'attivazione di quest'ultima aumenta la capacità dei singoli record a 4000 caratteri.

Massimo numero di controlli nelle maschere e report
A2 - A13 = la documentazione dice 754
In tale limite non sono peraltro compresi solo i controlli, ma anche le sezioni ed i campi delle origini dati.
Prove con versioni recenti di Access hanno mostrato cifre più in alto, p.e.
A00 = 801
AX+A03 = 895

Massimo numero di righe in List- e Combo-Box
A2 - A13 = 65536

Massimo numero di utenti contemporanei in rete:
A2 - A13  = 255
Tale cifra è naturalmente del tutto teorica dato il carattere Fileserver di Access che riduce notevolmente il numero di utenti per una utilizzabilità reale. Non è possibile dare un numero esatto dati gli innumerevoli fattori concorrenti (principalmente la strutturazione del DB, la qualità della rete, l'organizzazione degli accessi). Le cifre maggiormente dichiarate dagli sviluppatori sono tra 5 e 25. Esistono però resoconti di DB di Access funzionanti con 100 utenti.

in alto

1.5 Denominazioni
http://www.donkarl.com/it?FAQ1.5 aggiornato 2006-12-18

Problema

Non sai come costruire le denominazioni dei tuoi oggetti, campi o variabili.

Soluzione

Esiste una convenzione per Access e VBA denominata "Leszynski/Reddick", breve "L/R". Le versioni più recenti di Gregory Reddick si trovano su www.xoc.net.
La caratterizzazione più importante di queste convenzioni è la "Hungarian Notation", cioè l'uso di prefissi che facciano immediatamente intuire di quale tipo di oggetto si tratti. Per esempio frmArticoli, tblClienti, ecc...

L'uso dei nomi convenzionali è consigliato, ma ovviamente non obbligatorio. La maggior parte degli utenti e molti programmatori usano denominazioni proprie. Rimane comunque vantaggioso l'uso di denominazioni riconoscibili, e cioè che seguano regole ricostruibili a posteriori, perchè sia tu che gli altri dopo un certo tempo riescano ancora a capirne il significato.

Motivi d'errore diffusi:

L'uso di segni speciali o di spazi nei nomi di oggetti o campi costringe a racchiuderli tra parentesi quadre ogni volta che li richiamate. Ciò può essere evitato, o meglio, lasciato fare ad Access, evitando segni speciali e sostituendo agli spazi il_trattino.

Le parole chiave di Access e VBA non dovrebbero venir utilizzate nelle proprie definizioni. Errori nei campi calcolati, nelle espressioni e soprattutto in VBA saranno quasi certi perchè Access non sempre riesce a distinguere tra campi calcolati, oggetti e le parole chiave.

L'errore più comune in questo senso è l'uso della denominazione Nome per i campi tabella. Nome è una proprietà in Access, cioè la denominazione dell'oggetto. (Oltre ad essere un comando per rinominare databases.) Quindi usate parole come "Cognome", "NomeDitta" ecc.. per i campi. Ugualmente usato è Numero = che ritorna il numero di controlli di un'oggetto. Ulteriori indicazioni sul tema le trovate nell'help in linea sotto: parole riservate e indicazioni sulla denominazione di ...

in alto

1.6 Esecuzione automatica all'avvio
http://www.donkarl.com/it?FAQ1.6 aggiornato 2013-08-12

Problema

All'avvio del database vuoi che venga eseguito o aperto qualcosa automaticamente.

Soluzione

Metodo 1

Nel menu Strumenti/Avvio (A95-A03) o nelle opzioni di Access Database corrente/Opzioni applicazione (da A07) si può impostare diverse visualizzazioni della finestra di Access, il titolo del database, i tasti funzione, la maschera d'avvio (Visualizza maschera) ed altro.

Per eseguire delle azioni VBA o macro si può chiamarle p.e. nell'evento avvio della maschera d'avvio.

Metodo 2

Si può creare una macro denominata Autoexec. Questa macro viene cercata da Access ad ogni avvio del database e qualora presente automaticamente eseguita. Tutto ciò che deve essere eseguito all'avvio, deve essere registrato come azione nella macro.

in alto

1.7 Ignorare Autoexec e impostazioni di avvio
http://www.donkarl.com/it?FAQ1.7 aggiornato 2013-08-06

Problema

Nella macro Autoexec o nelle opzioni d'avvio hai impostato l'apertura automatica di una maschera, la disattivazione delle barre o ribbon standard e dei tasti funzione (in particolare <F11> per la finestra del database) ed ora non riesci più ad accedere alla finestra del database o al riquadro di spostamento e ai tuoi oggetti.

Soluzione

Tieni premuto il tasto <Shift> (maiuscolo) all'avvio del database e le macro Autoexec e le impostazioni d'avvio non saranno eseguite.

in alto

1.8 Impedire l'uso del tasto shift all'avvio
http://www.donkarl.com/it?FAQ1.8 aggiornato 2013-08-12

Problema

L'utente aggira le impostazioni d'avvio tenendo premuto il tasto <Shift> all'apertura del database.

Soluzione

Esiste la proprietà AllowBypassKey (vedi l'help in linea) per proibire l'effetto del tasto . Puoi impostare questa proprietà ad esempio con la seguente procedura:

'************* CODE START *************
Sub EnableShift(blnFlag As Boolean)

    On Error GoTo Error_EnableShift

    Dim db As DAO.Database
    Dim prp As DAO.Property

    Set db = CurrentDb
    'assegnare il parametro consegnato al Property
    db.Properties!AllowBypassKey = blnFlag

Exit_EnableShift:
    Set prp = Nothing
    Exit Sub

Error_EnableShift:

    'creare il Property se non è ancora presente
    If Err = 3270 Then
        Set prp = db.CreateProperty("AllowBypassKey", dbBoolean, blnFlag)
        db.Properties.Append prp
        Resume Next
    Else
        MsgBox "Eccezione No " & Str(Err.Number) & " " & Err.Description
        Resume Exit_EnableShift
    End If

End Sub

'************* CODE END *************

Chiamata per impedire l'uso del tasto Shift: EnableShift(False)
Chiamata per permettere l'uso del tasto Shift: EnableShift(True)

Dove tale procedura venga richiamata non ha importanza. Appena la procedura viene richiamata una volta, l'impostazione di AllowBypassKey viene impostata per questo database fino al successivo cambiamento esplicito. Puoi quindi utilizzare qualunque evento a scelta o anche la finestra Immediata.

Fai molta attenzione a lasciarti un "passaggio segreto" per settare a True tale proprietà per poter accedere tu stesso ai tuoi oggetti (p.e. l'evento click di un'etichetta poco appariscente o simile).

AllowBypassKey senza l'attivazione delle protezioni di Access può essere modificata dall'esterno con conoscenze medie di programmazione. Qualora siano attive le protezioni di Access (vedi Uso delle protezioni) si può permettere di modificare tale proprietà solo a chi possieda le autorizzazioni neccessarie. Per questo è necessario di impostare il parametro DDL a Vero usando il metodo CreateProperty. (vedi l'help in linea per CreateProperty) Per l'esempio sopra riportato:

db.Properties.Append db.CreateProperty("AllowBypassKey", dbBoolean, blnFlag, True)

in alto

1.9 Modificare l'immagine d'avvio
http://www.donkarl.com/it?FAQ1.9 aggiornato 2013-10-11

Problema

Vuoi che all'avvio della tua applicazione non esca il logo di Access, ma un'immagine a tua scelta.

Soluzione

Salva l'immagine voluta in formato Bitmap nella cartella dell'mdb/accdb. Dalle lo stesso nome del file database (l'estensione resta ovviamente bmp). All'avvio apparirà l'immagine al posto del logo di Access.

Se salvi l'immagine con la dimensione di un solo pixel sembrerà che non esista nessuna schermata d'avvio.

Quando l'applicazone viene lanciato tramite un collegamento può succedere che appaia il logo di Access al posto del tuo. Le cause e circostanze che provocano ciò non sono chiaramente individuabili. Puoi provare ad indicare oltre al nome e percorso del database anche il percorso di msaccess.exe. Qualcosa tipo:
c:\...\Office\msaccess.exe "c:\...\MioDb.mdb"

Quanto sopra descritto, sostituisce, sì, il logo di Access con il tuo, ma i computer più recenti sono decisamente troppo veloci per poter rendere utilmente visibile un logo proprio. A tale scopo è sicuramente più appropriato usare una maschera con un controllo d'immagine che eventualmente si chiuda automaticamente tramite l'evento Timer (vedi <F1>). Un'altra possibilità è visualizzare nella finestra di Access un'immagine tramite API: http://www.mvps.org/access/api/api0035.htm

in alto

1.10 Apertura del DB ridotto o ingrandito
http://www.donkarl.com/it?FAQ1.10

Problema

Vuoi che il tuo DB (risp. Access) venga aperto sempre a finestra ingrandita.

Soluzione

Se lanci il DB da un collegamento puoi impostare le proprietà di questo a finestra ingrandita.

Altrimenti puoi inserire nella tua macro Autoexec o all'apertura della maschera d'avvio il seguente codice: RunCommand acCmdAppMaximize

Le stesse funzioni anche per ridurre ad icona e ripristinare. Le corrispondenti costanti RunCommand sono acCmdAppMinimize e acCmdAppRestore.

articolo KB tedesco con DB d'esempio

in alto

1.11 Nascondere la finestra principale di Access
http://www.donkarl.com/it?FAQ1.11 aggiornato 2013-10-14

Problema

Vuoi che all'avvio di Access non venga visualizzata la finestra di programma. L'utente deve vedere solo le maschere.

Soluzione

Nascondere completamente la finestra di Access è possibile solo tramite API.
Nella sezione dichiarazioni del modulo di classe della maschera principale inserisci:

Const SW_HIDE = 0
Const SW_NORMAL = 1

Private Declare Function ShowWindow Lib "user32" _
    (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long


Nella routine Su Apertura della maschera principale:

Dim hWindow As Long
Dim nResult As Long
Dim nCmdShow As Long
hWindow = Application.hWndAccessApp
nCmdShow = SW_HIDE
nResult = ShowWindow(ByVal hWindow, ByVal nCmdShow)
Call ShowWindow(Me.hWnd, SW_NORMAL)


Tramite la maschera principale devi anche controllare che Access venga chiuso regolarmente con il comando Quit. Tutte le maschere della tua applicazione devono essere impostate su Pop-Up, perché in caso contrario esse vengono "visualizzate" nella finestra di programma che hai nascosto e per questo non sono visibili. All'apertura di report in modalità Anteprima devi modificare la proprietà Visibile di tutte le maschere Pop-Up a Falso o chiuderle.

Indicazione:
Nelle giuste circostanze, con una o due maschere che comandino qualcosa, nascondere la finestra di Access tramite API può essere la giusta soluzione. Non lo userei però per un'applicazione completa e con molte funzioni. Soprattutto perchè nella barra delle applicazioni non si vedrebbe più nulla, e di regola l'utente dovrebbe avere la sensazione di lavorare in un normale ambiente a finestre multiple di Windows. A tale scopo uso piuttosto le normali possibilità: visualizzare proprie barre di menu, nascondere la finestra del database/riquadro di spostamento, eventuale uso di maschere senza bordi, ecc...

articolo KB tedesco con DB d'esempio

in alto

1.12 Impedire la chiusura del database
http://www.donkarl.com/it?FAQ1.12 aggiornato 2013-10-14

Problema

Vuoi impedire che l'utente chiuda il database di Access in modo non voluto, come ad esempio tramite il pulsante di chiusura della finestra di Access o premendo <ALT> + <F4>.

Soluzione

All'avvio del database (tramite una macro Autoexec o VBA) apri una maschera. Tramite macro in Modalità Finestra "Nascosta" o in VBA:

DoCmd.OpenForm "TuaMaschera", , , , , acHidden
Tale maschera rimarrà aperta tutto il tempo.

Nella maschera metterai una casella di controllo ad esempio "chkPermesso" con il valore predefinito a Falso. Sull'evento Su Scaricamento della maschera inserisci il codice:
If Me!chkPermesso= False Then Cancel = True
L'interruzione dello scaricamento impedisce la chiusura del database e di Access.

Quando vuoi permettere la chiusura del database, imposti a Vero la casella di controllo:
Forms!TuaMaschera!chkPermesso = True
Così può essere scaricata la tua maschera nascosta e chiuso il database ed Access.

articolo KB tedesco con DB d'esempio

in alto

1.13 Apertura di un altro DB
http://www.donkarl.com/it?FAQ1.13 aggiornato 2010-01-09

Problema

Vuoi tramite codice, e quindi non dalla barra del menu, aprire un altro database di Access chiudendo nel contempo il tuo.

Soluzione

La variante semplice è che una seconda istanza di Access non dà problemi. Il codice potrebbe essere:

Shell "C:\Foo\Office\MSAccess.exe C:\Foo\MioDb.mdb", vbNormalFocus 'apre un altro DB e la nuova finestra viene attivata
DoCmd.Quit  'chiude l'attuale istanza di Access


Più difficile risulta il cambio nella stessa istanza di Access come succede con l'apertura manuale tramite il Menu File/Apri. Esiste la possibilità di eseguire questo comando tramite la funzione Sendkeys. Ciò non è però consigliabile (vedi Blocco numeri (SendKeys)).
Migliore, anche se più impegnativo, è l'uso di Add-Ins come ad esempio TSI SOON su http://www.trigeminal.com/utility.asp

in alto

1.14 Usare oggetti da altri database
http://www.donkarl.com/it?FAQ1.14 aggiornato 2010-01-09

Problema

Vuoi aprire, cioè eseguire, nell'attuale DB oggetti di un altro mdb.

Soluzione

Per oggetti singoli da altri mdb (con alcune eccezioni):
Nell'altro database scrivi in un modulo standard (quelli visibili nella finestra del database) una funzione che apra, cioè esegua l'oggetto desiderato.

Nel database in cui vuoi aprire l'oggetto vai in un modulo al Menu Strumenti/Riferimenti. Qui, tramite il pulsante Sfoglia, selezioni l'mdb voluto.

Quando un mdb è stato aggiunto ai Riferimenti, puoi accedere e richiamare le sue funzioni come se fossero in quello attuale.

Per esempi vedi articolo KB tedesco

in alto

1.15 Importare barre e specifiche da un altro database
http://www.donkarl.com/it?FAQ1.15 aggiornato 2011-04-28

Problema

Vuoi importare in un mdb o accdb barre di menu o simboli o specifiche di importazione/esportazione e non trovi nessuna opzione nei menu o simili.

Soluzione

Funziona semplicemente tramite la finestra di dialogo Importazione, solo che la voce è piuttosto nascosta. Nell'mdb in cui vuoi importare le barre o specifiche, selezioni File/Carica dati esterni/Importa e qui selezioni il database di origine. Nella finestra di dialogo Importazione scegli il pulsante Opzioni>> che ingrandisce la finestra. Qui ora potrai selezionare questi ed altri oggetti da aggiungere all'importazione. Anche se non selezioni altri oggetti del database è sufficiente un click su OK per importarti tutte le barre e specifiche.

in alto

1.16 Recuperare oggetti cancellati
http://www.donkarl.com/it?FAQ1.16

Problema

Hai cancellato diverse tabelle (o record) o una maschera o altro e vuoi recuperarli.

Soluzione

Le possibilità sono limitate. Tanto suona banale, tanto è utile una copia di sicurezza (almeno per la prossima ;-). Soprattutto per i database si dovrebbe curare un buon sistema di back-up. Altrimenti molto dipende dal tempo e dalle circostanze:

Se ti accorgi immediatamente dopo la cancellazione dell'errore, puoi a ritroso dal Menu Modifica (anche il pulsante della barra del database o combinazione da tastiera <Ctrl> + <Z>) annullare l'ultima azione cancella. Cio è possibile, però, solo per tabelle, query, macro, non per gli altri oggetti.

Qualora si tratti di tabelle ed il database non sia ancora stato chiuso o compattato, c'è di regola la possibilità di ricostruire l'ultima tabella cancellata:
http://support.microsoft.com/?kbid=179161

Per altri oggetti, record cancellati o se il database è già stato chiuso le cose si mettono male. Finchè il database non è stato compattato gli oggetti si trovano ancora nel database stesso, seppur difficilmente accessibili:
http://support.microsoft.com/?kbid=90129

In alcuni casi è possibile ricostruire tali contenuti od oggetti, a condizione di aver conoscenze approfondite della struttura di Access. In caso di perdite di dati importanti puoi provare a rivolgerti ad aziende commerciali specializzate nel recupero dati (nell'ipotesi di Access). (vedi capitolo link)

Nel caso il database sia stato compattato non resta che la ricostruzione manuale degli oggetti od il reinserimento dei dati.

in alto

1.17 Quanto è sicuro Access?
http://www.donkarl.com/it?FAQ1.17 aggiornato 2010-01-09

Problema

Vuoi sapere quanto sono protetti il tuo codice, le tue maschere ed i tuoi dati quando li proteggi con le misure che offre Access.

Soluzione

In primo luogo voglio premettere che non rivelerò informazioni ulteriori oltre a quelle qui fornite, nè che ci si possa rivolgere a me per "craccare" (o cose del genere) alcun mdb di Access.
Sei se legalmente il proprietario dell'mdb (potendolo provare) e per qualche ragione non riesci più ad accedere al tuo DB puoi rivolgerti ad aziende specializzate nel recupero dati. (vedi capitolo link)

Dato il prezzo molto modesto di Access per cui non ci si dovrebbe aspettare molto, in linea generale vale, con le dovute eccezioni, che il grado di garanzie non è male. Se davvero hai dati molto sensibili, od altre esigenze di elevata sicurezza dovresti pensare di usare prodotti molto più cari che di conseguenza offrano garanzie più elevate di Access quali MS-SQL-Server, Oracle ecc...

Alcune strade per proteggere un DB di Access:

MDE
Dalla versione A97 esiste la possibilità di trasformare un MDB in un MDE (vedi l'help in linea alla voce "MDE"). L'intero codice e le strutture di maschere e report sono ben protette in un MDE. vedi anche http://support.microsoft.com/?kbid=187690
Un MDE non contiene più codice in formato testo, ma solo in formato compilato. L'impegno per la decompilazione è alto. vedi FAQ 1.26

Password del database
La password del database non vale molto, cioè è facilmente superabile. Se lo vuoi proteggere almeno decentemente dovresti essere consapevole che in questa direzione la protezione non è molto alta e che il codice (almeno per A97) è reperibile gratuitamente in Internet. La protezione tramite password serve quindi solo contro utenti inesperti e non certo contro attacchi seri.

Autorizzazioni di utenti e gruppi
Le corrette concessioni di autorizzazioni tramite password a utenti e gruppi, l'eliminazione dei diritti di Admins, l'impostazione di un proprietario, ecc. (vedi FAQ 1.18) è un pò più sicura. Esistono però per tutte le versioni di Access tools commerciali che superano tali autorizzazioni e diritti. La protezione è quindi leggermente più alta perchè almeno costa.

Codificazione
La codificazione dei dati ne impedisce la lettura tramite programmi diversi da Access stesso (ad esempio editor di testo). Il problema è che chiunque abbia Access e le rispondenti autorizzazioni può leggere senza problemi i dati ed anche decodificare nuovamente l'mdb. La codificazione aiuta quindi solo contro l'uso di altri editor.

in alto

1.18 Uso delle protezioni
http://www.donkarl.com/it?FAQ1.18 aggiornato 2012-08-01

Problema

Vuoi utilizzare le protezioni presenti in Access come autorizzazioni e password. Incontri delle difficoltà, ma nessun aiuto in linea sufficiente.

Soluzione

L'opera più estesa (sviluppata da autori indipendenti) sono le Microsoft Access Security FAQ (in inglese):
http://support.microsoft.com/kb/207793

Una breve raccolta degli aspetti più importanti si trova nell'articolo "Come utilizzare la sicurezza di Access?" di Cristiano De Pasquale nella sezione "General" sul sitocomune.

in alto

1.19 DB con sistema di lingua diversa
http://www.donkarl.com/it?FAQ1.19 aggiornato 2010-01-09

Problema

Vuoi sapere se puoi, senza problemi, costruire un database con la versione italiana di Access che poi deve girare su una versione di Access di lingua diversa, o hai già provato e ti sei accorto che in molti punti ti ritrovi con messaggi d'errore poco chiari.

Soluzione

Il metodo migliore è senza dubbio quello di realizzare, o per lo meno di testare approfonditamente, l'applicazione con Access e Windows della lingua in cui dovrà girare. Per la mia esperienza, ed almeno per le lingue europee, un'applicazione che gira in Access in versione inglese funzionerà anche nelle altre lingue.

Se la realizzazione è stata fatta in Access in italiano:
Un errore molto comune è la scritta [Routine evento] nelle proprietà di maschere e reports che non sempre viene tradotta. Ciò comporta l'errore nella versione inglese di Access "Can't find macro "[Routine evento]" ..." perché in teoria dovrebbe esserci scritto "Event Procedure". Ciò deve essere corretto manualmente o tramite del codice che apra gli oggetti in Visualizzazione Struttura e sostituisca il testo.

Altri problemi possono nascere dai simboli valuta, da formattazioni nazionali della data, ecc...

Da ciò ancora una volta il consiglio di sviluppare con la versione inglese di Access o almeno di fare dei test approfonditi prima della consegna.

in alto

1.20 Convertire MDB in VB
http://www.donkarl.com/it?FAQ1.20

Problema

Vuoi convertire un mdb in Visual Basic.

Soluzione

Esistono a tal fine diversi tool commerciali, p.e.
AccessToVB http://www.GFMinc.com
Access Converter http://www.diamondedge.com/products/Convert-Access-to-VB.html

Ci sono alcuni altri tool ed i link cambiano spesso. Allora cerca con un motore di ricerca web e parole come: "Converter Access VB"

Una conversione completa e diretta di tutte le funzionalità di Access verso VB non riesce nemmeno a questi tools.

in alto

1.21 Cancellare oggetti in un altro DB
http://www.donkarl.com/it?FAQ1.21

Problema

Vuoi cancellare degli oggetti che si trovano in un altro database.

Soluzione

Per tabelle e query l'accesso (per la cancellazione) è semplice sia per DAO che ADO, p.e.

Dim db As DAO.Database
Set db = DBEngine.Workspaces(0).OpenDatabase("c:\...\Altro.mdb")
db.Tabledefs.Delete "TuaTabella"
'oppure db.QueryDefs.Delete "TuaQuery"
db.Close
Set db = Nothing


Per altri oggetti è necessario un pò di codice di automazione p.e.

'aprire una nuova istanza di Access
Dim appAcc As Access.Application
Set appAcc = New Access.Application

'aprire l'altro DB e cancellare l'oggetto
appAcc.OpenCurrentDatabase "c:\...\Altro.mdb"
appAcc.DoCmd.DeleteObject acReport, "NomeReport"

'e chiudere
appAcc.Quit
Set appAcc = Nothing

in alto

1.22 La dimensione del database cresce molto
http://www.donkarl.com/it?FAQ1.22 aggiornato 2010-01-09

Problema

Le dimensioni del tuo mdb durante la costruzione e l'uso aumentano molto più del dovuto in relazione all'aumento dei dati.

Causa

Gli oggetti o dati cancellati non vengono più visualizzati, Access li segna solo come eliminati. Soltanto dopo la compattazione essi vengono effettivamente eliminati dal database. Ciò appesantisce molto soprattutto mentre si lavora sulla struttura degli oggetti o nell'uso di tabelle temporanee.

Forse stai anche memorizzando immagini nel tuo mdb.
Altra causa possono essere parti di codice non compilati o male compilati, che restano nel contenitore-database come codice compilato ma inutile.

Anche durante l'uso normale, cioè quando non vengono più apportate modifiche alla struttura (anche in un mde), può ancora crescere l'mdb ad esempio per l'esecuzione di stringe SQL (e la conseguente memorizzazione interna) che formano l'origine dati di maschere e report. Altre cause sono bug di Access che impediscono il rilascio dello spazio occupato da recordset (vedi anche Access non si chiude) e query salvate che vengono continuamente ricompilate.

Soluzione

Compatta il database.
Menu: Strumenti/Utilità database/Compatta e ripristina database.
Da A00 si può impostare che il database venga automaticamente compattato alla chiusura dello stesso (Menu: Strumenti/Opzioni/Generale).

Se tutto ciò non serve o aiuta poco, crea un nuovo database ed importa tutti gli oggetti del vecchio in quello nuovo.

Una possibilità ulteriore è l'opzione della riga di comando decompile.

in alto

1.23 Decompile
http://www.donkarl.com/it?FAQ1.23 aggiornato 2011-12-16

Problema

Questa opzione della riga di comando (da A97), di cui manca (quasi) ogni documentazione, può aiutare per diversi problemi legati a contenitori di codice corrotto.
Sintomi possono essere ad esempio una dimensione del database non correlata al contenuto, o molti messaggi d'errore inspiegabili oppure ancora il crash di Access.

Soluzione

Crea un collegamento al tuo mdb e nelle proprietà inserisci il percorso di Access, l'opzione e poi il percorso e nome del tuo mdb, tipo:

c:\percorso\msaccess.exe" /decompile "c:\percorso\TuoMdb.mdb

Poi avvia il database tramite il collegamento creato. Dopo compatta il db.

Attenzione!
Decompile è senza documentazione e quindi da utilizzare con cautela. Sono stati segnalati diversi problemi, ad esempio è già successo che dopo l'utilizzo di decompile alcuni moduli di classe definiti dall'utente fossero trattati solo come moduli standard.

È quindi più sicuro utilizzare decompile solo su una copia del database e successivamente testarla.

Una descrizione più precisa la trovate di Michael Kaplan su:
http://www.trigeminal.com/usenet/usenet004.asp

in alto

1.24 Tool per trova e analisi
http://www.donkarl.com/it?FAQ1.24 aggiornato 2012-09-14

Problema

Cerchi tool per trova o analisi per Access.

Soluzione

Tools per trovare e sostituire nel database:

Find&Replace di Rick Fisher, Shareware
http://www.rickworld.com

Speed Ferret di Black Moshannon Software, per A2-A03, piuttosto caro
http://www.moshannon.com

Replace Wiz di Software Add-Ins, per A97-AX
http://www.softwareaddins.com/ReplaceWiz.htm


Tools per analizzare database:

Generalmente consigliate sono le Developer o Enterprise Suite di FMS, per l'analisi specialmente il
Total Access Analyzer http://www.fmsinc.com

Comparazioni tra database:

Total Access Detective (per oggetti, codice e dati)
http://fmsinc.com/products/detective/

CompareWiz
http://www.softwareaddins.com/CompareWiz.htm
o per paragonare dati
http://www.softwareaddins.com/CompareDataWiz.htm

in alto

1.25 Libri
http://www.donkarl.com/it?FAQ1.25 aggiornato 2011-09-09

Problema

Cerchi libri "di qualità" per Access, VBA, Database, SQL, API o altri temi correlati ad Access e ti meravigli che in queste FAQ non c'è un capitolo sui libri.

Soluzione

Esistono centinaia di libri su questi argomenti ed ho opinioni specifiche su molti di questi. Sono però della convinzione che il consigliare libri abbia senso solo per opere uniche nel loro livello.

Altrimenti la cosa diventa estremamente soggettiva. L'utilità di un libro dipende principalmente dalle tue conoscenze pre-acquisite, dal tuo modo di imparare e di leggere, dai tuoi modi di articolazione/catalogazione, dalle tue conoscenze linguistiche e naturalmente dalle tue intenzioni.

Io per questi motivi consiglio:
Per l'orientamento nella scelta su i temi che di preciso ti interessano, puoi prima di tutto cercare nelle librerie on-line (tipo Amazon). Sii scettico sui consigli on-line (ok, un pò di paradox;-) sulla pubblicità e su quanto appare in copertina. Trova il tempo di frequentare alcune librerie fornite della tua città. Possibilmente sfoglia tutti i libri che sul tema ti capitano in mano e decidi tu stesso ciò che fa per te.

Io voglio consigliarvi solo 3 libri che io e altri riteniamo unici nel loro genere. Tutti e 3 sono reperibili solo in inglese ed orientati piuttosto a programmatori esperti. Sono quasi solo reperibili in librerie specializzate che trattino testi in lingua originale.

Access 2002 Developer's Handbook Set
Ken Getz, Paul Litwin, Mike Gunderloy
2480 pagine, 2002, Sybex, ISBN 978-0782140118

L'ADH è generalmente riconosciuta come la bibbia dei programmatori di Access, grande dizionario di consultazione, molte soluzioni su CD; chi programma professionalmente con Access dovrebbe possederlo; vedi anche l'info dagli autori, Esiste un ADH (risp. un set di 2 libri) per ogni versione di Access iniziando con Access 2.0 fino a 2003.


Microsoft Access Developer's Guide to SQL Server
Mary Chipman, Andy Baron
840 pagine, 2000, Sams, ISBN 978-0672319440

Chi ha buona esperienza in Access e si interessa al MS SQL Server, trova in questo testo una introduzione esauriente e perfettamente orientata al server e ai collegamenti con Access (ADPs, ODBC). Inoltre molto su T-SQL, views, stored procedures, deployment, sicurezza, tools ecc..


Designing Relational Database Systems
Rebecca M. Riordan
320 pagine, 1999, Microsoft Press, ISBN: 978-0735606340

Introduzione alla teoria sui database relazionali, strutturazione dei database e della interfaccia utente. Tutto sviluppato nell'ottica di Access e MS-SQL-Server. Si nota la grande esperienza pratica. Il testo ha alcuni punti deboli, ma non conosco nulla nemmeno di paragonabile sui temi trattati. Livello linguistico inglese piuttosto elevato, ma generalmente formulato con molta chiarezza.

in alto

1.26 Ripristinare l’MDB da un MDE
http://www.donkarl.com/it?FAQ1.26 aggiornato 2007-01-03

Problema

Hai creato un MDE (vedi anche Quant'è sicuro Access?) e perso l’MDB originale. Ora vuoi ripristinare il tuo MDB.

Soluzione

Fino a 2005 non c'era alcuna possibilità che da un MDE si potesse ritornare all’MDB originale, assieme al suo codice VBA.
Da allora, l’azienda www.everythingaccess.com offre tale servizio commerciale. In un test effettuato su un mio MDE, l'azienda ha dimostrato che è in grado di realizzarla. Il presupposto indispensabile è che tu sia in grado di dimostrare i tuoi diritti sul database in conformità.

Per i tentativi personali o tool gratis, rimane sempre valido quanto segue:

Le tabelle, le query, e i dati contenuti nelle tabelle di sistema (relazioni, specifiche d’importazione/esportazione, ecc.) sono raggiungibili in un MDE, come in un MDB. Tutti gli oggetti, però, che possono contenere codice non sono più accessibili in modo diretto. Con del codice o con un tool adeguato è possibile estrarre parti d’informazioni dall'MDE, sopratutto il design esterno, e riusarle in un nuovo MDB. Il codice VBA invece è completamente perso.

Quindi, la variante più semplice ed efficace è una serie di copie di sicurezza del relativo MDB prima di creare un MDE.

in alto

1.27 Come procedere con database danneggiati
http://www.donkarl.com/it?FAQ1.27 aggiornato 2010-01-09

Problema

Un database non si apre più, o Access si chiude con un certo database.
Oppure ancora, un DB si comporta d'improvviso in modo diverso, cioè funzioni che svolgeva fino a prima ora danno errore.

Causa

Access (precisamente un MDB) non è più vulnerabile o instabile di altri prodotti di questo livello. Spesso gli errori dipendono da chiusure errate, problemi di hardware o di rete ed ovviamente da diversi bug di Access o di Windows.

Esistono solo pochi casi in cui un MDB corrotto non sia recuperabile. Per lo più succede quando un MDB viene aperto con un programma diverso da Access (usatissimo è Word) e poi inserito qualcosa o anche solo salvato.

Soluzione

Ci sono molte possibilità, da difetti lievi a danneggiamenti pesanti. Quindi esistono anche molte soluzioni.

Importante: Per tutte le misure e tentativi di riparazione dovresti usare solo una copia del tuo MDB. Perchè ci sono anche tentativi che possono peggiorare la situazione.

Alcuni consigli su come procedere (non per forza nell'ordine, dipende dal tipo di errori):

Informazioni

Procedure
Ulteriori informazioni le trovate nel MS-Knowledgebase:

A97: http://support.microsoft.com/?kbid=306829
A00: http://support.microsoft.com/?kbid=306204
AX: http://support.microsoft.com/?kbid=304701

La cosa migliore - come sempre in questi casi - sarebbe avere copie di Backup dei diversi database interessati. Ma non le fa quasi mai nessuno. Se stai leggendo questo articolo prima dell'insorgere del problema, allora voglio ancora ripeterti il consiglio di fare copie di sicurezza soprattutto di file di database. Se il problema ce l'hai già allora non resta che: Buona Fortuna!

in alto

1.28 Virgola o punto e virgola
http://www.donkarl.com/it?FAQ1.28 aggiornato 2005-05-23

Problema

Non sei sicuro, quando usare la virgola (,) o il punto e virgola (;) come separatore per gli argomenti delle funzioni. Pertanto sei rincorso da messaggi d'errore di sintassi.

Causa

Fondamentalmente il Separatore di elenco nelle Opzioni Internazionali e della Lingua di Windows determina il separatore per gli argomenti. Nella maggior parte delle impostazioni europee (p. e., in quella Italiana, Tedesca, Francese e Spagnola) il predefinito è il punto e virgola. Comunque questo si applica soltanto alla "parte superficiale" dell'interfaccia utente di Access, mentre per le fondamentali parti inglesi dell'applicazione, come il VBA e SQL, si applicano le impostazioni USA, cioè la virgola.

Soluzione

L'uso della virgola o del punto e virgola dipende dove la funzione è utilizzata.
Per espressioni nell'interfaccia utente di Access, p. e., in modalità struttura di maschere e report o nella struttura della query, devi utilizzare il punto e virgola. In VBA e nella vista SQL delle query è la virgola. Esempi:

come origine controllo in una maschera o report:
=DLookUp("Campo";"Tabella";"Condizione")

come parte di una procedura nel codice VBA:
... = DLookUp("Campo","Tabella","Condizione")

espressione in struttura di una query:
Left([Campo];3)

Tuttavia quando cambi la visualizzazione della query in SQL, vedi:
Left([Campo],3)

Questa differenza dell'uso della , e del ; non solo si applica a tutte le funzioni native di Access e di VBA, ma anche a tutte le funzioni definite dall'utente.
v.a. http://support.microsoft.com/?kbid=94825

in alto

1.29 Stampare le relazioni
http://www.donkarl.com/it?FAQ1.29 aggiornato 2010-03-30

Problema

Vuoi stampare il contenuto della finestra delle relazioni, ma non trovi nessuna possibilità o aiuto.

Soluzione

Da A00 esiste una specifica voce di menu: dalla finestra relazioni scegli File/Stampa relazioni. Nelle versioni precedenti la soluzione più semplice è copiare negli appunti la schermata delle relazioni con un printscreen, cioè tasto <Stamp> (oppure <Alt>+<Stamp> per la finestra attiva) e poi incollarla in un programma di grafica, rielaborare e stampare.

Per A97 però MS mette a disposizione anche un add-in per stampare più facilmente le relazioni.
il "Relationship Print Wizard": http://office.microsoft.com/downloads/9798/prels80.aspx

Per stampe di dimensioni maggiori con A97 e A00 esiste un tool di Stephen Lebans:
http://www.lebans.com/windowtobitmap.htm

Stephen Lebans è anche l'autore di una funzione che stampa la finestra delle relazioni come PDF. Si trova nell'ultima versione del suo tool per la creazione di PDF http://www.lebans.com/reporttopdf.htm.
Indicazioni per l'uso (di Sascha Trowitzsch):
Nel modulo modReportToPDF si trova la procedura RelationsToPDF, che emmette il layout delle relazioni in un PDF. Funziona anche con A07. Dato che nella procedura il percorso dell'emissione è programmato in modo fisso, si deve cambiarlo o meglio passarlo come parametro. (Cercare "C:\sourcecode\ReportToPDF\Relations.pdf" nel codice lunghissimo). La dimensione del documento viene adattato al layout e contiene informazioni addizionali come il numero dei record di ogni tabella.

in alto

1.30 Repliche
http://www.donkarl.com/it?FAQ1.30 aggiornato 2007-01-03

Problema

Cerchi informazioni sull'argomento ma la guida online non è esauriente.

Soluzione

FAQ-repliche eccellente (ingl.)
Su questo sito ci sono anche link ad altre risorse di MS sulle repliche, sopprattutto per A97 (ingl.).

Una ricapitolazione offre l'articolo nel MSDN:
Database Replication in Microsoft Jet 4.0 (ingl.)

http://www.trigeminal.com il sito di Michael Kaplan (multilingue) con molte utility, consigli, link, elenco di tutti gli articoli della KB sulle repliche ed altro ancora.

news:microsoft.public.access.replication newsgroup (ingl.)

Esiste purtroppo poca letteratura sull'argomento. Raccomandabile è il dettagliato capitolo sulle repliche nelle differenti versioni dell'Access Developer's Handbook (ADH).

in alto

1.31 Normalizzazione e teoria sui database
http://www.donkarl.com/it?FAQ1.31 aggiornato 2014-02-18

Problema

Cerchi informazioni su criteri di normalizzazione, relazioni o ulteriore teoria sui database (relazionali).

Soluzione

Una buona introduzione alla teoria (criteri di normalizzazione, relazioni, chiavi, SQL, ecc.) di Andreas Kelz: Relationale Datenbanken (tedesco)

Lo scritto della presentazione sulla normalizzazione di Michael Zimmermann si trova sul sito download della AEK7 (tedesco).

Una breve panoramica sui criteri di normalizzazione con riferimento ad Access è disponibile presso MS:
ACCESS 2000: Concetti di base sulla normalizzazione dei database
(del resto contiene un errore: "...una quarta forma normale, denominata Boyce Codd Normal Form (BCNF) ..." - la quarta forma normale non è la BCNF)

Una guida "passo-dopo-passo" per la realizzazione di un database relazionale che prende come riferimento il DB di esempio "Northwind", distribuito con Access è scaricabile da MS in formato Word (inglese): http://support.microsoft.com/?kbid=164172

Ci sono molti altri siti dedicati alla teoria dei database che tuttavia, a mio avviso, sono per lo più insoddisfacenti oppure piuttosto accademici/poco pratici. Quindi si può semplicemente cercare con l'aiuto di un motore di ricerca.

Sull'argomento il libro consigliato è ugualmente in inglese: Designing Relational Database Systems di Rebecca Riordan

in alto

1.32 Nascondere oggetti del database
http://www.donkarl.com/it?FAQ1.32

Problema

Vorresti che determinati oggetti (di solito tabelle) non fossero visibili nella finestra del database.

Soluzione

Una soluzione semplice è nascondere gli oggetti manualmente:
Nella finestra del database clicca col pulsante destro del mouse sull'oggetto che vuoi nascondere, nel menu contestuale scegli proprietà e poi seleziona la casella nascosto. Per rendere visibili questi oggetti bisognerà scegliere da menu: Strumenti/Opzioni/Visualizzazione e poi selezionare la casella di controllo Oggetti nascosti.

A partire da A00 si può fare anche da codice in un modo "pulito" (quindi senza usare Sendkeys), tramite il metodo SetHiddenAttribute, es.
Application.SetHiddenAttribute acTable, "FooBar", True
consulta a questo proposito la guida in linea: <F1> dall'editor di VBA

Un'altra possibilità per nascondere gli oggetto, che funziona anche con le precedenti versioni, consiste nel far iniziare i nomi degli oggetti con "usys". Usys è un prefisso per identificare gli oggetti di sistema che, a livello di visualizzazione standard, non vengono mostrati (opzione comunque modificabile dal menu Strumenti/Opzioni/Visualizzazione).

Un'altra modalità che spesso viene suggerita è l'utilizzo dell'attributo (non documentato) dbHiddenObject. Questo metodo può essere annullato solo tramite codice. Il problema è però che le tabelle che sono state nascoste con questo metodo verranno, alla prossima compattazione, cancellate senza alcun messaggio di avviso. Per questo mi limito ad un breve accenno sul metodo.

in alto

1.33 Barre dei menu e delle icone
http://www.donkarl.com/it?FAQ1.33

Problema

Vuoi creare una barra dei menu o di icone o modificare nel tempo quelle esistenti e non sai come o sorgono dei problemi.

Soluzione

La costruzione o modifica manuale di barre delle icone è relativamente semplice:
tasto destro del mouse su una barra dei menu o icone e dal menu contestuale scegliere Personalizza, poi cerca nella scheda quanto ti serve. Trovi istruzioni esaurienti nel help in linea.

La programmazione funziona invece da A97 tramite l'elenco dei Commandbars e loro oggetti e proprietà. L'help in linea porta moltissime pagine d'esempio poco chiare. Perciò esiste un whitepaper (in tedesco) di Annette Ratjen per una visione d'insieme razionale e con molti esempi pratici "CreativeBars" per la maggior parte dei casi, su http://www.dbdev.org e http://www.pc-creativ.de.

in alto

1.34 Programmi di setup alternativi
http://www.donkarl.com/it?FAQ1.34

Problema

Hai problemi con il setup di Office Developer Edition. O con la costruzione del setup oppure durante l'installazione del pacchetto runtime costruito.

Soluzione

La costruzione del runtime e l'installazione con il setup assistito di A97 e del pacchetto per la distribuzione da A00 in poi è purtroppo notoriamente inaffidabile e pieno di errori. Per distribuire una versione Runtime è obbligatoria una licenza della relativa versione di Office Developer. Ma non è altrettanto obbligatorio utilizzare l'allegato pacchetto di installazione guidata per la costruzione del setup. Ci sono alcune alternative:

Uno dei più popolari programmi freeware si chiama Inno Setup, per il quale si trovano inoltre istruzioni, script (per A97) e newsgroups. Tramite questi script si evitano i problemi. Oltre a Inno Setup esistono molti altri installer sia freeware che shareware. Quindi secondo necessità cercate in internet.

Soluzioni commerciali esistono ad esempio di Installshield e Wise. Per entrambi gli Installer l'azienda Sagekey offre script relativamente cari ma professionali ed affidabili per tutte le versioni correnti di Access, che servono ad evitare gli errori e problemi del pacchetto di installazione guidata di Office.

in alto

1.35 Divisione in Frontend e Backend
http://www.donkarl.com/it?FAQ1.35 aggiornato 2012-08-01

Problema

Hai un'applicazione in Access composta solamente da un singolo file, cioè 1 MDB o MDE. Ciò causa vari problemi, ad esempio il file si corrompe ripetutamente o la sua dimensione aumenta oltremodo, oppure devi bloccare l'applicazione per ogni piccolo cambiamento nella struttura.

Soluzione

In linea di principio le applicazioni in Access dovrebbero essere composte da due (o più) file. Specialmente in ambiente multi-utente la suddivisione in frontend (FE) e backend (BE) è un'urgente raccomandazione.
Per backend con Access si intende un file MDB che contenga solo le tabelle. Il frontend contiene tutti gli altri oggetti del database (Maschere, Report, Query, Macro e Moduli) e i collegamenti delle tabelle al backend. Se un'applicazione gira in un ambiente di rete ogni postazione dovrebbe avere (possibilmente) in locale il suo FE, mentre il BE condiviso starebbe sul server.

I motivi di queste procedure:
- Senza dividere in FE e BE il file si potrebbe corrompere frequentemente. Con la divisione in FE-BE queste corruzioni accadono molto meno di frequente. Se tuttavia un FE si corrompe puoi sostituirlo facilmente senza perdita di dati.
- Un FE locale provoca meno traffico di rete poiché solamente i dati viaggiano sulla rete.
- I cambiamenti alla struttura possono essere eseguiti in qualunque momento su una copia del frontend.

Access possiede un'autocomposizione che ti aiuta nella divisione (Strumenti/Utilità database/Divisione guidata database). Comunque è semplice fare la divisione senza l'autocomposizione. Ti basta importare le tabelle (spuntando la voce Relazioni) in un nuovo MDB, cancellare e poi riconnetterle all'FE.

Una delle conseguenze della divisione è la necessità di riconnettere le tabelle collegate quando viene cambiato il percorso. In Access nuovamente trovi un' autocomposizione (Strumenti/Utilità database/Gestione tabelle collegate), in alternativa vedi Riallegare tabelle.

Per la distribuzione automatica degli FE in una rete esistono dei tool gratuiti come ad esempio:

- "MDB Loader and Updater", basato su Access, di Henry Habermacher nella sezione download di www.dbdev.org
- "DBUpdate - Frontend Updater" con tanta funzionalità in più, di Gunter Avenius su www.avenius.com

Un tool a pagamento di Tony Toews: http://autofeupdater.com/

Ulteriori informazioni si trovano nelle diapositive della mia presentazione "Frontend-Updater" su AEK8: AEK-Downloads (in Tedesco)

in alto

1.36 Personalizzare i Ribbon
http://www.donkarl.com/it?FAQ1.36 aggiornato 2010-09-08

Problema

Vuoi personalizzare i Ribbon, comparsi con la versione Access 2007 (nome ufficiale italiano barra multifunzione) e trovi poche possibilità ed informazioni.

Soluzione

In A07 come semplice possibilità dell'adattamento si può solo assegnare determinati ribbon a maschere e report. Questo funziona nell'ambito della sua proprietà Nome barra multifunzione. Altrimenti resta solo la programmazione abbastanza faticosa con XML ecc.

In A10 invece la MS ha integrato una semplice possibilità che si trova in File/Opzioni/Personalizzazione barra multifunzione. Però è limitata a riordinare, rendere invisibile ecc. le schede, i gruppi e comandi integrati: http://office.microsoft.com/it-it/access-help/personalizzazione-della-barra-multifunzione-HA010355697.aspx

Chi vuole di più deve occuparsi della programmazioni di ribbon con XML, Callbacks ecc.
Informazioni elementari si trovano su http://office.microsoft.com/it-it/access-help/personalizzare-la-barra-multifunzione-HA010211415.aspx

Molte informazioni ed esempi sull'intero argomento ribbon si trovano sul sito di Gunter Avenius (inglese):
www.accessribbon.com
Dallo stesso autore c'è il tool Ribbon Creator che consente la semplice e veloce creazione dei ribbon personalizzati:
http://www.ribboncreator.de/en

in alto