relancer une requete création de table en vba access
Bonjour à tous et toutes
J'ai un formulaire qui contient une liste box dont les données sont issu d'une table "T_TEMPORAIRE" qui elle même provient d'une requête création de table "R_MAJ_TEMPORAIRE".
J'ai inséré un bouton de commande qui appelle une procédure MiseAjour qui contient les différentes fonctions pour créer cette table "T_TEMPORAIRE" ( cf ci-dessous)
Tout fonctionne bien lorsque je lance la première fois la procédure ( les données s'affichent dans ma liste box).
Mais lorsque je relance la procédure une deuxième fois la table "T_TEMPORAIRE" pour avoir des autres données, j'ai un message d'erreur qui s'affiche :
Citation:
Erreur d'exécution 3211
le moteur de base de données n'a pa pu verrouiller la table T_TEMPORAIRE" car elle est déjà utilisé par une autre personne ou un autre processus"
je ne sais pas comment fermer cette table pour relancer la requête création de table
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
| Option Compare Database
Public Sub MiseAjour()
Dim stDocName As String
Dim stLinkCriteria As String
If ExisteTable("T_TEMPORAIRE") Then ' Si la table recherche existe
Call Delete_Tbl("T_TEMPORAIRE") ' on la supprime
End If
LanceRequeteCreation (R_MAJ_TEMPORAIRE) ' lancement requete creation de la nouvelle table
stDocName = "Menu"
DoCmd.OpenForm stDocName, , , stLinkCriteria ' Ouverture du formulaire
End Sub
Public Function ExisteTable(T_TEMPORAIRE As String) As Boolean ' Fonction de test existance table
'Pour fonctionner ce code nécessite la référence
' - Microsoft DAO X Object Library
On Error GoTo Err
Dim oDb As DAO.Database
Dim oQdf As DAO.TableDef
'Accède à la base de données courante
Set oDb = CurrentDb
Set oQdf = oDb.TableDefs(T_TEMPORAIRE)
'Retourne Vrai
ExisteTable = True
fin:
'Libère les objets
Set oDb = Nothing
Set oQdf = Nothing
Exit Function
Err:
'Remonte toutes les erreurs différents de l'erreur 3265
'(la requête n'existe pas)
If Err.Number <> 3265 Then
Err.Raise Err.Number, Err.Source, Err.Description
End If
Resume fin
End Function
'---------------------------------------------------------------------------------------
'Fonction de suppression d'une table
'---------------------------------------------------------------------------------------
Public Sub Delete_Tbl(ByVal T_TEMPORAIRE As String)
Dim oDb As DAO.Database
Set oDb = CurrentDb
oDb.TableDefs.Delete "T_TEMPORAIRE"
End Sub
'---------------------------------------------------------------------------------------
'Fonction de création d'une table
'---------------------------------------------------------------------------------------
Public Sub LanceRequeteCreation(R_MAJ_TEMPORAIRE As String) ' lance les requetes creation de table
Dim ReqFind As DAO.QueryDef
Set ReqFind = CurrentDb.QueryDefs("R_MAJ_TEMPORAIRE") ' lancement requete creation table
ReqFind.Execute ' execution requete
Set ReqFind = Nothing ' fermeture
End Sub |