2010-08-06 9 views
0

J'ai une base de données qui est utilisée dans un environnement mixte 2003, 2007. J'ai quelques fonctionnalités mineures qui utilisent la nouvelle fonction TempVars de 2007. Si c'est un utilisateur 2003, ce n'est pas un problème pour eux de ne pas avoir ces fonctionnalités.Tempvars et accès 2003

Comment écrire mon code pour qu'il compile et s'exécute sur Access 2003. J'ai essayé on error resume next mais cela ne fonctionne pas pour les erreurs de compilation.

Répondre

1

Si votre application sera utilisée avec Access 2003, il me semble que vous devriez exclure les fonctionnalités que ne supporte pas 2003. Cependant, si vous devez avoir Tempvars, vérifiez si une approche de constante du compilateur conditionnel le ferait fonctionner pour vous.

Option Compare Database 
Option Explicit 
#Const Aversion = "2007" 'conditional compiler constant ' 

Public Sub HelloWorld() 
    Dim strWho As String 
    strWho = "World" 

    #If Aversion = "2007" Then 
     '* your 2007 feature code here *' 
     strWho = UCase(strWho) 
    #End If 
    'Aversion 2003 -> Hello World ' 
    'Aversion 2007 -> Hello WORLD ' 
    Debug.Print "Hello " & strWho 
End Sub 

Vérifier l'accès Aide pour plus d'informations sur #Const et #Si.

Je n'ai pas testé cela, mais je pense que cela pourrait fonctionner. Vous pourriez avoir besoin de deux copies de votre base de données: YourDb2003.mdb; et YourDb2007.mdb. Dans YourDb2003.mdb, utilisez "2003" comme constante du compilateur et "2007" dans YourDb2007.mdb.

+0

Cela fonctionnerait, mais j'espérais que quelque chose soit automatiquement fait lors de l'exécution. Il n'est pas possible de définir une Const à 'Application.Version' ou toute autre chose qui pourrait m'être utile. Aucune suggestion? – Icode4food

+0

Désolé, non. La seule façon dont je sais d'inclure du code qui ne compilera pas est de dire au compilateur de l'ignorer avec '#If ...' – HansUp

+0

Pourquoi ne pas faire votre constante égale à "11.0", puis tester "#If Application.Version > Aversion Then "ou" #If Aversion <= Application.Version Then "? –

0

Voici un nice summary sur l'utilisation des constantes de compilateur intégrées VBA.
#If VBA7 Then pourrait vous aider à différencier le code Office 2010 uniquement. Malheureusement, cela ne s'applique pas à Office 2007.