Synchroniser des données de plusieurs tables access entres-elles
cs_globule
Messages postés327Date d'inscriptionmardi 8 octobre 2002StatutMembreDernière intervention 6 octobre 2010
-
17 oct. 2005 à 15:19
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 2006
-
18 oct. 2005 à 12:55
Bonjour,
Je cherche a synchroniser des données de plusieurs tables access entres-elles
Les tables sont identiques : La table source se trouve dans un repertoire et la table destination dans un autre
Je cherche une routine qui lit tous les champs d'un table et qui les copies automatiquement dans l'autre. Je voudrais que cela soit automatique et que je n'ai pas besoin d'indiqué le nom des champs (car sinon, quand la table va evoluer je vais devoir revoir ces routines d'export). L'autre petit probleme c'est que cette routine ne doit pas exporter tous les enregistrements, mais seulement ceux repondant à un critere (par exemple Code=5)
acecel
Messages postés140Date d'inscriptionjeudi 6 mai 2004StatutMembreDernière intervention14 octobre 2006 18 oct. 2005 à 10:41
Dim xField as Field
Dim xRecordsetSource as recordset
Dim xRecordsetCible as recordset
Set xRecordset MaBaseSource.OpenRecordset("Select * from MaTable Where Code 5",dbOpenDynaset)
Set xRecordsetCible = MaBaseCible.OpenRecordset("Select * from MaTable",dbOpenDynaset)
While Not xRecordsetSource.EOF
xRecordsetCible.AddNew
For Each xField In MaBaseSource.Fields
xRecordsetCible(xField.Name) = xField.Value
Next xField
xRecordsetCible.Update
xRecordsetSource.MoveNext
Wend
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 18 oct. 2005 à 12:55
Salut, 2 ex, l'un en DAO, l'autre en ADO.
Je n'aime pas trop les on error resume next, il faudrait un traitement d'erreur un peu plus développé. Là j'ai supposé que la table cible n'existait pas et ça peut suffire mais il peut y en avoir d'autres, je te laisse le soin de gérer ça.
Private Sub CommandDAO_Click()
Dim dbSource As Database
Dim dbCible As Database
' Destruction de la TableCible si elle existe
Set dbCible = opendatabase("c:\temp\bdCible.mdb")
On Error Resume Next
dbCible.Execute "DROP TABLE TableCible"
On Error GoTo 0
dbCible.Close
Set dbCible = Nothing
' Création de la TableCible
Set dbSource = opendatabase("c:\temp\bdSource.mdb")
dbSource.Execute "SELECT * INTO TableCible IN 'c:\temp\bdCible.mdb' FROM TableSource WHERE Code = 5"
dbSource.Close
Set dbSource = Nothing
End Sub
Private Sub Command_ADO_Click()
Dim dbSource As New ADODB.Connection
Dim dbCible As New ADODB.Connection
' Destruction de la TableCible si elle existe
dbCible.Open "Provider=" & "Microsoft.Jet.OLEDB.4.0;Data Source=" & "c:\temp\bdCible.mdb;"
On Error Resume Next
dbCible.Execute "DROP TABLE TableCible"
On Error GoTo 0
dbCible.Close
Set dbCible = Nothing
' Création de la TableCible
dbSource.Open "Provider=" & "Microsoft.Jet.OLEDB.4.0;Data Source=" & "c:\temp\bdSource.mdb;"
dbSource.Execute "SELECT * INTO TableCible IN 'c:\temp\bdCible.mdb' FROM TableSource WHERE Code = 5"
dbSource.Close
Set dbSource = Nothing
End Sub
-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?