Le fichier d'assistance d'Access documente la méthode
CreateProperty:
Set property = object.CreateProperty
(name, type, value, DDL)
où le dernier argument est documenté comme suit:
Part |
Description |
DDL |
Optionnel. Un Variant (sous-type booléen)
qui indique si la propriété est un objet DLL. Le défaut est
False. Si DDL est True, les utilisateurs ne peuvent
changer ou effacer cette propriété à moins qu'ils ne possèdent la
permission dbSecWriteDef. |
La méthode CreateProperty est utilisée pour créer ou initialiser la
propriété AllowBypassKey à Vrai, ce qui empêche l'utilisateur de
court-circuiter l'auto démarrage (macro Autoexec). Malheureusement, le
code fourni dans le fichier d'aide n'utilise pas le quatrième argument
DDL lors de la création de la propriété, ce qui signifie que n'importe
qui, qui peut ouvrir la base de données, peut également modifier la propriété
AllowBypassKey.
Donc, afin de réserver la possibilité de modifier cette propriété aux seuls
administrateurs, n'oubliez pas d'assigner cette propriété à True
lors de sa création... mais ne restez pas pris à l'extérieur de votre base de données!
Comme exemple, vous trouvez ci-dessous un d'utilisation de la méthode CreateProperty, tel qu'il devrait
être, de façon à initialiser l'argument DDL. Le code actuel du ficher d'aide
est également reproduit pour vous aider à comparer les différences.
Function ChangePropertyDdl(stPropName As String, _
PropType As DAO.DataTypeEnum, vPropVal As Variant) _
As Boolean
On Error GoTo ChangePropertyDdl_Err
Dim db As DAO.Database
Dim prp As DAO.Property
Const conPropNotFoundError = 3270
Set db = CurrentDb
db.Properties.Delete stPropName
Set prp = db.CreateProperty(stPropName, _
PropType, vPropVal, True)
db.Properties.Append prp
ChangePropertyDdl = True
ChangePropertyDdl_Exit:
Set prp = Nothing
Set db = Nothing
Exit Function
ChangePropertyDdl_Err:
If Err.Number = conPropNotFoundError Then
Resume Next
End If
Resume ChangePropertyDdl_Exit
End Function
Function ChangeProperty(strPropName As String, _
varPropType As Variant, varPropValue As Variant) As Integer
Dim dbs As Database, prp As Property
Const conPropNotFoundError = 3270
Set dbs = CurrentDb
On Error GoTo Change_Err
dbs.Properties(strPropName) = varPropValue
ChangeProperty = True
Change_Bye:
Exit Function
Change_Err:
If Err = conPropNotFoundError Then
Set prp = dbs.CreateProperty(strPropName, _
varPropType, varPropValue)
dbs.Properties.Append prp
Resume Next
Else
ChangeProperty = False
Resume Change_Bye
End If
End Function