FAQ MS-Access
FAQ MS-AccessConsultez toutes les FAQ
Nombre d'auteurs : 140, nombre de questions : 926, dernière mise à jour : 15 juin 2021
- À quoi servent les transactions ?
- Pourquoi Access n'a-t-il pas pu créer une base de données MDE ?
- Comment installer une application sur des postes ne possédant pas MS Access ?
- Comment changer le mot de passe d'un utilisateur ?
- Comment afficher l'aide DAO dans Access 2000 ?
- Comment appeler une procédure stockée Oracle depuis Access ?
- Comment compacter une base de données ?
- Comment créer une sorte d'emploi du temps ?
- Comment diminuer le poids de ma base de données ?
- Comment empêcher le lancement du formulaire de démarrage ou de la macro AUTOEXEC ?
- Comment faire cohabiter Access 97 et 2000 ?
- Comment modifier l'icône de mon application ?
- Comment ouvrir un formulaire ou exécuter du code au démarrage ?
- Comment ouvrir une application Access avec une ligne de commande paramétrée ?
- Comment récupérer le chemin d'accès à la base contenant les tables ?
- Comment récupérer les menus Access après modification des options de démarrage ?
- Comment utiliser ma base Access sur l'Internet ?
- Comment concevoir une base de données ?
- Comment connaître la liste des personnes connectées à la base ?
- Comment copier des objets d'une base à une autre ?
- Est-il possible de reconstruire une MDB à partir d'une MDE ?
- Comment faire une application Client/Serveur ?
- Comment gérer la sécurité - niveau base de données ?
- Comment gérer la sécurité - niveau utilisateur ?
- Comment normaliser le nom des champs, des contrôles et des objets ?
- Pourquoi faut-il compacter les bases de données ?
- Que signifie VBA ?
- Quelles sont les limites de MS Access ?
- Qu'est-ce qu'un fichier mde ?
- Comment réparer une base de données sans passer par l'interface Access ?
- Une application développée sous Access est-elle compatible avec toutes les versions d'Access ?
- Comment utiliser des triggers (déclencheurs) ?
- Pourquoi l'aide Access est-elle incomplète ?
- Comment activer/désactiver la correction automatique pour toutes les applications Office ?
- Comment lister les objets, méthodes et propriétés disponibles dans une version d'Access donnée ?
- Qu'est-ce qu'un twip ?
- Comment afficher l'aide ADO avec F1 ?
- Pourquoi faut-il éviter les variables globales ?
- Comment faire fonctionner Access97 sous Windows Vista ?
Parfois, vous avez besoin d'exécuter une succession de requêtes de mise à jour.
Une transaction permet, lorsqu'elle est ouverte, de lancer ces requêtes une à une et de valider ou annuler le résultat à la fin.
Imaginez qu'une requête échoue au milieu de la transaction, il ne faut pas que les modifications apportées par les autres requêtes soient enregistrées,
au risque de corrompre l'ensemble des données. Vous devez donc annuler la transaction (rollback). En revanche, si tout s'est bien passé, vous pouvez la valider (commit).
Il doit y avoir une erreur dans un des modules.
Les ouvrir un à un et compiler.
Attention également aux erreurs dues au mélange de versions des formats de base de données. Ainsi, par exemple, bien que Access 2002 sache travailler nativement avec des fichiers .mdb au format Access 2000, il ne peut convertir en MDE que les fichiers .mdb 2002.
Il faut posséder pour cela la version Microsoft Office développeur, dans laquelle on trouvera le Runtime Microsoft® Access®, qui est une version de MS Access n'ayant aucun outil de création ou de modification, qui ne permet donc que l'exploitation de bases de données existantes.
Lien : Déploiement et empaquetage d'applications professionnelles Access 2000 et XP
Lien : Déploiement et empaquetage d'applications professionnelles Access 2003
Lien : Déploiement et empaquetage de vos applications Access 2007 avec l'utilisation du Runtime.
Il faut se logger en tant qu'utilisateur. Pour chaque mot de passe à changer, il faut se logger avec le login de l'utilisateur et son mot de passe. Ensuite changer le mot de passe (outils/sécurité/gestion.../changer le mot de passe en vérifiant que c'est le bon
utilisateur).
Ce bogue de l'installation d'Access 2000 est répertorié sur le site de Microsoft.
La résolution se trouve décrite sur leur site à l'URL :
http://support.Microsoft.com/default.aspx?scid=kb;fr;249065&Product=acc2000Fra
Là dessus, regardez dans ..\Fichiers Communs\... si vous ne trouvez pas dans ...\Common Files\... et dans ...\1036 à la place de ...\1033.
Private
Sub
Callproc_Click
(
)
' This code demonstrates calling an Oracle Packaged Procedure and Function
' using the ODBC {Call...} Syntax From Visual Basic using the Microsoft
' Activex Data Objects (ADO) 2.1 (or above) interface via the Oracle ODBC Driver.
' The PL/SQL package called is
'
' create or replace package odbpack as
'
' Procedure Proc(param1 in number,param2 in out number,
' param3 out number);
'
' Function Func(param1 in varchar2, param2 in out varchar2,
' param3 out varchar2) return number;
' end odbpack;
' /
'
' create or replace package body odbpack as
' Procedure Proc(param1 in number,param2 in out number,
' param3 out number) is
' begin
' param2 := param1+param2;
' param3 := param1;
' end;
'
' Function func(param1 in varchar2, param2 in out varchar2,
' param3 out varchar2) return number is
' begin
' param2 := param1||param2;
' param3 := param1;
' return length(param2);
' end;
' end odbpack;
' /
'
'
'Dim er As adoError
'On Error GoTo CnEh
Dim
cnn1 As
ADODB.Connection
Dim
cmdExeproc As
ADODB.Command
' Open connection.
Set
cnn1 =
New
ADODB.Connection
' Modify the following line to reflect a DSN within your environment
strCnn =
"DSN=W805; UID=LeLogin; PWD=LeMotDePasse;"
cnn1.Open
strCnn
Set
cmdExeproc =
New
ADODB.Command
cmdExeproc.ActiveConnection
=
cnn1
cmdExeproc.CommandText
=
"{call odbpack.proc(?,?,?)}"
' In the next set of code, we have to manually set
' the parameter types since ADO and ODBC cannot derive this
' information when calling packaged procedures.
cmdExeproc.Parameters
(
0
).Value
=
1
cmdExeproc.Parameters
(
1
).Direction
=
adParamInputOutput
cmdExeproc.Parameters
(
1
).Value
=
2
cmdExeproc.Parameters
(
2
).Direction
=
adParamOutput
cmdExeproc.Execute
MsgBox
(
"Return Values from Proc are : "
&
_
cmdExeproc.Parameters
(
1
).Value
&
_
" and "
&
_
cmdExeproc.Parameters
(
2
).Value
)
Set
cmdExeproc =
New
ADODB.Command
cmdExeproc.ActiveConnection
=
cnn1
cmdExeproc.CommandText
=
"{? = call odbpack.func(?,?,?)}"
' In the next set of code, we have to manually set
' the parameter types since ADO and ODBC cannot derive this
' information when calling packaged procedures.
cmdExeproc.Parameters
(
0
).Direction
=
adParamReturnValue
cmdExeproc.Parameters
(
1
).Value
=
"Odd"
cmdExeproc.Parameters
(
2
).Direction
=
adParamInputOutput
cmdExeproc.Parameters
(
2
).Value
=
"Fred"
cmdExeproc.Parameters
(
3
).Direction
=
adParamOutput
cmdExeproc.Execute
MsgBox
(
"Return Values from Func are : "
&
_
cmdExeproc.Parameters
(
0
).Value
&
_
" and "
&
_
cmdExeproc.Parameters
(
2
).Value
&
_
" and "
&
_
cmdExeproc.Parameters
(
3
).Value
)
' Close Connection
cnn1.Close
End
Sub
1/ Une solution "manuelle" :
Menu Outils/Utilitaires de bases de données/Compacter une base de données.
2/ Une solution "automatique" (à partir de MS Access 2000) :
Menu Outils/Options, Onglet "Général", cocher "Compacter lors de la fermeture".
3/Une solution par code :
Sub
cmdCompacter_Click (
)
sNomBase=
"C:\Mes documents\Base.MDB"
sNomBaseTmp=
"C:\Mes documents\BaseTmp.MDB"
DBEngine.CompactDatabase
sNomBase, sNomBaseTmp '1. Compactage dans une nouvelle base
Kill sNomBase '2. Suppression de la base originale
Name sNomBaseTmp As
sNomBase '3. Renommer la base compactée avec le nom de la base originale
End
Sub
Remarque : Cette dernière solution ne vous permet pas de compacter la base de données en cours.
TABLE1 LaDate LeDebut LaFin LeSujet 12/11/2003 10:15:00 11:15:00 test 2003-11-13 09:00:00 09:30:00 essai TABLE2 DD DF 09:00:00 09:30:00 09:30:00 10:00:00 10:00:00 10:30:00 10:30:00 11:00:00 11:00:00 11:30:00 11:30:00 12:00:00 12:00:00 12:30:00 REQUÊTE1
TRANSFORM First
(
IIf
(
[ledebut]<
[dd] And
[lafin]>
[df] Or
[Ledebut]>=
[DD]
And
[LeDebut]<
[DF] Or
[LaFin]>
[DD] And
[LaFin]<=
[DF],[LeSujet],""
)) AS
Expr2
SELECT
Table2.DD
, Table2.DF
FROM Table2, Table1
GROUP BY Table2.DD
, Table2.DF
PIVOT Choose
(
Weekday
(
[LaDate]),"dimanche"
,"lundi"
,"mardi"
,"mercredi"
,"jeudi"
,"vendredi"
,"samedi"
)
In
(
"Lundi"
,"Mardi"
,"Mercredi"
,"Jeudi"
,"Vendredi"
,"Samedi"
,"Dimanche"
);
Cet exemple correspond à un emploi d'une semaine. Pour utiliser ce code sur un mois il faut remplacer le PIVOT par :
PIVOT Day
(
[LaDate]) In
(
1
,2
,3
,4
,5
,6
,7
,8
,9
,10
,11
,12
,13
,14
,15
,16
,17
,18
,19
,20
,21
,22
,23
,24
,25
,26
,27
,28
,29
,30
,31
)
Il suffit de maintenir la touche shift (majuscule) enfoncée pendant l'ouverture. Cette astuce fonctionne avec la plupart des applications Office.
Lien : Comment ouvrir un formulaire ou exécuter du code au démarrage ?
Lien : Comment inhiber la touche MAJ au démarrage ?
Lien : Comment récupérer les menus Access après modification des options de démarrage ?
Il faut installer d'abord Access 97 puis Access 2000. Toujours le plus récent à la fin.
Ensuite, il suffit de faire deux raccourcis depuis les fichiers MSAccess.exe se trouvant dans les dossiers d'installation définis.
Il existe une option permettant de définir l'icône de l'application à afficher dans la barre de titre de la base de données :
Menu Outils/Démarrage/Icône de l'application
Pour ouvrir un formulaire au démarrage de l'application, rendez-vous dans le
menu Outils puis Démarrage. Définissez la propriété Formulaire de démarrage.
Pour exécuter un traitement au lancement de l'application, créez une macro nommée AutoExec
incluant les actions dont vous avez besoin.
En général, le développeur dote cette macro d'une seule action : Exécuter Code,
permettant ainsi de lancer une fonction VBA au démarrage de son produit.
Lien : Comment empêcher le lancement du formulaire de démarrage ou de la macro AUTOEXEC ?
Pour tout savoir, cherchez Options de la ligne de commande de démarrage dans l'aide Access.
Intéressez-vous notamment au paramètre /cmd et à la fonction Command.
Lien : Utilisation des options de démarrage de la ligne de commande
Function
GetLinkedDBName
(
TableName As
String
)
' *** ex.: GetLinkedDBName ("ENFANT")
' *** \\serveur\base de données\Base_de_donnees.mdb
'
Dim
db As
Database, Ret
On
Error
GoTo
DBNameErr
Set
db =
CurrentDb
(
)
Ret =
db.TableDefs
(
TableName).Connect
GetLinkedDBName =
Right
(
Ret, Len
(
Ret) -
(
InStr
(
1
, Ret, "DATABASE="
) +
8
))
Exit
Function
DBNameErr
:
GetLinkedDBName =
0
End
Function
Function
DriveLinkedTable
(
) As
String
' Retrouve le chemin complet de la base attachée
' ex.: \\serveur\base de données\
Dim
X As
String
, I As
Integer
Dim
Path As
String
X$ =
GetLinkedDBName
(
"ENFANT"
) ' Chemin complet
' Voir ci-dessus la fonction GetLinkedDbName()
For
I =
Len
(
X$) To
1
Step
-
1
If
Mid
$(
X$, I, 1
) =
"\"
Then
Exit
For
Next
Path$ =
Left
$(
X$, I -
1
) &
"\"
DriveLinkedTable =
Path$
End
Function
La fonction GetLinkedDBName() retourne le chemin réseau de la table passée en paramètre.
La fonction DriveLinkedTable() retourne ce même chemin mais sans le nom du fichier de la base de données.
Lien : Comment récupérer le chemin d'accès à la base contenant les tables par ADO ?
Vous avez joué avec les options de démarrage et maintenant vous vous retrouvez sans menus lorsque vous lancez Access ?
Il vous suffit d'ouvrir le fichier Access en maintenant la touche shift de votre clavier appuyée. Tout vous sera alors affiché et il vous suffira de retourner dans les options de démarrage pour arranger tout cela.
Lien : Comment empêcher le lancement du formulaire de démarrage ou de la macro AUTOEXEC ?
Tout d'abord, Access est un front end Windows, non un front end Web. Donc on ne peut utiliser l'interface (les formulaires) sur l'Internet, cependant les tables et leurs données sont utilisables.
Pensez peut-être aussi à passer d'Access à MySQL. MySQL est gratuit et se combine parfaitement avec le langage PHP.
Qu'utiliser alors pour l'interface ? Toute technologie de page dynamique -> PHP et ASP.NET en tête.
Cyril Gruau nous propose un cours de conception de bases de données. Indispensable !
Lien : Conception de bases de données (fichier PDF)
Lien : Conception de bases de données (fichier PDF) - lien de secours
Lien : Access - Les Bases
La solution est d'importer les objets voulus (requêtes, formulaires, tables, macros ou états).
Pour ce faire, ouvrez votre base de destination (créez-en une vierge au besoin) et faites Insertion > Table > Importer la table.
Il ne vous reste alors qu'à naviguer entre les différents onglets et importer les objets dont vous avez besoin.
Non !
MDE : Fichier de base de données "semi-protégé" : une MDE est une MDB dans laquelle il n'est plus possible d'ajouter ou de modifier des formulaires, des états ou des modules VBA. Contrairement à l'idée reçue, la MDE n'est pas une protection intégrale d'une MDB : les tables, requêtes et macros sont toujours accessibles.
Mais la MDE a subi une pseudo compilation. Tous les éléments disponibles pour la modification des modules (et modules de classe, donc états et formulaires inclus) ne sont plus accessibles.
MS Access n'est pas fait pour réaliser ce type d'application.
Depuis la version 2000, il est cependant possible de créer des projets MS Access.
Les projets MS Access sont la grosse nouveauté permettant de créer des clients de bases de données SQL Serveur.
Dans ce cas-là, on peut créer une application réellement client-serveur.
Pour ce type d'architecture, vous pourrez utiliser MSDE (version restreinte de SQL Server) qui est fournie sur le CD d'Office.
Lien : Comment utiliser une application en mode multi-utilisateur par Morgan BILLY
Il s'agit simplement de la mise en place d'un mot de passe sur le fichier de base de données. La sécurité de niveau base de données n'est pas fiable.
La sécurité de niveau utilisateur est bien plus fine.
Elle est d'ores et déjà active, mais les paramètres sont tellement ouverts qu'on ne le voit pas :
Lorsque MS Access se lance, une lecture est faite au niveau de la base de registre, allant chercher le fichier système qui va régir le DBEngine (DAO).
Une fois ces paramètres définis, la base de données s'ouvre, d'où le schéma DBENGINE-WORKSPACE-DATABASE, et la propriété SystemDB du DBEngine.
C'est à l'ouverture du Workspace que les user et pwd sont demandés, d'où la syntaxe CREATEWORKSPACE(<<Name>>,<<USER>>,<<PWD>>...).
----------------------------------------------------------
Le fichier SystemDB, on peut le voir en lançant l'utilitaire wrkgadm.exe.
Il est même conseillé d'en créer un spécifique, en laissant le system.mdw existant intact. À quoi sert l'utilitaire :
- créer de nouveaux fichiers de sécurité ;
- modifier la base de registre en définissant le fichier de sécurité actif pour la prochaine
session MS Access. À quoi sert ce fichier : à définir les users et groups.
---------------------------------------------------------
Étapes :
1-Créer un fichier de sécurité.
2-Ouvrir MS Access.
3-Faire Outils/Sécurité, définir tous les Users et Groups (minimum 1 User : MoiMeme, 1 Group : MonGroup).
4-Faire toutes les associations User-Group (dont MoiMeme-MonGoupe).
5-Mettre un des nouveaux Users (MoiMeme) dans le groupe des Administrateurs.
6-Enlever le User Administrateur du Groupe Administrateurs.
7-Donner un mot de passe à l'Administrateur.
8-Quitter MS Access.
9-Ouvrir MS Access (pour mettre en place ces nouveaux paramètres).
10-Mettre le nom du nouveau User (MoiMeme) et aucun mot de passe.
11-Créer une base de données (ainsi ce sera MoiMeme qui sera le propriétaire de la base).
12-Faire Outils/Sécurité pour paramétrer les droits.
Retirer tous les droits du groupe des utilisateurs.
Retirer tous les droits du groupe des administrateurs.
Mettre tous les droits au groupe des développeurs.
Et faire cela sur chacun des types d'objets, dont la base de données. Ainsi, la base de données ne pourra pas être ouverte par l'utilisateur par défaut (utilisateur administrateur).
13-Importer tous les objets de la base d'origine.
---------------------------------------------------------
Cette base ne pourra être ouverte que si
1- on a le bon fichier MDW ;
2- on connaît le mot de passe.
Ensuite la meilleure solution est de créer un raccourci dont les propriétés sont les suivantes :
"Chemin\vers\MSAccess.exe"
"Chemin\vers\votre\fichier.mdb"
/
Wrkgrp "Chemin\vers\votre\fichier.mdw"
Astuce si vous ne voulez pas taper votre mot de passe à chaque fois :
/
user NomUtilisateur /
pwd LeMotDePasse
Normaliser les noms des champs et des contrôles facilitera la maintenance.
Utiliser les préfixes conventionnels est même fortement recommandé, surtout lors d'un
travail collectif. Il est ainsi beaucoup plus aisé de relire, et de déboguer, son code.
Vous vous en rendrez vraiment compte en relisant le code d'autres programmeurs.
Lien : Télécharger le fichier Excel des principaux préfixes normalisés
Lien : Descriptif des conventions typographiques du code Visual Basic
Au fur et à mesure de l'utilisation de votre base de données,
la taille du fichier tend à accroître considérablement.
Ceci est dû à la méthode utilisée par Access pour stocker les enregistrements.
Il vous est donc recommandé de compacter régulièrement votre fichier.
De plus, depuis Access 2000, le compactage inclut la réparation du fichier s'il est endommagé.
VBA pour Visual Basic édition (ou en Anglais : "for") Application (c'est-à-dire orienté vers les applications bureautiques de Microsoft : Access, Excel, Word...).
Certains éléments qu'on peut être amené à gérer dans une application en Access ou en Excel, par exemple, sont identiques. D'autres sont spécifiques.
VBA peut être vu comme une restriction de VB.
Mais l'interface de développement d'Access, par exemple, apporte pas mal de facilités.
Les limites de Microsoft Access sont consultables dans l'aide sous le mot-clé "Spécifications de Microsoft Access".
Vous y trouverez le nombre d'utilisateurs admissibles, la taille maximale de la base de données, le nombre d'objets autorisés, etc.
Un fichier mde est une base de données Access stockée dans un état compilé.
La modification des formulaires, états, macros et modules y est impossible. La création d'un fichier mde améliore les performances de l'application,
réduit sa taille et protège sa partie applicative des modifications. Attention, lorsque vous convertissez votre base en MDE,
gardez précieusement une copie du fichier .mdb originel car la compilation est irréversible.
Lien : Comment gérer la sécurité - niveau utilisateur ?
Lien : Comment gérer la sécurité - niveau base de données ?
Lien : Est-il possible de reconstruire une MDB à partir d'une MDE ?
Il faut lancer ce qui suit en ligne de commande (pour Access 2000) :
"C:\Program Files\Office2000\Office\MSACCESS.EXE"
"C:\Mes documents\MaBase.mdb"
/
repair
La base sera ainsi réparée mais non ouverte.
Sinon, intéressez-vous à la méthode "CompactDataBase".
Lire une application avec une version d'Access supérieure ou égale à celle utilisée lors du développement ne devrait pas poser de problème.
Cependant, l'inverse n'est pas vrai. À savoir qu'une base développée sous Access 2003 ET enregistrée au format Access 2003 ne sera pas exploitable par les versions antérieures d'Access.
Jusque et y compris la version 2007, les triggers ne sont pas gérés sur les bases de données MS Access.
Depuis la version 2010, Microsoft a ajouté les macros de données que l'on peut comparer à des triggers. Les deux tutoriels de Tofalu renseignés ci-dessous vous aideront à mettre ces macros en place.
Lien : Les bonnes pratiques de la programmation des macros de données [Access 2010]
Lien : Les bonnes pratiques de la programmation des macros de données
Certains fichiers d'aide sont placés dans le dossier C:\Program Files\Common Files alors que l'aide cherche dans le dossier
C:\Program Files\Fichiers communs.
Il vous suffit de copier l'aide dans le second dossier.
Pour activer / désactiver la correction orthographique des applications Office, il faut passer par la base de registre.
Pour votre sécurité, faites une sauvegarde de la base de registre avant de réaliser la modification.
Pour accéder à la base de registre tapez regedit dans la fenêtre Exécuter du menu Démarrer.
Ceci désactive la correction :
[HKEY_CURRENT_USER\
Software\
Microsoft\
Office\
11
.0
\
Common\
AutoCorrect]
"ACOptions"
=
dword:00000000
"CorrectTwoInitialCapitals"
=
dword:00000000
"CapitalizeSentence"
=
dword:00000000
"CapitalizeNamesOfDays"
=
dword:00000000
"ToggleCapsLock"
=
dword:00000000
"ReplaceText"
=
dword:00000000
Ceci active la correction :
[HKEY_CURRENT_USER\
Software\
Microsoft\
Office\
11
.0
\
Common\
AutoCorrect]
"ACOptions"
=
dword:00000001
"CorrectTwoInitialCapitals"
=
dword:00000001
"CapitalizeSentence"
=
dword:00000001
"CapitalizeNamesOfDays"
=
dword:00000001
"ToggleCapsLock"
=
dword:00000001
"ReplaceText"
=
dword:00000001
Dans un premier temps il faut ajouter la référence : TypeLib Information (C:\Winnt\system32\tblinf32.dll).
Ce code va vous permettre de lister les objets, méthodes et propriétés disponibles dans une version d'Access donnée.
Collez ce code dans un module.
Public
Function
GetMethod
(
ByVal
strRefName As
String
, ByVal
strObject As
String
, _
Optional
ByVal
item As
String
=
"*"
) As
Collection
Dim
objTLI As
TypeLibInfo
Dim
objInterFace As
InterfaceInfo
Dim
objMember As
MemberInfo
Dim
i As
Integer
Dim
strTypeName As
String
, strLastAdded As
String
Set
objTLI =
New
TypeLibInfo
objTLI.ContainingFile
=
Application.References
(
strRefName).FullPath
For
i =
1
To
objTLI.TypeInfos.Count
If
(
objTLI.TypeInfos
(
i).Name
=
strObject) Then
Set
objInterFace =
objTLI.TypeInfos
(
i).Interfaces
(
1
)
Exit
For
End
If
Next
i
If
Not
(
objInterFace Is
Nothing
) Then
For
Each
objMember In
objInterFace.Members
If
Not
(
Left
$(
objMember.Name
, 1
) =
"_"
) And
_
Not
(
objMember.Name
=
strLastFound) And
_
(
objMember.InvokeKind
=
INVOKE_FUNC Or
_
objMember.InvokeKind
=
INVOKE_EVENTFUNC) And
_
(
objMember.Name
Like item) Then
Debug.Print
objMember.Name
strLastFound =
objMember.Name
End
If
Next
objMember
End
If
End
Function
Appel de la fonction :
' Exemple d'appel pour l'objet Formulaire
GetMethod "Access"
, "Form"
Le dernier argument est facultatif, il permet de faire une recherche précise, exemple avec les propriétés commençant par A
' Exemple d'appel pour l'objet Formulaire
GetMethod "Access"
, "Form"
, "a*"
C'est une unité de mesure utilisée par le VBA (et Access) qui correspond à 1/1440 pouce soit 2,54 cm.
Ce qui fait que 1 cm contient à peu près 567 twips.
Cette unité de mesure est complètement dissociée de la notion de pixel.
Son objectif est de permettre un positionnement impeccable d'une fenêtre (au sens global du terme, cela englobe donc les contrôles, etc.) sur un écran, et ceci, quelle que soit la résolution de ce dernier.
Lien : Comment obtenir la relation entre le nombre de pixels affichés à l'écran et une mesure physique ?
Lien : Comment déterminer la position d'un formulaire à l'écran ?
Lien : Comment connaître le nombre de twips par pixel sur la machine en cours ?
L'aide ADO n'est pas affichée lorsque vous faites référence à la bibliothèque d'objets ADO 2.7 ou ultérieures.
La solution se trouve décrite sur le site de Microsoft à l'URL :
http://support.microsoft.com/default.aspx?scid=kb%3Bfr%3B827041
- une variable est un espace mémoire stockant des données. Moins on utilise d'espace mémoire pour stocker des données, plus on en a pour l'application elle-même ;
- elles ont une durée de vie équivalente à la durée du projet (de l'ouverture à la fermeture de la base, en gros), ce qui signifie qu'elles conservent leur valeur pendant toute la durée d'exécution de la base. Or, il est extrêmement rare qu'une variable soit utilisée EN PERMANENCE. Donc, on se retrouve avec des données en mémoire, avec des temps de latence extrêmement longs. Donc, on monopolise de la mémoire pour... rien, la majeure partie du temps de travail de l'application. Stocker l'info dans une table, dans une propriété de la base, dans la base de registre, dans un fichier texte (etc.) reviendrait donc rigoureusement au même, mais sans utiliser la mémoire.
Deux problèmes sont rencontrés lors de l'installation d'Access97 sous Windows VISTA :
1. Impossibilité de créer le fichier System.mdw (groupe de travail)
à l'installation ou ensuite en utilisant le Wrkgadm.exe.
Même en ouvrant "en tant qu'administrateur".
Solution : récupérer l'ancien fichier et le coller sous Windows\system32.
2. Ouverture impossible d'Access : "mémoire insuffisante"
Erreur Microsoft.
Solution : télécharger la mise à jour SR1 d'Office 97.
Office 97 Service Release 1.
Ouvrir le .exe de la mise à jour avec l'option "administrateur" (clic droit).