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.
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
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.
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.
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.
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
'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.
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
'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.
'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.
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
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.