Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ACCESS 2007 importation ODBC et mise à jour

2 réponses
Avatar
laurent
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

2 réponses

Avatar
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

'DoCmd.Quit
' Application.Quit acQuitSaveAll
Application.CloseCurrentDatabase

On Error GoTo 0
Exit Sub

Importer_Tables_Error:

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

Avatar
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