OVH Cloud OVH Cloud

copier une table

3 réponses
Avatar
Alexis
Bonjour, je dois copier "table local" de "base local" vers "table online"
"base online", c'est exactement les memes tables et transferer certaines
donneés(lignes-selon une condition) et non toutes de la table local vers
online avec un bouton dans mon menu general.

merci de votre aide.

3 réponses

Avatar
joyeux atchoum
Bonjour

Il existe une solution en VBA, en pilotant via le code les 2 bases :

Dim tdf As TableDef
Dim strDBDest As String 'Chemin de la base distante
Dim wrkDefault As Workspace
Dim dbsNew As Database

' Obtient l'objet Workspace par défaut.
Set wrkDefault = DBEngine.Workspaces(0)
' Ouvre une base de données
'Set dbsNew = wrkDefault.CreateDatabase(strDBDest, dbLangGeneral,
dbEncrypt)
Set dbsNew = wrkDefault.OpenDatabase(strDBDest, dbEncrypt, ,
dbLangGeneral)

'consulte les tables sur la base locale
For Each tdf In CurrentDb.TableDefs
'Ignore les tables du systeme
If (Left(tdf.Name, 4) <> "Msys") Then
'copie et renomme toute les tables
DoCmd.TransferDatabase acExport, "Microsoft Access",
strDBDest,acTable, tdf.Name, tdf.Name & 1
'copie les données
dbsNew.Execute ("SELECT * INTO " & tdf.Name & " FROM " &
tdf.Name & 1)
'suppression de la table liée
dbsNew.TableDefs.Delete (tdf.Name & 1)
End If
Next


Ce code ouvre une base distante copie les tables sous un autre nom
depuis la base locale. Si la table est liée dans en local elle le sera
aussi dans la base distante.
Le code execute une requete SQL pour copier les données en dur sur la
base distante.
Tu peux personnaliser la requete en fonction des besoins
Et au final tu supprimes la table qui à servi de source à la requete
dans la table distante.

Ce code est surement à optimiser mais ça peut donner une idée dans
les grandes lignes.

ja
qui aimerait avoir des semaines de 3 jours plus souvent.
Avatar
Mwa
Salut

Regardes du côté du SQL la clause IN.

Function CopieServeur As Boolean
On Error Resume Next

Dim vBdd As DAO.Databse, vCheminLocal as String, vSql As String

vCheminLocal = Application.CurrentProject.Path & "" & Application.CurrentProject.Name

'Tu ouvres un lien avec ta base distante (login et mdp)
Set vBdd = OpenDatabase(vCheminDistant, , True)

If Err.Number = 0 Then
vSql = "INSERT INTO TableDistante (Ch1,Ch2,...) " & _
"SELECT Ch1,Ch2,... IN " & vCheminLocal & " FROM TableLocale WHERE ...;"
vBdd.Execute vSql, dbFailOnError
If Err.Number = 0 Then
CopieServeur = True
Else
Err.Clear
MsgBox "Copie ratée avec succès.", vbCritical + vbOkOnly, "Erreur"
End If
vBdd.Close
End If

Set vBdd= Nothing
End Function

Mwa

Bonjour, je dois copier "table local" de "base local" vers "table online"
"base online", c'est exactement les memes tables et transferer certaines
donneés(lignes-selon une condition) et non toutes de la table local vers
online avec un bouton dans mon menu general.

merci de votre aide.


Avatar
joyeux atchoum
S'lt

Pas mal le coup de la clause IN, je ne connaissais pas. Je vais garder
ça sous le coude pour une prochaine fois.

ja
qui apprend encore et encore