Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/03/2011, 18h35   #1
Candidat au titre de Membre du Club
 
Homme philippe tchaidjian
salarié
Inscription : mars 2011
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme philippe tchaidjian
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : salarié
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 49
Points : 13
Points : 13
Par défaut sql et access / modules

Bonjour à tous

pouvez vous m'indiquer svp comment écrire une requête (en mode SQL) ou coder un module dans une base MS Access qui permette de déterminer le nombre de champ d'une table de la base ainsi que la longueur maximale des caractères utilsée ds chaque champ.

Je précise que la demande est motivée par le fait d'éviter d'ouvrir chq table en mode création et de devoir compter (avec risque d'erreur avéré ) manuellement les champs déclarés, non plus que de savoir quelle longueur maxi a été déclarée en mode création , mais connaître la longueur maxi effectivement utilisée ds les enregistrements de la table pr chq champ, de facçon réduire la taille maxi autorisée en mode création si besoin.

merci de votre aide

Bien cordialement
pppa1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 23h11   #2
Rédacteur

 
Avatar de Maxence HUBICHE
 
Homme Maxence HUBICHE
Formateur et Développeur - Conseil en Informatique
Inscription : juin 2002
Messages : 3 687
Détails du profil
Informations personnelles :
Nom : Homme Maxence HUBICHE
Âge : 42
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Formateur et Développeur - Conseil en Informatique

Informations forums :
Inscription : juin 2002
Messages : 3 687
Points : 6 516
Points : 6 516
Envoyer un message via MSN à Maxence HUBICHE Envoyer un message via Skype™ à Maxence HUBICHE
Bonjour !

T'as pas de bol aujourd'hui !
Je passais par là, et j'ai vu ta question... et j'ai eu envie de m'amuser une peu...
:p
Tu es prêt à copier-coller ?

Avant toutes choses, tu es prié de controler que tu as bien les références (Outils/Références) à
  • Microsoft Scripting Runtime
  • Microsoft Office x.xx Access Database Engine Object Library


D'abord, tu crées 5 modules de classe (Alt+F11 puis, Insertion/Module de classe)
et maintenant ... (fais attention au nom des classes !!)
CLASSE : myControlField
Code :
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
'---------------------------------------------------------------------------------------
' Classe    : myControlField
' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
' Date      : 24/03/2011
' Objet     :
'---------------------------------------------------------------------------------------
 
Option Compare Database
Option Explicit
 
'Nécessite la bibliothèque DAO pour le DataTypeEnum
 
Public Name                                                'Nom du champ
Public DataType               As dao.DataTypeEnum          'Type de données (DAO)
Public DataSize               As Long                      'Libellé du type de données
Public MaxLength              As Long                      'Longueur max trouvée dans le champ
 
 
Public Property Get DataTypeName() As String
    '---------------------------------------------------------------------------------------
    ' Procedure : DataTypeName
    ' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
    ' Date      : 24/03/2011
    ' Objet     : renvoie le nom du type de données
    '---------------------------------------------------------------------------------------
    '
    Select Case DataType
        Case dbText
            DataTypeName = "Text"
        Case dbMemo
            DataTypeName = "Mémo/HyperLien"
        Case dbByte
            DataTypeName = "Octet"
        Case dbInteger
            DataTypeName = "Entier"
        Case dbLong
            DataTypeName = "Entier Long"
        Case dbSingle
            DataTypeName = "Réel Simple"
        Case dbDouble
            DataTypeName = "Réel Double"
        Case dbCurrency
            DataTypeName = "Monétaire"
        Case dbDecimal
            DataTypeName = "Décimal"
        Case dbDate
            DataTypeName = "Date/Heure"
        Case dbBoolean
            DataTypeName = "Oui/Non"
        Case dbAttachment
            DataTypeName = "Pièce Jointe"
        Case dbLongBinary
            DataTypeName = "Objet OLE"
        Case dbGUID
            DataTypeName = "N° Réplication"
        Case Else
            DataTypeName = "-- UNKNOWN --"
    End Select
End Property
 
Function GetRow(a_sSeparator As String) As String
    Dim vTemp                 As Variant
    vTemp = Array(Me.Name, Me.DataTypeName, Me.DataSize, Me.MaxLength)
    GetRow = Join(vTemp, Left(Trim(a_sSeparator), 1))
End Function
CLASSE : myControlFields
Code :
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
'---------------------------------------------------------------------------------------
' Classe    : myControlFields
' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
' Date      : 24/03/2011
' Objet     : Collection de Champs pour le contrôle des tailles
'---------------------------------------------------------------------------------------
 
Option Compare Database
Option Explicit
 
Private m_oCollection As Collection
 
Public Function Count() As Long
'---------------------------------------------------------------------------------------
' Procedure : Count
' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
' Date      : 24/03/2011
' Objet     : Nombre d'éléments strockés dans la collection
'---------------------------------------------------------------------------------------
'
    Count = m_oCollection.Count
End Function
 
Public Function Item(a_vIndex As Variant) As myControlField
'---------------------------------------------------------------------------------------
' Procedure : Item
' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
' Date      : 24/03/2011
' Objet     : Renvoie un élément de la collectino qui a été stocké au préalable.
'               si l'argument pasé en paramètre (position ou nom) n'existe pas, la
'               classe renvoie une erreur depuis cette procédure
'---------------------------------------------------------------------------------------
'
    Set Item = m_oCollection.Item(a_vIndex)
End Function
 
Public Function Add(a_sNom As String, a_sType As DataTypeEnum, a_lTaille As Long, a_lMaxFounded As Long) As myControlField
'---------------------------------------------------------------------------------------
' Procedure : Add
' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
' Date      : 24/03/2011
' Objet     : Création d'un objet myControlField et ajout à la collection
'               La procédure est prévue pour renvoyer l'objet ainsi créé
'---------------------------------------------------------------------------------------
'
    Dim oField As myControlField
    Set oField = New myControlField
    oField.Name = a_sNom
    oField.DataType = a_sType
    oField.DataSize = a_lTaille
    oField.MaxLength = a_lMaxFounded
    m_oCollection.Add oField, oField.Name
    Set Add = oField
End Function
 
Private Sub Class_Initialize()
'---------------------------------------------------------------------------------------
' Procedure : Class_Initialize
' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
' Date      : 24/03/2011
' Objet     : Constructeur de la classe. Initialisation de la collection
'---------------------------------------------------------------------------------------
'
    Set m_oCollection = New Collection
End Sub
 
Private Sub Class_Terminate()
'---------------------------------------------------------------------------------------
' Procedure : Class_Terminate
' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
' Date      : 24/03/2011
' Objet     : Destructeur de la classe. Destruction de la collection
'---------------------------------------------------------------------------------------
'
    Set m_oCollection = Nothing
End Sub
CLASSE : myControlTable
Code :
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
'---------------------------------------------------------------------------------------
' Classe    : myControlTable
' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
' Date      : 24/03/2011
' Objet     : Classe pour la gestion d'une table
'               parcoure tous les champs de la table passée en paramètre et en stocke
'               les informations
'---------------------------------------------------------------------------------------
 
Option Compare Database
Option Explicit
 
Private m_sNomTable           As String
Private m_oFields             As myControlFields
 
 
Property Let NomTable(a_sNomTable As String)
    '---------------------------------------------------------------------------------------
    ' Procedure : NomTable
    ' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
    ' Date      : 24/03/2011
    ' Objet     : A la définition de la table, récupère les informations des champs et les
    '               ajoute à la collection des champs
    '---------------------------------------------------------------------------------------
    '
    Dim iCount                As Long
    Dim sNom                  As String
    Dim eType                 As dao.DataTypeEnum
    Dim lTaille               As Long
    Dim lMax                  As Long
    Set m_oFields = New myControlFields
    m_sNomTable = a_sNomTable
    For iCount = 0 To CurrentDb.TableDefs(a_sNomTable).Fields.Count - 1
        sNom = CurrentDb.TableDefs(a_sNomTable).Fields(iCount).Name
        eType = CurrentDb.TableDefs(a_sNomTable).Fields(iCount).Type
        lTaille = CurrentDb.TableDefs(a_sNomTable).Fields(iCount).Size
        lMax = MaxSize(a_sNomTable, sNom, eType)
        m_oFields.Add sNom, eType, lTaille, lMax
    Next
 
    'Set oFld = Nothing
    'Set oTable = Nothing
End Property
 
Function Fields() As myControlFields
    '---------------------------------------------------------------------------------------
    ' Procedure : Fields
    ' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
    ' Date      : 24/03/2011
    ' Objet     : Renvoie la collection des fields
    '---------------------------------------------------------------------------------------
    '
    Set Fields = m_oFields
End Function
 
Property Get NomTable() As String
    '---------------------------------------------------------------------------------------
    ' Procedure : NomTable
    ' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
    ' Date      : 24/03/2011
    ' Objet     : Renvoie le nom de la table
    '---------------------------------------------------------------------------------------
    '
    NomTable = m_sNomTable
End Property
 
 
 
Private Function MaxSize(a_sTableName As String, a_sFieldName As String, a_eDataType As DataTypeEnum) As Long
    '---------------------------------------------------------------------------------------
    ' Procedure : MaxSize
    ' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
    ' Date      : 24/03/2011
    ' Objet     : fonction privée servant au calcul du nombre de caractères dans un champ
    '               texte, ou de la taille nécessaire au stockage des nombres présents
    '---------------------------------------------------------------------------------------
    '
    Dim orst                  As dao.Recordset
    Select Case a_eDataType
        Case dbText
            Set orst = CurrentDb.OpenRecordset("SELECT MAX(Len([" & a_sFieldName & "])) FROM [" & a_sTableName & "]", dbOpenSnapshot)
            MaxSize = orst.Fields(0).Value
        Case dbByte, dbInteger, dbLong, dbSingle, dbDouble, dbCurrency, dbDecimal
            Set orst = CurrentDb.OpenRecordset("SELECT MAX(Abs([" & a_sFieldName & "])) FROM [" & a_sTableName & "]", dbOpenSnapshot)
            Dim stemp As String
            stemp = Hex$(orst.Fields(0).Value)
            If Len(stemp) Mod 2 = 1 Then stemp = "0" & stemp
            MaxSize = Len(stemp) \ 2
        Case dbBoolean
            MaxSize = 1
        Case dbDate
            MaxSize = 8
        Case dbGUID
            MaxSize = 16
        Case Else
            MaxSize = 999999
    End Select
    Set orst = Nothing
End Function
CLASSE : myControlTables
Code :
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
'---------------------------------------------------------------------------------------
' Classe    : myControlTables
' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
' Date      : 24/03/2011
' Objet     :
'---------------------------------------------------------------------------------------
 
Option Compare Database
Option Explicit
 
Private m_oCollection As Collection
 
Public Function Count() As Long
'---------------------------------------------------------------------------------------
' Procedure : Count
' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
' Date      : 24/03/2011
' Objet     :
'---------------------------------------------------------------------------------------
'
    Count = m_oCollection.Count
End Function
 
Public Function Item(a_vIndex As Variant) As myControlTable
'---------------------------------------------------------------------------------------
' Procedure : Item
' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
' Date      : 24/03/2011
' Objet     : Renvoie un élément de la collection qui a été stocké au préalable.
'               si l'argument pasé en paramètre (position ou nom) n'existe pas, la
'               classe renvoie une erreur depuis cette procédure
'---------------------------------------------------------------------------------------
'
    Set Item = m_oCollection.Item(a_vIndex)
End Function
 
Public Function Add(a_sNom As String) As myControlTable
'---------------------------------------------------------------------------------------
' Procedure : Add
' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
' Date      : 24/03/2011
' Objet     : Création d'un objet myControlTable et ajout à la collection
'               La procédure est prévue pour renvoyer l'objet ainsi créé
'---------------------------------------------------------------------------------------
'
    Dim oTable As myControlTable
    Set oTable = New myControlTable
    oTable.NomTable = a_sNom
    m_oCollection.Add oTable, oTable.NomTable
    Set Add = oTable
End Function
 
Private Sub Class_Initialize()
'---------------------------------------------------------------------------------------
' Procedure : Class_Initialize
' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
' Date      : 24/03/2011
' Objet     : Constructeur de la classe. Initialisation de la collection
'---------------------------------------------------------------------------------------
'
    Set m_oCollection = New Collection
End Sub
 
Private Sub Class_Terminate()
'---------------------------------------------------------------------------------------
' Procedure : Class_Terminate
' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
' Date      : 24/03/2011
' Objet     : Destructeur de la classe. Destruction de la collection
'---------------------------------------------------------------------------------------
'
    Set m_oCollection = Nothing
End Sub
et pour finir, la dernière :
CLASSE : myControl
Code :
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
'---------------------------------------------------------------------------------------
' Classe    : myControl
' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
' Date      : 24/03/2011
' Objet     :
'---------------------------------------------------------------------------------------
 
Option Compare Database
Option Explicit
 
 
'Utilité du Microsoft Scripting Runtime
 
Dim m_oTables                 As myControlTables
 
Private Sub Class_Initialize()
'---------------------------------------------------------------------------------------
' Procedure : Class_Initialize
' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
' Date      : 24/03/2011
' Objet     : Constructeur
'               Parcoure toutes les tables non systme de la base en cours
'---------------------------------------------------------------------------------------
'
    Dim oTable                As TableDef
    Set m_oTables = New myControlTables
    For Each oTable In CurrentDb.TableDefs
        If (oTable.Attributes And dbSystemObject) Then
            'rien à faire
        Else
            m_oTables.Add oTable.Name
        End If
    Next
End Sub
 
Private Sub Class_Terminate()
'---------------------------------------------------------------------------------------
' Procedure : Class_Terminate
' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
' Date      : 24/03/2011
' Objet     : Destructeur
'               Détruit l'objet myControlTables
'---------------------------------------------------------------------------------------
'
    Set m_oTables = Nothing
End Sub
 
Function Tables() As myControlTables
'---------------------------------------------------------------------------------------
' Procedure : Tables
' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
' Date      : 24/03/2011
' Objet     : Renvoie l'objet myControlTables
'---------------------------------------------------------------------------------------
'
    Set Tables = m_oTables
End Function
 
Function ReportsTo(a_sFileName As String) As Boolean
'---------------------------------------------------------------------------------------
' Procedure : ReportsTo
' Auteur    : Maxence HUBICHE (http://www.1formaxion.com)
' Date      : 24/03/2011
' Objet     : Génère un fichier texte avec le rapport complet
'---------------------------------------------------------------------------------------
'
    Dim oFSO                  As Scripting.FileSystemObject
    Dim oFile                 As Scripting.TextStream
    Dim iCountTables          As Long
    Dim iCountFields          As Long
 
    Set oFSO = New Scripting.FileSystemObject
    Set oFile = oFSO.CreateTextFile(a_sFileName, True, True)
 
    oFile.WriteLine String(80, "=")
    oFile.WriteLine "DEBUT DU RAPPORT"
    oFile.WriteLine "Auteur : " & Environ("UserName")
    oFile.WriteLine "Date : " & Now()
    oFile.WriteLine "Base de données : " & CurrentDb.Name
    oFile.WriteLine String(80, "=")
    oFile.WriteBlankLines 3
 
    For iCountTables = 1 To m_oTables.Count
        oFile.WriteLine String(80, "-")
        oFile.WriteLine "Table : " & m_oTables.Item(iCountTables).NomTable
        oFile.WriteLine String(80, "-")
        oFile.WriteLine "Champ" & vbTab & "DataType" & vbTab & "Taille" & vbTab & "Max"
        For iCountFields = 1 To m_oTables.Item(iCountTables).Fields.Count
            oFile.WriteLine m_oTables.Item(iCountTables).Fields.Item(iCountFields).GetRow(vbTab)
        Next
    Next
 
    oFile.Close
End Function

Voilà...
Et maintenant, comment on se sert de tout cela ?
Rien de plus simple !

Il te suffit d'un simple module, avec quelques lignes de code dedans ...
Par exemple :
Code :
1
2
3
4
5
6
Sub test()
    Dim x As myControl
    Set x = New myControl
    x.ReportsTo "c:\ctl.txt"
    msgbox "Terminé !"
End Sub
Et puis alors tu vas regarder ce que tu obtiens dans ton fichier c:\ctl.txt


vàlà :p
__________________
1formaxion, une formation de qualité, des formateurs compétents
Mes tutoriels et vidéos :
Tableaux croisés dynamiques, Access les Bases, et les autres !
Maxence HUBICHE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 09h13   #3
Membre habitué
 
Homme
Inscription : août 2007
Messages : 142
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : août 2007
Messages : 142
Points : 109
Points : 109
Bonjour,
Je voulais tester ce joli code en version antérieure


Références :
Microsoft Scripting Runtime -> OK
Microsoft Office x.xx Access Database Engine Object Library
n'existe que pour AC-2007 ?

Quels est le nom du fichier de la référence "Microsoft Office x.xx Access Database Engine Object Library" ?

équivalence dans les versions précédentes ?

Merci.

FEVEC
fevec est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 10h03   #4
Membre Expert
 
Homme Michel
Ingénieur développement logiciels
Inscription : mai 2005
Messages : 1 584
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2005
Messages : 1 584
Points : 2 143
Points : 2 143
Super exercice Maxence

cependant, en Access 2003 et testant sur une base dont certaines colonnes (texte ou numérique) ne sont pas alimentées, j'ai été amené à corriger :

Code :
1
2
3
4
5
6
7
8
9
Dans la classe myControlTable
dans la fonction MaxSize
sous  Case dbText :
...
ai modifié la ligne en   MaxSize = Nz(orst.Fields(0).Value, 0)
 
sous  case Case dbByte, dbInteger ...
...
ai modifié la ligne en   stemp = Hex$(Nz(orst.Fields(0).Value, 0))
Enfin, dans myControlField
dans Public Property Get DataTypeName()
j'ai mis en commentaire le récent type dbAttachement

Merci encore
J'apprécie tout particulièrement la donnée max (sans jeu de mots cette fois)
__________________
"tout le monde veut sauver la planète, mais personne ne veut descendre les poubelles." J Yanne
micniv est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 10h50   #5
Rédacteur

 
Avatar de Maxence HUBICHE
 
Homme Maxence HUBICHE
Formateur et Développeur - Conseil en Informatique
Inscription : juin 2002
Messages : 3 687
Détails du profil
Informations personnelles :
Nom : Homme Maxence HUBICHE
Âge : 42
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Formateur et Développeur - Conseil en Informatique

Informations forums :
Inscription : juin 2002
Messages : 3 687
Points : 6 516
Points : 6 516
Envoyer un message via MSN à Maxence HUBICHE Envoyer un message via Skype™ à Maxence HUBICHE
Les références à DAO 3.6
mais attention dbAttachement n'existe pas pour les V antérieures à 2007 !

Citation:
Envoyé par fevec Voir le message
Bonjour,
Je voulais tester ce joli code en version antérieure


Références :
Microsoft Scripting Runtime -> OK
Microsoft Office x.xx Access Database Engine Object Library
n'existe que pour AC-2007 ?

Quels est le nom du fichier de la référence "Microsoft Office x.xx Access Database Engine Object Library" ?

équivalence dans les versions précédentes ?

Merci.

FEVEC
__________________
1formaxion, une formation de qualité, des formateurs compétents
Mes tutoriels et vidéos :
Tableaux croisés dynamiques, Access les Bases, et les autres !
Maxence HUBICHE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 14h09   #6
Membre habitué
 
Homme
Inscription : août 2007
Messages : 142
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : août 2007
Messages : 142
Points : 109
Points : 109
Bonjour,
J'ai fais les corrections proposées par Micniv.
Je suis en Access97
J'ai bien la référence vers DAO 3.6

Lors de la compilation
j'ai une erreur Type ActiveX non géré dans VisualBasic sur la ligne
Code :
Public DataType               As DAO.DataTypeEnum
du module de classe MyControlField

Une petite piste ?

Ou est ce définitivement foutu pour moi dans cette version d'Access?

cordialement,
fevec
fevec est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 19h29   #7
Membre Expert
 
Homme Michel
Ingénieur développement logiciels
Inscription : mai 2005
Messages : 1 584
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2005
Messages : 1 584
Points : 2 143
Points : 2 143
bonjour, Fevec
Avec Access 97, essaie la bibliotheque DAO 3.5
(plutot que la 3.6 qui est sorti plus tard, avec Access 2000)
Mais il est vrai que j'ai relégué ACC97 depuis un lustre ...

__________________
"tout le monde veut sauver la planète, mais personne ne veut descendre les poubelles." J Yanne
micniv est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 08h14   #8
Membre habitué
 
Homme
Inscription : août 2007
Messages : 142
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : août 2007
Messages : 142
Points : 109
Points : 109
Bonjour,
Le pb de "DAO.DataTypeEnum" doit être lié à DAO 3.5

En access 2002 et DA0 3.6 ..C'est OK
Terminé pour moi

Merci à Maxence pour ce super code.

fevec
fevec est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h03.


 
 
 
 
Partenaires

Hébergement Web