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’ACCDB da un ACCDE
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
https://www.donkarl.com/it?FAQ1.1 aggiornato 2022-06-21

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)
2.0 versione stabile

Versioni a 32 bit
Access 95 (7.0), poco usata, ha molti bug
Access 97 (8.0), versione stabile
Access 2000 (9.0), molte novità
Access 2002 (10.0), versione corretta di Access 2000
Access 2003 (11.0), poche novità, versione stabile
Access 2007 (12.0), molte novità: nuovo formato di file accdb, ribbon, riquadro di spostamento ecc.

Versioni a 32+64 bit
Access 2010 (14.0), alcuni cambiamenti: articolo supporto
Access 2013 (15.0), poche novità in parte molto dure: articolo supporto articolo Technet
Access 2016 (16.0), quasi niente cambiamenti
Access 2019 (16.0 non cambiato), alcune novità: nuovi grafici, supporto di BigInt ecc., Novità di Access 2019
Access 2021 (16.0 weiterhin), ein paar Neuerungen: Suchen/Ersetzen im SQL-Editor etc., Novità di Access 2021

Da quando Microsoft preferisce la versione d'affito Microsoft 365 (ex Office 365) soprattutto viene aggiornata correntemente Access 365. Le versioni da comprare (da 2016) contengono la maggior parte dei cambiamenti effetuati in Access 365 fino alla data di pubblicazione.

Il miglior sommario per tutte le versione di Access si trova nella tabella di FMS.

Quale sia la versione installata di Access sul vostro computer potete trovare (abbastanza chiaro) nel menu ?/Info o nel punto di ribbon File - Aiuto o Account.

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

in alto

1.2 Conversione in una versione diversa di Access
https://www.donkarl.com/it?FAQ1.2 aggiornato 2020-09-10

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.
C'è una particolarità per le versioni dal 2007 all'A2019. MS stabilisce di usare lo stesso formato di file per tutte le versioni. Questo è vero solo in parte. Anche qui si applica: se il database è utilizzato con differenti versioni di Access, devi prender cura di evitare caratteristiche che non sono ancora disponibili nella vecchia versione.

in alto

1.3 Creare un exe
https://www.donkarl.com/it?FAQ1.3 aggiornato 2020-09-10

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. https://support.office.com/it-it/article/7bb4f2ba-30ee-458c-a673-102dc34bf14f). 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 e Runtime 2007 (gratuito)

A partire da Access 2010 non ci sono più edizioni developer di Access. Ma le versioni Runtime sono tutte gratuite. Indirizzi per il download v. Link

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

in alto

1.4 Specifiche
https://www.donkarl.com/it?FAQ1.4 aggiornato 2023-01-31

Problema

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

Soluzione

Sul sito web delle specifiche della Microsoft si possono trovare elenchi di specifiche di dimensioni per DB, tabelle, moduli ecc. Qui ci sono i più importanti con i commenti, come di solito vengono richiesti e la pagina web non li offre in alcuni casi:

Dimensioni massime di un database
A00 - A21 = 2 GB
Tramite l'esportazione delle tabelle ed il loro successivo riallegamento si possono superare questo limite.

Dimensione massima delle tabelle
A00 - A21 = 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 - A21= 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 diverse versioni 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 - A21 = 65536

Massimo numero di utenti contemporanei in rete:
A2 - A21 = 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
https://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
https://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
https://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
https://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
https://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
https://www.donkarl.com/it?FAQ1.10 aggiornato 2021-10-25

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.

il mio articolo KB tedesco su questo nell'archivio web

in alto

1.11 Nascondere la finestra principale di Access
https://www.donkarl.com/it?FAQ1.11 aggiornato 2021-10-25

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...

il mio articolo KB tedesco su questo nell'archivio web

in alto

1.12 Impedire la chiusura del database
https://www.donkarl.com/it?FAQ1.12 aggiornato 2021-10-25

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.

il mio articolo KB tedesco su questo nell'archivio web

in alto

1.13 Apertura di un altro DB
https://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
https://www.donkarl.com/it?FAQ1.14 aggiornato 2021-10-25

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 il mio articolo KB tedesco su questo nell'archivio web

in alto

1.15 Importare barre e specifiche da un altro database
https://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
https://www.donkarl.com/it?FAQ1.16 aggiornato 2019-11-11

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:
https://web.archive.org/web/20150219184324/http://support.microsoft.com/kb/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:
https://web.archive.org/web/20140922043705/http://support.microsoft.com/kb/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?
https://www.donkarl.com/it?FAQ1.17 aggiornato 2019-11-11

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...

Due metodi ragionevoli per proteggere un DB di Access:

