de laurent ga » Jeu 27 Mai 2010 12:59
dans access, l'importation de table via odbc fonctionne.
Je pense que vous prendrez comme importation "pas de table liée" (cad que les modifs de la table sous access ne soient pas répercutéés dans Sage).
Vous pouvez enregistrer l'importation et la relancer quand vous voulez via le gestionnaire de taches de Outlook.
Par contre, lors d'une nouvelle importation votre table la table F_DOCLIGNE ne va pas etre écrasée par la nouvelle.
La nouvelle table va s'appeler F_DOCLIGNE1.
Si il y a des requetes, des liaisons entre les tables elles ne suivront évidemment pas la nouvelle table.
La procédure est d'effacer les champs de l'ancienne table, remplir les champs avec la nouvelle table, et supprimer la table précédemment importée.
Voici qq lignes de codes que l'on ma gentiment donné sur un autre forum et qui seront à adapter à votre convenance:
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
Ligne 100 pack + / V10.01
V15 en démonstration