Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
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 27/04/2007, 10h25   #1
Membre habitué
 
Avatar de alexmorel
 
Inscription : septembre 2003
Messages : 196
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : septembre 2003
Messages : 196
Points : 120
Points : 120
Envoyer un message via MSN à alexmorel
Par défaut Comment reconnaitre une table système

Bonjour,

Je cherche comment reconnaître une table système sous ACCESS en vba

J'ai trouvé une solution bassée sur le nom

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
 
'Savoir si c'est une table systeme
Private Function IsTableSystem(Table As String) As Boolean
    Const conSystemObject = &H80000000
    Const conSystemObject2 = &H2
    Dim Db As DAO.Database
    Dim Tbl As DAO.TableDef
    Set Db = CurrentDb
    Set Tbl = Db.TableDefs(Table)
    If (Left(Tbl.Name, 4) = "MSys") Or _
        (Left(Tbl.Name, 4) = "USys") Then
        IsTableSystem = True
    Else
        If (Tbl.Attributes And conSystemObject) = conSystemObject Then
            IsTableSystem = True
        Else
            If (Tbl.Attributes And conSystemObject2) = conSystemObject2 Then
                IsTableSystem = True
            End If
        End If
    End If
End Function
 
 
Sub exercice2()
    Dim Obj As AccessObject
    For Each Obj In CurrentData.AllTables
        If Not IsTableSystem(Obj.Name) Then
            MsgBox Obj.Name
        End If
    Next Obj
End Sub
le problème c'est que si un utilisateur met un nom qui commence par "MSys" ou "USys" ?

Donc comment reconnaitre a coup sur une table système ???


je vous remerci d'avance


Alex
__________________
A.Morel
alexmorel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2007, 18h08   #2
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
bonsoir

Tu peux tester cette procédure (utilisation du modèle ADO)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    Dim Conn As ADODB.Connection
    Dim rsT As ADODB.Recordset
 
    Set Conn = New ADODB.Connection
    With Conn
        .Provider = "Microsoft.JET.OLEDB.4.0"
        .Open "C:\MaBase_V01.mdb"
    End With
 
    Set rsT = Conn.OpenSchema(adSchemaTables)
 
    While Not rsT.EOF
        If rsT.Fields("TABLE_TYPE") = "SYSTEM TABLE" Then _
            Debug.Print rsT.Fields("TABLE_NAME")
        rsT.MoveNext
    Wend
 
    Set rsT = Nothing
    Conn.Close
    Set Conn = Nothing


michel
SilkyRoad 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 13h37.


 
 
 
 
Partenaires

Hébergement Web