Quali sono le implicazioni dell'esecuzione di un database Microsoft Access sia nel 2003 che nel 2007?

StackOverflow https://stackoverflow.com/questions/75246

  •  09-06-2019
  •  | 
  •  

Domanda

Quali sono le implicazioni dell'esecuzione di un database Microsoft Access sia nel 2003 che nel 2007?

C'è qualche lezione che ho dimenticato di seguire?

Il programma è stato originariamente creato nel 2003 e poi eseguito nel 2007.Sembra che i problemi si verifichino quando sulla macchina su cui viene eseguito sono presenti sia la versione 2003 che quella 2007.Il problema sembrerebbe derivare anche dal riferimento alla "Libreria oggetti di Microsoft Access 12.0" (o alla "Libreria oggetti di Microsoft Access 11.0" nel 2003).Per vederlo, basta guardare gli Strumenti:Menu Riferimenti nella schermata VBA.

Il sintomo dell'errore è fondamentalmente che il codice non viene riconosciuto (quasi come se non riconoscesse il linguaggio di programmazione che sto utilizzando).Di solito è seguito da una casella che dice "L'espressione On Load immessa come impostazione delle proprietà dell'evento ha prodotto il seguente errore:L'oggetto o la classe non supporta l'insieme di eventi".Puoi anche sostituire "Al caricamento" con "Al clic" per i pulsanti o "Al cambiamento" per le caselle di testo.

Personalmente sospetto che il computer stia prendendo parti della libreria di oggetti di Microsoft Access 11.0/12.0 e quindi mescoli i due in un inutile riferimento VBA.Ciò che conferma ulteriormente il mio sospetto è la finestra che appare quando si passa tra i due che dice "Configurazione di Microsoft Access". Un altro problema che conferma ulteriormente il mio sospetto è che verrà eseguito su qualunque sia aperto per primo (2007, ad esempio) e poi non correre dall'altro (2003 continuando l'esempio)

L'unico altro problema che ho dovuto risolvere è stato cambiare l'ultima parte di DoCmd.OpenForm ,,,,, acFormReadOnly (o acReadOnly, a seconda di come sembra sentirsi la macchina in quel particolare giorno - sì, funzionerebbe con uno, un giorno e poi vuoi che lo cambi con un altro) semplicemente bloccando le singole caselle di testo

Forse non è del tutto codificato, ma penso che potrebbe essere possibile risolverlo codificando.

Speriamo che sia sufficiente perché qualcuno inventi qualcosa.

È stato utile?

Soluzione

La posizione ufficiale di Microsoft è che l'installazione di più versioni di Office sullo stesso PC non è supportata e sconsigliata, e Access 2007 sembra essere progettato per dimostrarcelo!

Detto questo, puoi evitare la maggior parte dei problemi procedendo come segue:

1 - Dividere il db in back-end e front-end.Posiziona il back-end (tabelle e relazioni) in una cartella di rete e posiziona una copia del front-end (tutti gli altri oggetti) sul desktop di ciascun utente.

2 - È meglio creare un front-end per evitare che i riferimenti si mescolino ogni volta che si apre il db nell'altra versione di Access.

3 - Crea un collegamento per aprire il front-end con la versione desiderata di Access, quindi è così Sempre aperto con quella versione.(E ricorda di usare la scorciatoia!) Nella destinazione della scorciatoia:

"percorso di Access 12 msaccess.exe" "percorso di db.mdb"

Altri suggerimenti

Abbiamo un'applicazione MS-Acces, sviluppata con Access 2003 e utilizzata sulla versione completa o runtime di Access 2003 e Access 2007 (Access 2007 Runtime è gratuito, ne stiamo facendo un ottimo uso!).Non c'è nessun problema particolare se non la gestione delle referenze.Il nostro codice analizza la versione di Office installata sul computer e aggiorna automaticamente i riferimenti corrispondenti (non solo Access ma anche Excel, Outlook, Word, ecc.):il codice è molto complicato ma di grande interesse!)

Per quanto ne so, nessun oggetto, proprietà o metodo principale disponibile in Office 2003/VBA è stato deprecato in Office 2007.Il codice di Office 2003 verrà quindi eseguito con Access 2007 una volta risolti questi problemi di riferimento.Alcuni nuovi oggetti sono stati introdotti in Office 2007 quindi non consiglierei a nessuno sviluppatore di utilizzarlo per sviluppare codice da utilizzare ulteriormente con Access 2003.

Ma il problema principale e reale della tua domanda è:perché si dovrebbero eseguire entrambe le versioni di Access sullo stesso computer?Questo è quello che farei se voglio assicurarmi di mandare in crash le mie app.Penso che se i tuoi obiettivi fossero sviluppare software, dovresti sicuramente trovare una configurazione migliore per la tua macchina!

In generale, avere più versioni di Access installate su un computer non è supportato e comporterà i problemi riscontrati con i riferimenti agli oggetti.

Se il database è stato creato in Access 2003, compilato in un .MDE e quindi distribuito su un'istanza Windows separata che esegue Access 2007, non dovresti riscontrare problemi significativi (a parte le modifiche dell'interfaccia utente come le barre degli strumenti personalizzate inserite nei componenti aggiuntivi nastro).

Per eseguire test su più versioni di Access sarà necessaria una qualche forma di isolamento tra ciascuna versione.Utilizzo più macchine virtuali per ottenere questo risultato.La mia VM Windows principale esegue Office 2007 e IE7 e ho una seconda VM con Office 2003 e IE6 per i test.

Tieni presente che se desideri utilizzare semplicemente Word, Excel e Outlook 2007 con Access 2003, puoi prima installare Access 2003 da solo, quindi eseguire un'installazione personalizzata di Office 2007 e deselezionare Access 2007.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top