Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Creation de table vba


Sujet :

Access

  1. #1
    Membre régulier
    Creation de table vba
    bonjour,

    J'éssaie de créer une table via in bouton.
    J'ai in module:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Option Compare Database
    Option Explicit
     
    Function TableExiste(db As DAO.Database, ByVal strTable As String) As Boolean
    Dim tdf As DAO.TableDef
    Dim existe As Boolean
     
        Set db = CurrentDb
        ' La table n'existe pas...
        existe = False
     
        ' Parcourir toutes les tables de la base
        For Each tdf In db.TableDefs
          If tdf.Name = strTable Then
            ' La table a été trouvée...
            existe = True
            Exit For
          End If
        Next
        TableExiste = existe
    End Function


    et ensuite évènement sur click bouton:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Private Sub AddTable_Click()
     
    'Creation Table
        Dim rs As DAO.Recordset, rsPN As DAO.Recordset, rs1 As Recordset
        Dim sql As String
     
        Set db = CurrentDb
     
    ' Suppression des tables temporaires
            If TableExiste(db, "Matable") Then
                DoCmd.SetWarnings False
                CurrentDb.Execute "DROP TABLE Matable;"
                DoCmd.SetWarnings True
            End If
     
    ' Création de la table temporaire (MaTable
            sql = "CREATE TABLE MaTable (Id AUTOINCREMENT PRIMARY KEY, PN CHAR(50), Description CHAR(50)"
            sql = sql & ", PN_Height Double, PN_Lenght Double, PN_Width Double, PN_Weigth Double, CubicMeterGross Double, HazmetCode CHAR(50));"
            CurrentDb.Execute (sql)
     
     
    End Sub

    quand je clic j'ai un message d'erreur.

    Compile errer:
    "Expected variable or procedure, not module"
    le champ "TableExiste" dans la ligne
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
            If TableExiste(db, "Matable") Then

    est surligné mais pas en jaune, en noir.
    c'est la ligne:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Private Sub AddTable_Click()

    qui passe en jaune!

    Merci
    Totor

  2. #2
    Membre régulier
    Oups!
    Comment faire pour basculer mon sujet dans la partie IHM du forum?

    Erreur... désolé!

    Totor

  3. #3
    Membre expert
    Salut
    Autant aller à l'essentiel, la supprimer si elle existe
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Function Delete_Table(NomTable As String) As Boolean
        Dim dbs As DAO.Database
        Dim tbl As DAO.TableDef
        Delete_Table = False
        Set dbs = CurrentDb
        For Each tbl In dbs.TableDefs
            If tbl.Name = NomTable Then
                dbs.TableDefs.Delete (tbl.Name)
                Delete_Table = True
                Exit Function
            Else
                Delete_Table = False
            End If
        Next tbl
    End Function


    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub AddTable_Click()
        Dim tbl As String: Dim sql As String
        tbl = "Matable"
        Delete_Table (tbl)
     
    ' Création de la table temporaire (MaTable
            sql = "CREATE TABLE MaTable (Id AUTOINCREMENT PRIMARY KEY, PN CHAR(50), Description CHAR(50)"
            sql = sql & ", PN_Height Double, PN_Lenght Double, PN_Width Double, PN_Weigth Double, CubicMeterGross Double, HazmetCode CHAR(50));"
            CurrentDb.Execute (sql)
    RefreshDatabaseWindow
    End Sub

    Sinon dans AddTable_Click() il manque Dim db As Database !

  4. #4
    Membre régulier
    IMPEC !!

    Merci hyperion13.

###raw>template_hook.ano_emploi###