Bonjour à tous,
J'ai fait un import ODBC via "importer les données source dans une nouvelle
table de la base active".
J'ai fait ce choix car je veux travailler sur cette table sans que les
modifs se répercutent sur la table source qui vient de l'import.
J'ai enregistré l'importation.
Quand j'exécute l'importation enregistrée, j'ai bien une table de plus qui
prends le même nom que l'origine suivie d'un numéro.
Ce que je souhaite c'est que cette nouvelle table prenne la place de celle
d'avant et que les requetes et états précédemment faits continuent de
fonctionner.
merci à vous
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Thierry
Bonjour, Voici une procédure qu'un pro d'Access (merci db de Nantes... ) m'avait communiqué car j'avais le même pb que vous. Il faudra adapter cette procédure à votre cas ( tous les noms des tables que j'importe commencent par dbaa85).
Bon courage
Sub Importer_Tables() Dim Db As DAO.Database Dim rst As DAO.Recordset Dim tbd As DAO.TableDef Dim cOldName As String
On Error GoTo Importer_Tables_Error
Set Db = CurrentDb DoCmd.SetWarnings (False)
'importer les tables à partir de la procédure enregistrée « importation2 » DoCmd.RunSavedImportExport ("importation2")
For Each tbd In Db.TableDefs
If Right(tbd.Name, 1) = "1" And Left(tbd.Name, 6) = "dbaa85" Then 'Si le nom de la table se termine par '1' et commence par 'dbaa85" cOldName = Left(tbd.Name, Len(tbd.Name) - 1)
'cOldName : nom de la table moins le "1" final
If (DCount("*", "MSysObjects", "Name='" & cOldName & "'") > 0) Then
'Si cOldName existe, on supprime ses enregistrements
Db.Execute "delete * from " & cOldName & ""
'et on rajoute les ENREGISTREMENTS de la table en cours (qui se termine par 1)
Db.Execute "INSERT INTO " & cOldName & " SELECT * FROM " & tbd.Name
'Supprimer les TABLES nouvellement importées (qui se terminent par 1 : exemple dbaa85_ind1 ) Db.Execute "drop table " & tbd.Name
End If End If Next
rst.Close Db.Close
Set rst = Nothing Set Db = Nothing
DoCmd.SetWarnings (True)
MsgBox "Mise à jour des tables terminée !" & vbCrLf & vbCrLf & "La base va être fermée automatiquement pour compactage..." 'Pour fermer la base de données
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure Importer_Tables of Module Import_Tables"
End Sub
"laurent" a écrit dans le message de news:
Bonjour à tous, J'ai fait un import ODBC via "importer les données source dans une nouvelle table de la base active". J'ai fait ce choix car je veux travailler sur cette table sans que les modifs se répercutent sur la table source qui vient de l'import. J'ai enregistré l'importation.
Quand j'exécute l'importation enregistrée, j'ai bien une table de plus qui prends le même nom que l'origine suivie d'un numéro.
Ce que je souhaite c'est que cette nouvelle table prenne la place de celle d'avant et que les requetes et états précédemment faits continuent de fonctionner. merci à vous
Bonjour,
Voici une procédure qu'un pro d'Access (merci db de Nantes... ) m'avait
communiqué
car j'avais le même pb que vous.
Il faudra adapter cette procédure à votre cas ( tous les noms des tables que
j'importe
commencent par dbaa85).
Bon courage
Sub Importer_Tables()
Dim Db As DAO.Database
Dim rst As DAO.Recordset
Dim tbd As DAO.TableDef
Dim cOldName As String
On Error GoTo Importer_Tables_Error
Set Db = CurrentDb
DoCmd.SetWarnings (False)
'importer les tables à partir de la procédure enregistrée «
importation2 »
DoCmd.RunSavedImportExport ("importation2")
For Each tbd In Db.TableDefs
If Right(tbd.Name, 1) = "1" And Left(tbd.Name, 6) = "dbaa85" Then
'Si le nom de la table se termine par '1' et commence par
'dbaa85"
cOldName = Left(tbd.Name, Len(tbd.Name) - 1)
'cOldName : nom de la table moins le "1" final
If (DCount("*", "MSysObjects", "Name='" & cOldName & "'") > 0)
Then
'Si cOldName existe, on supprime ses enregistrements
Db.Execute "delete * from " & cOldName & ""
'et on rajoute les ENREGISTREMENTS de la table en cours (qui
se termine par 1)
Db.Execute "INSERT INTO " & cOldName & " SELECT * FROM " &
tbd.Name
'Supprimer les TABLES nouvellement importées (qui se
terminent par 1 : exemple dbaa85_ind1 )
Db.Execute "drop table " & tbd.Name
End If
End If
Next
rst.Close
Db.Close
Set rst = Nothing
Set Db = Nothing
DoCmd.SetWarnings (True)
MsgBox "Mise à jour des tables terminée !" & vbCrLf & vbCrLf & "La base
va être fermée automatiquement pour compactage..."
'Pour fermer la base de données
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure
Importer_Tables of Module Import_Tables"
End Sub
"laurent" <laurent@discussions.microsoft.com> a écrit dans le message de
news:9648F500-4CFC-472F-98AF-7B9D0A5310F6@microsoft.com...
Bonjour à tous,
J'ai fait un import ODBC via "importer les données source dans une
nouvelle
table de la base active".
J'ai fait ce choix car je veux travailler sur cette table sans que les
modifs se répercutent sur la table source qui vient de l'import.
J'ai enregistré l'importation.
Quand j'exécute l'importation enregistrée, j'ai bien une table de plus qui
prends le même nom que l'origine suivie d'un numéro.
Ce que je souhaite c'est que cette nouvelle table prenne la place de celle
d'avant et que les requetes et états précédemment faits continuent de
fonctionner.
merci à vous
Bonjour, Voici une procédure qu'un pro d'Access (merci db de Nantes... ) m'avait communiqué car j'avais le même pb que vous. Il faudra adapter cette procédure à votre cas ( tous les noms des tables que j'importe commencent par dbaa85).
Bon courage
Sub Importer_Tables() Dim Db As DAO.Database Dim rst As DAO.Recordset Dim tbd As DAO.TableDef Dim cOldName As String
On Error GoTo Importer_Tables_Error
Set Db = CurrentDb DoCmd.SetWarnings (False)
'importer les tables à partir de la procédure enregistrée « importation2 » DoCmd.RunSavedImportExport ("importation2")
For Each tbd In Db.TableDefs
If Right(tbd.Name, 1) = "1" And Left(tbd.Name, 6) = "dbaa85" Then 'Si le nom de la table se termine par '1' et commence par 'dbaa85" cOldName = Left(tbd.Name, Len(tbd.Name) - 1)
'cOldName : nom de la table moins le "1" final
If (DCount("*", "MSysObjects", "Name='" & cOldName & "'") > 0) Then
'Si cOldName existe, on supprime ses enregistrements
Db.Execute "delete * from " & cOldName & ""
'et on rajoute les ENREGISTREMENTS de la table en cours (qui se termine par 1)
Db.Execute "INSERT INTO " & cOldName & " SELECT * FROM " & tbd.Name
'Supprimer les TABLES nouvellement importées (qui se terminent par 1 : exemple dbaa85_ind1 ) Db.Execute "drop table " & tbd.Name
End If End If Next
rst.Close Db.Close
Set rst = Nothing Set Db = Nothing
DoCmd.SetWarnings (True)
MsgBox "Mise à jour des tables terminée !" & vbCrLf & vbCrLf & "La base va être fermée automatiquement pour compactage..." 'Pour fermer la base de données
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure Importer_Tables of Module Import_Tables"
End Sub
"laurent" a écrit dans le message de news:
Bonjour à tous, J'ai fait un import ODBC via "importer les données source dans une nouvelle table de la base active". J'ai fait ce choix car je veux travailler sur cette table sans que les modifs se répercutent sur la table source qui vient de l'import. J'ai enregistré l'importation.
Quand j'exécute l'importation enregistrée, j'ai bien une table de plus qui prends le même nom que l'origine suivie d'un numéro.
Ce que je souhaite c'est que cette nouvelle table prenne la place de celle d'avant et que les requetes et états précédemment faits continuent de fonctionner. merci à vous
laurent
merci pour votre réponse, je lis le vba mais un peu moins le sql. Je vais essayer de comprendre cette sub merci encore
merci pour votre réponse, je lis le vba mais un peu moins le sql.
Je vais essayer de comprendre cette sub
merci encore