ACCDE
Esiste la possibilità di trasformare un ACCDB in un ACCDE (nel formato vecchio MDB --> MDE). L'intero codice e le strutture di maschere e report sono ben protette in un ACCDE. vedi anche https://support.office.com/article/CE6AB610-AF07-4008-91E0-1EF1B796FF18
Un ACCDE 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 (https://support.office.com/article/12aa0e5c-34c6-4957-af3b-b5f5cfa9a766) nelle versioni da Access 2007 per i soliti programmi di crack è solo decrittabile con metodi brute force (nelle versioni prima di 2007 è insicura). Vuol dire che password di una lunghezza bastante con delle segni misti sono una protezione appropriata per un file di Access. È importante che sia il backend sia il frontend sono protetto con un password, cioè la catena di file è chiusa, perché i collegamenti delle tabelle da altri db contengono la password di quelli db come testo in chiaro.

in alto

1.18 Uso delle protezioni
https://www.donkarl.com/it?FAQ1.18 aggiornato 2019-11-11

Problema

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

Soluzione

Versioni di Access fino a 2003 danno la possibilità di assegnare diritti per utenti. Con Access 2007 la Microsoft ha abolita questa tecnica perché era troppo semplice da craccare.

Per questo la descrizione in questo articolo è stata cancellata e tra poco l'articolo andrà in pensione.

in alto

1.19 DB con sistema di lingua diversa
https://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
https://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
https://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
https://www.donkarl.com/it?FAQ1.22 aggiornato 2019-11-11

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 ACCDE), 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.
Ribbon: Strumenti di database/Compatta e ripristina database
(L'opzione "Compatta alla chiusura" è un po' ambigua perché in alcune situazioni puo causare corruzione o perdita di dati.)

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
https://www.donkarl.com/it?FAQ1.23 aggiornato 2019-11-11

Problema

Questa opzione della riga di comando, 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 ACCDB e nelle proprietà inserisci il percorso di Access, l'opzione e poi il percorso e nome del tuo ACCDB, tipo:

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

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
https://www.donkarl.com/it?FAQ1.24 aggiornato 2022-06-21

Problema

Cerchi tool per trova o analisi per Access.

Soluzione

Tools per trovare e sostituire nel database:

Find And Replace for Microsoft Access AccessDevTools, add-in commerciale, con versione di prova di 30 giorni
https://accessdevtools.com/product/find-and-replace/

V-Tools tool gratuito con funzione di ricerca e altri strumenti
https://www.skrol29.com/us/vtools.php


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/

in alto

1.25 Libri
https://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’ACCDB da un ACCDE
https://www.donkarl.com/it?FAQ1.26 aggiornato 2019-11-11

Problema

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

Soluzione

Solo l’azienda www.everythingaccess.com offre tale servizio commerciale. In un test effettuato su un mio file, 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 ACCDE (nelle versioni vecchie MDE), come in un ACCDB. 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'ACCDE, sopratutto il design esterno, e riusarle in un nuovo ACCDB. Il codice VBA invece è completamente perso.

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

in alto

1.27 Come procedere con database danneggiati
https://www.donkarl.com/it?FAQ1.27 aggiornato 2023-03-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

Spesso gli errori dipendono da chiusure errate, problemi di hardware o di rete ed ovviamente da diversi bug di Access o attraverso gli aggiornamenti di Microsoft.

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 ACCDB/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
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
https://www.donkarl.com/it?FAQ1.28 aggiornato 2019-11-11

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.

in alto

1.29 Stampare le relazioni
https://www.donkarl.com/it?FAQ1.29 aggiornato 2015-04-03

Problema

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

Soluzione

Da A07 esiste il commando nel ribbon: Progettazione/Strumenti/Report relazioni.
In A00-A03 dalla finestra relazioni scegli la voce di menu File/Stampa relazioni.

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
https://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
https://www.donkarl.com/it?FAQ1.31 aggiornato 2019-11-11

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): https://web.archive.org/web/20150530212148/https://support.microsoft.com/en-us/kb/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
https://www.donkarl.com/it?FAQ1.32 aggiornato 2020-10-06

Problema

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

Soluzione

Una soluzione semplice è nascondere gli oggetti manualmente:
Nel riquadro di spostamento 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à aprire le opzioni per il riquadro di spostamento e selezionare la casella di controllo Mostra oggetti nascosti.

Programmaticamente questo può essere fatto con il metodo SetHiddenAttribute ad es.

Application.SetHiddenAttribute acTable, "MiaTabella", 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 nelle opzioni di spostamento).

Un'altra modalità è l'utilizzo dell'attributo dbHiddenObject. Questo può essere fatto e disfatto solo tramite codice, ad es.

Currentdb.TableDefs("MiaTabella").Attributes = Currentdb.TableDefs("MiaTabella").Attibutes + dbHiddenObject

Nelle versioni Access molto vecchie (fino a Access 97) tali tabelle nascoste sono andate perse durante la compressione. Dopo di che alcune versioni più lunghe (almeno fino ad Access 2010) quando si crea un MDE o ACCDE. Ma con Access 365, non ho potuto più riprodurre neanche quello.

in alto

1.33 Barre dei menu e delle icone
https://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
https://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
https://www.donkarl.com/it?FAQ1.35 aggiornato 2015-04-10

Problema

Hai un'applicazione in Access composta solamente da un singolo file, cioè 1 MDB/ACCDB o MDE/ACCDE. 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/ACCDB 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 (menu: Strumenti/Utilità database/Divisione guidata database o ribbon Datenbanktools/Daten verschieben/Access-Datenbank). Comunque è semplice fare la divisione senza l'autocomposizione. Ti basta importare le tabelle (spuntando la voce Relazioni) in un nuovo MDB/ACCDB, 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:
- Application Starter di Peter De Baets http://www.peterssoftware.com/aps.htm
- 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/

in alto

1.36 Personalizzare i Ribbon
https://www.donkarl.com/it?FAQ1.36 aggiornato 2018-08-03

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:
https://www.ribboncreator2016.de/it/

in alto