Bonjour à tous,
Je repose (en partie) ma question du 28/11 laissée sans réponse...
Access 2007 Format base 2000
J'ai une appli. avec tables dans une base attachée Access.
Par Ex : Application dans C:AppliAppli.mdb, Tables dans
D:TablesTables.mdb, les sauvegardes dans
D:SauvegardesTables2009-12-01.mdb (nom de la base avec la date de
sauvegarde), les archives dans D:ArchivesTables2008.mdb (nom de la base
avec l'année de l'exercice)
En VBA :
J'ai mis en place les fonctionnalités "Sauvegarde/Restauration/Archivage
des tables"
Pas de pb. en sauvegarde (je copie la base D:TablesTables.mdb dans le
dossier D:Sauvegardes), ni pour lire une archive, ni pour revenir à la
base courante (en modifiant les attaches)
En revanche, en restauration (je copie D:SauvegardesTables2009-12-01.mdb
par ex. dans D:Tables et je la renomme Tables.mdb), j'ai qques pb.
(Evidemment, je fais ça "à la volée" et ça engendre qques
dysfonctionnements... ) :
soit Access ne "voit pas" les nouvelles tables (je ne retrouve pas les
enregistrements tels qu'ils étaient),
soit j'ai une erreur du genre "format de base de données inconnu ou
signet inexistant (?)"
J'ai bien essayer de rafraîchir les attaches, rien n'y fait.
Le pb. vient-il du fichier de lock ? (Tables.ldb)
Je suis obligé de fermer/réouvrir l'appli. pour que les modifs. soient
prises en compte.
Si qq1 a une idée, d'avance merci.
jpg
Bonjour à tous,
Je repose (en partie) ma question du 28/11 laissée sans réponse...
Access 2007 Format base 2000
J'ai une appli. avec tables dans une base attachée Access.
Par Ex : Application dans C:AppliAppli.mdb, Tables dans
D:TablesTables.mdb, les sauvegardes dans
D:SauvegardesTables2009-12-01.mdb (nom de la base avec la date de
sauvegarde), les archives dans D:ArchivesTables2008.mdb (nom de la base
avec l'année de l'exercice)
En VBA :
J'ai mis en place les fonctionnalités "Sauvegarde/Restauration/Archivage
des tables"
Pas de pb. en sauvegarde (je copie la base D:TablesTables.mdb dans le
dossier D:Sauvegardes), ni pour lire une archive, ni pour revenir à la
base courante (en modifiant les attaches)
En revanche, en restauration (je copie D:SauvegardesTables2009-12-01.mdb
par ex. dans D:Tables et je la renomme Tables.mdb), j'ai qques pb.
(Evidemment, je fais ça "à la volée" et ça engendre qques
dysfonctionnements... ) :
soit Access ne "voit pas" les nouvelles tables (je ne retrouve pas les
enregistrements tels qu'ils étaient),
soit j'ai une erreur du genre "format de base de données inconnu ou
signet inexistant (?)"
J'ai bien essayer de rafraîchir les attaches, rien n'y fait.
Le pb. vient-il du fichier de lock ? (Tables.ldb)
Je suis obligé de fermer/réouvrir l'appli. pour que les modifs. soient
prises en compte.
Si qq1 a une idée, d'avance merci.
jpg
Bonjour à tous,
Je repose (en partie) ma question du 28/11 laissée sans réponse...
Access 2007 Format base 2000
J'ai une appli. avec tables dans une base attachée Access.
Par Ex : Application dans C:AppliAppli.mdb, Tables dans
D:TablesTables.mdb, les sauvegardes dans
D:SauvegardesTables2009-12-01.mdb (nom de la base avec la date de
sauvegarde), les archives dans D:ArchivesTables2008.mdb (nom de la base
avec l'année de l'exercice)
En VBA :
J'ai mis en place les fonctionnalités "Sauvegarde/Restauration/Archivage
des tables"
Pas de pb. en sauvegarde (je copie la base D:TablesTables.mdb dans le
dossier D:Sauvegardes), ni pour lire une archive, ni pour revenir à la
base courante (en modifiant les attaches)
En revanche, en restauration (je copie D:SauvegardesTables2009-12-01.mdb
par ex. dans D:Tables et je la renomme Tables.mdb), j'ai qques pb.
(Evidemment, je fais ça "à la volée" et ça engendre qques
dysfonctionnements... ) :
soit Access ne "voit pas" les nouvelles tables (je ne retrouve pas les
enregistrements tels qu'ils étaient),
soit j'ai une erreur du genre "format de base de données inconnu ou
signet inexistant (?)"
J'ai bien essayer de rafraîchir les attaches, rien n'y fait.
Le pb. vient-il du fichier de lock ? (Tables.ldb)
Je suis obligé de fermer/réouvrir l'appli. pour que les modifs. soient
prises en compte.
Si qq1 a une idée, d'avance merci.
jpg
Bonjour,
Restauration : je remplace la base "attachée" par une des sauvegardes (mais
sans quitter l'application et c'est là que ça pose problème... évidemment)
Le code est tout simple (le pb. n'est pas là):
Private Sub btRestauration_Click()
Dim NomDossierSauvegarde As String, NomBaseSauvegardée As String,
NomBaseAttachée As String, NomDossierRestauration As String, Msg As String
NomDossierSauvegarde = DLookup("[DossierSauvegarde]",
"[tblParamètresApplication]")
'NomBaseAttachée = fctNomBaseAttachée()
'NomDossierRestauration = fctRépertoireBaseAttachée()
'Par exemple :
NomBaseAttachée = "Tables.mdb"
NomDossierRestauration = "C:Tables"
NomBaseSauvegardée = SélectionBase(NomDossierSauvegarde)
If NomBaseSauvegardée = "" Then Exit Sub
If CopieBase(NomBaseSauvegardée, NomBaseAttachée, NomDossierRestauration)
Then
Msg = "Restauration des tables : " & MSG_OPERATION_OK & vbCrLf
'Pour l'instant... (26/11/2009)
Msg = Msg & "L'application doit être fermée pour que la restauration
soit prise en compte." & vbCrLf
Msg = Msg & "Cliquez sur OK pour continuer."
MsgBox Msg, vbOKOnly, ""
DoCmd.Quit
Else
Msg = "Erreur de Restauration."
MsgBox Msg, vbCritical + vbOKOnly, ""
End If
End Sub
Public Function SélectionBase(DossierParDéfaut As String) As String
Dim Fd As FileDialog, FiltreFichier As String
SélectionBase = ""
Set Fd = Application.FileDialog(msoFileDialogFilePicker)
With Fd
.Title = "Sélection d'une base Access"
.InitialView = msoFileDialogViewDetails
.AllowMultiSelect = False
.InitialFileName = DossierParDéfaut
FiltreFichier = "*.mdb; *.accdb"
.Filters.Clear
.Filters.Add "Bases", FiltreFichier
If .Show Then
SélectionBase = .SelectedItems(1)
End If
End With
Set Fd = Nothing
End Function
Public Function CopieBase(NomBaseSource As String, NomBaseDestination As
String, DossierDestination As String) As Boolean
Dim oFs As Scripting.FileSystemObject, Msg As String
CopieBase = True
Set oFs = CreateObject("Scripting.FileSystemObject")
On Error GoTo Err_CopieBase
With oFs
.CopyFile NomBaseSource, DossierDestination & NomBaseDestination, True
End With
Exit_CopieBase:
Set oFs = Nothing
Exit Function
Err_CopieBase:
Msg = "Erreur n° " & Err.Number & vbCrLf
Msg = Msg & Err.DESCRIPTION
MsgBox Msg, vbCritical + vbOKOnly, ""
CopieBase = False
Resume Exit_CopieBase
End Function
Donc, ma question est la suivante : comment peut-on faire ça sans quitter
l'application ? D'ailleurs est-ce possible ?
Merci d'avance,
Bonjour,
Restauration : je remplace la base "attachée" par une des sauvegardes (mais
sans quitter l'application et c'est là que ça pose problème... évidemment)
Le code est tout simple (le pb. n'est pas là):
Private Sub btRestauration_Click()
Dim NomDossierSauvegarde As String, NomBaseSauvegardée As String,
NomBaseAttachée As String, NomDossierRestauration As String, Msg As String
NomDossierSauvegarde = DLookup("[DossierSauvegarde]",
"[tblParamètresApplication]")
'NomBaseAttachée = fctNomBaseAttachée()
'NomDossierRestauration = fctRépertoireBaseAttachée()
'Par exemple :
NomBaseAttachée = "Tables.mdb"
NomDossierRestauration = "C:Tables"
NomBaseSauvegardée = SélectionBase(NomDossierSauvegarde)
If NomBaseSauvegardée = "" Then Exit Sub
If CopieBase(NomBaseSauvegardée, NomBaseAttachée, NomDossierRestauration)
Then
Msg = "Restauration des tables : " & MSG_OPERATION_OK & vbCrLf
'Pour l'instant... (26/11/2009)
Msg = Msg & "L'application doit être fermée pour que la restauration
soit prise en compte." & vbCrLf
Msg = Msg & "Cliquez sur OK pour continuer."
MsgBox Msg, vbOKOnly, ""
DoCmd.Quit
Else
Msg = "Erreur de Restauration."
MsgBox Msg, vbCritical + vbOKOnly, ""
End If
End Sub
Public Function SélectionBase(DossierParDéfaut As String) As String
Dim Fd As FileDialog, FiltreFichier As String
SélectionBase = ""
Set Fd = Application.FileDialog(msoFileDialogFilePicker)
With Fd
.Title = "Sélection d'une base Access"
.InitialView = msoFileDialogViewDetails
.AllowMultiSelect = False
.InitialFileName = DossierParDéfaut
FiltreFichier = "*.mdb; *.accdb"
.Filters.Clear
.Filters.Add "Bases", FiltreFichier
If .Show Then
SélectionBase = .SelectedItems(1)
End If
End With
Set Fd = Nothing
End Function
Public Function CopieBase(NomBaseSource As String, NomBaseDestination As
String, DossierDestination As String) As Boolean
Dim oFs As Scripting.FileSystemObject, Msg As String
CopieBase = True
Set oFs = CreateObject("Scripting.FileSystemObject")
On Error GoTo Err_CopieBase
With oFs
.CopyFile NomBaseSource, DossierDestination & NomBaseDestination, True
End With
Exit_CopieBase:
Set oFs = Nothing
Exit Function
Err_CopieBase:
Msg = "Erreur n° " & Err.Number & vbCrLf
Msg = Msg & Err.DESCRIPTION
MsgBox Msg, vbCritical + vbOKOnly, ""
CopieBase = False
Resume Exit_CopieBase
End Function
Donc, ma question est la suivante : comment peut-on faire ça sans quitter
l'application ? D'ailleurs est-ce possible ?
Merci d'avance,
Bonjour,
Restauration : je remplace la base "attachée" par une des sauvegardes (mais
sans quitter l'application et c'est là que ça pose problème... évidemment)
Le code est tout simple (le pb. n'est pas là):
Private Sub btRestauration_Click()
Dim NomDossierSauvegarde As String, NomBaseSauvegardée As String,
NomBaseAttachée As String, NomDossierRestauration As String, Msg As String
NomDossierSauvegarde = DLookup("[DossierSauvegarde]",
"[tblParamètresApplication]")
'NomBaseAttachée = fctNomBaseAttachée()
'NomDossierRestauration = fctRépertoireBaseAttachée()
'Par exemple :
NomBaseAttachée = "Tables.mdb"
NomDossierRestauration = "C:Tables"
NomBaseSauvegardée = SélectionBase(NomDossierSauvegarde)
If NomBaseSauvegardée = "" Then Exit Sub
If CopieBase(NomBaseSauvegardée, NomBaseAttachée, NomDossierRestauration)
Then
Msg = "Restauration des tables : " & MSG_OPERATION_OK & vbCrLf
'Pour l'instant... (26/11/2009)
Msg = Msg & "L'application doit être fermée pour que la restauration
soit prise en compte." & vbCrLf
Msg = Msg & "Cliquez sur OK pour continuer."
MsgBox Msg, vbOKOnly, ""
DoCmd.Quit
Else
Msg = "Erreur de Restauration."
MsgBox Msg, vbCritical + vbOKOnly, ""
End If
End Sub
Public Function SélectionBase(DossierParDéfaut As String) As String
Dim Fd As FileDialog, FiltreFichier As String
SélectionBase = ""
Set Fd = Application.FileDialog(msoFileDialogFilePicker)
With Fd
.Title = "Sélection d'une base Access"
.InitialView = msoFileDialogViewDetails
.AllowMultiSelect = False
.InitialFileName = DossierParDéfaut
FiltreFichier = "*.mdb; *.accdb"
.Filters.Clear
.Filters.Add "Bases", FiltreFichier
If .Show Then
SélectionBase = .SelectedItems(1)
End If
End With
Set Fd = Nothing
End Function
Public Function CopieBase(NomBaseSource As String, NomBaseDestination As
String, DossierDestination As String) As Boolean
Dim oFs As Scripting.FileSystemObject, Msg As String
CopieBase = True
Set oFs = CreateObject("Scripting.FileSystemObject")
On Error GoTo Err_CopieBase
With oFs
.CopyFile NomBaseSource, DossierDestination & NomBaseDestination, True
End With
Exit_CopieBase:
Set oFs = Nothing
Exit Function
Err_CopieBase:
Msg = "Erreur n° " & Err.Number & vbCrLf
Msg = Msg & Err.DESCRIPTION
MsgBox Msg, vbCritical + vbOKOnly, ""
CopieBase = False
Resume Exit_CopieBase
End Function
Donc, ma question est la suivante : comment peut-on faire ça sans quitter
l'application ? D'ailleurs est-ce possible ?
Merci d'avance,
Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
Bonjour,
jero a écrit :Bonjour,
Restauration : je remplace la base "attachée" par une des sauvegardes
(mais sans quitter l'application et c'est là que ça pose problème...
évidemment)
Le code est tout simple (le pb. n'est pas là):
Private Sub btRestauration_Click()
Dim NomDossierSauvegarde As String, NomBaseSauvegardée As String,
NomBaseAttachée As String, NomDossierRestauration As String, Msg As
String
NomDossierSauvegarde = DLookup("[DossierSauvegarde]",
"[tblParamètresApplication]")
'NomBaseAttachée = fctNomBaseAttachée()
'NomDossierRestauration = fctRépertoireBaseAttachée()
'Par exemple :
NomBaseAttachée = "Tables.mdb"
NomDossierRestauration = "C:Tables"
NomBaseSauvegardée = SélectionBase(NomDossierSauvegarde)
If NomBaseSauvegardée = "" Then Exit Sub
If CopieBase(NomBaseSauvegardée, NomBaseAttachée, NomDossierRestauration)
Then
Msg = "Restauration des tables : " & MSG_OPERATION_OK & vbCrLf
'Pour l'instant... (26/11/2009)
Msg = Msg & "L'application doit être fermée pour que la restauration
soit prise en compte." & vbCrLf
Msg = Msg & "Cliquez sur OK pour continuer."
MsgBox Msg, vbOKOnly, ""
DoCmd.Quit
Else
Msg = "Erreur de Restauration."
MsgBox Msg, vbCritical + vbOKOnly, ""
End If
End Sub
Public Function SélectionBase(DossierParDéfaut As String) As String
Dim Fd As FileDialog, FiltreFichier As String
SélectionBase = ""
Set Fd = Application.FileDialog(msoFileDialogFilePicker)
With Fd
.Title = "Sélection d'une base Access"
.InitialView = msoFileDialogViewDetails
.AllowMultiSelect = False
.InitialFileName = DossierParDéfaut
FiltreFichier = "*.mdb; *.accdb"
.Filters.Clear
.Filters.Add "Bases", FiltreFichier
If .Show Then
SélectionBase = .SelectedItems(1)
End If
End With
Set Fd = Nothing
End Function
Public Function CopieBase(NomBaseSource As String, NomBaseDestination As
String, DossierDestination As String) As Boolean
Dim oFs As Scripting.FileSystemObject, Msg As String
CopieBase = True
Set oFs = CreateObject("Scripting.FileSystemObject")
On Error GoTo Err_CopieBase
With oFs
.CopyFile NomBaseSource, DossierDestination & NomBaseDestination,
True
End With
Exit_CopieBase:
Set oFs = Nothing
Exit Function
Err_CopieBase:
Msg = "Erreur n° " & Err.Number & vbCrLf
Msg = Msg & Err.DESCRIPTION
MsgBox Msg, vbCritical + vbOKOnly, ""
CopieBase = False
Resume Exit_CopieBase
End Function
Donc, ma question est la suivante : comment peut-on faire ça sans quitter
l'application ? D'ailleurs est-ce possible ?
Merci d'avance,
Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
Bonjour,
jero a écrit :
Bonjour,
Restauration : je remplace la base "attachée" par une des sauvegardes
(mais sans quitter l'application et c'est là que ça pose problème...
évidemment)
Le code est tout simple (le pb. n'est pas là):
Private Sub btRestauration_Click()
Dim NomDossierSauvegarde As String, NomBaseSauvegardée As String,
NomBaseAttachée As String, NomDossierRestauration As String, Msg As
String
NomDossierSauvegarde = DLookup("[DossierSauvegarde]",
"[tblParamètresApplication]")
'NomBaseAttachée = fctNomBaseAttachée()
'NomDossierRestauration = fctRépertoireBaseAttachée()
'Par exemple :
NomBaseAttachée = "Tables.mdb"
NomDossierRestauration = "C:Tables"
NomBaseSauvegardée = SélectionBase(NomDossierSauvegarde)
If NomBaseSauvegardée = "" Then Exit Sub
If CopieBase(NomBaseSauvegardée, NomBaseAttachée, NomDossierRestauration)
Then
Msg = "Restauration des tables : " & MSG_OPERATION_OK & vbCrLf
'Pour l'instant... (26/11/2009)
Msg = Msg & "L'application doit être fermée pour que la restauration
soit prise en compte." & vbCrLf
Msg = Msg & "Cliquez sur OK pour continuer."
MsgBox Msg, vbOKOnly, ""
DoCmd.Quit
Else
Msg = "Erreur de Restauration."
MsgBox Msg, vbCritical + vbOKOnly, ""
End If
End Sub
Public Function SélectionBase(DossierParDéfaut As String) As String
Dim Fd As FileDialog, FiltreFichier As String
SélectionBase = ""
Set Fd = Application.FileDialog(msoFileDialogFilePicker)
With Fd
.Title = "Sélection d'une base Access"
.InitialView = msoFileDialogViewDetails
.AllowMultiSelect = False
.InitialFileName = DossierParDéfaut
FiltreFichier = "*.mdb; *.accdb"
.Filters.Clear
.Filters.Add "Bases", FiltreFichier
If .Show Then
SélectionBase = .SelectedItems(1)
End If
End With
Set Fd = Nothing
End Function
Public Function CopieBase(NomBaseSource As String, NomBaseDestination As
String, DossierDestination As String) As Boolean
Dim oFs As Scripting.FileSystemObject, Msg As String
CopieBase = True
Set oFs = CreateObject("Scripting.FileSystemObject")
On Error GoTo Err_CopieBase
With oFs
.CopyFile NomBaseSource, DossierDestination & NomBaseDestination,
True
End With
Exit_CopieBase:
Set oFs = Nothing
Exit Function
Err_CopieBase:
Msg = "Erreur n° " & Err.Number & vbCrLf
Msg = Msg & Err.DESCRIPTION
MsgBox Msg, vbCritical + vbOKOnly, ""
CopieBase = False
Resume Exit_CopieBase
End Function
Donc, ma question est la suivante : comment peut-on faire ça sans quitter
l'application ? D'ailleurs est-ce possible ?
Merci d'avance,
Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
Bonjour,
jero a écrit :Bonjour,
Restauration : je remplace la base "attachée" par une des sauvegardes
(mais sans quitter l'application et c'est là que ça pose problème...
évidemment)
Le code est tout simple (le pb. n'est pas là):
Private Sub btRestauration_Click()
Dim NomDossierSauvegarde As String, NomBaseSauvegardée As String,
NomBaseAttachée As String, NomDossierRestauration As String, Msg As
String
NomDossierSauvegarde = DLookup("[DossierSauvegarde]",
"[tblParamètresApplication]")
'NomBaseAttachée = fctNomBaseAttachée()
'NomDossierRestauration = fctRépertoireBaseAttachée()
'Par exemple :
NomBaseAttachée = "Tables.mdb"
NomDossierRestauration = "C:Tables"
NomBaseSauvegardée = SélectionBase(NomDossierSauvegarde)
If NomBaseSauvegardée = "" Then Exit Sub
If CopieBase(NomBaseSauvegardée, NomBaseAttachée, NomDossierRestauration)
Then
Msg = "Restauration des tables : " & MSG_OPERATION_OK & vbCrLf
'Pour l'instant... (26/11/2009)
Msg = Msg & "L'application doit être fermée pour que la restauration
soit prise en compte." & vbCrLf
Msg = Msg & "Cliquez sur OK pour continuer."
MsgBox Msg, vbOKOnly, ""
DoCmd.Quit
Else
Msg = "Erreur de Restauration."
MsgBox Msg, vbCritical + vbOKOnly, ""
End If
End Sub
Public Function SélectionBase(DossierParDéfaut As String) As String
Dim Fd As FileDialog, FiltreFichier As String
SélectionBase = ""
Set Fd = Application.FileDialog(msoFileDialogFilePicker)
With Fd
.Title = "Sélection d'une base Access"
.InitialView = msoFileDialogViewDetails
.AllowMultiSelect = False
.InitialFileName = DossierParDéfaut
FiltreFichier = "*.mdb; *.accdb"
.Filters.Clear
.Filters.Add "Bases", FiltreFichier
If .Show Then
SélectionBase = .SelectedItems(1)
End If
End With
Set Fd = Nothing
End Function
Public Function CopieBase(NomBaseSource As String, NomBaseDestination As
String, DossierDestination As String) As Boolean
Dim oFs As Scripting.FileSystemObject, Msg As String
CopieBase = True
Set oFs = CreateObject("Scripting.FileSystemObject")
On Error GoTo Err_CopieBase
With oFs
.CopyFile NomBaseSource, DossierDestination & NomBaseDestination,
True
End With
Exit_CopieBase:
Set oFs = Nothing
Exit Function
Err_CopieBase:
Msg = "Erreur n° " & Err.Number & vbCrLf
Msg = Msg & Err.DESCRIPTION
MsgBox Msg, vbCritical + vbOKOnly, ""
CopieBase = False
Resume Exit_CopieBase
End Function
Donc, ma question est la suivante : comment peut-on faire ça sans quitter
l'application ? D'ailleurs est-ce possible ?
Merci d'avance,
Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
Salut Michel__D,
Premièrement, merci de répondre (je n'ai pas eu beaucoup de réponses...)Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
J'ai essayé ça (extrait) pour supprimer les liens :
Sub Test()
Dim NbTables As Integer, I As Integer, Table As DAO.TableDef, Chemin As
String
Chemin = "C:$BudgetCETablesBudgetCETablesComptaCE.mdb"
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ""
Table.RefreshLink
End If
Next I
CurrentDb.TableDefs().Refresh 'Utile ?
Stop 'Pour vérifier j'ai fermé la base qui réouvert : aucun changement
'et ça pour rétablir :
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ";DATABASE=" & Chemin
Table.RefreshLink
End If
Next I
End Sub
....mais, apparemment, ça ne change pas grand chose (j'ai toujours les mêmes
tables liées avec le meme chemin..)
donc, apparemment, Table.Connect = "" ne suffit pas.
jpg
"Michel__D" a écrit dans le m
essage de news:Bonjour,
jero a écrit :Bonjour,
Restauration : je remplace la base "attachée" par une des sauvegardes
(mais sans quitter l'application et c'est là que ça pose problème...
évidemment)
Le code est tout simple (le pb. n'est pas là):
Private Sub btRestauration_Click()
Dim NomDossierSauvegarde As String, NomBaseSauvegardée As String,
NomBaseAttachée As String, NomDossierRestauration As String, Msg As
String
NomDossierSauvegarde = DLookup("[DossierSauvegarde]",
"[tblParamètresApplication]")
'NomBaseAttachée = fctNomBaseAttachée()
'NomDossierRestauration = fctRépertoireBaseAttachée()
'Par exemple :
NomBaseAttachée = "Tables.mdb"
NomDossierRestauration = "C:Tables"
NomBaseSauvegardée = SélectionBase(NomDossierSauvegarde)
If NomBaseSauvegardée = "" Then Exit Sub
If CopieBase(NomBaseSauvegardée, NomBaseAttachée, NomDossierRestauration)
Then
Msg = "Restauration des tables : " & MSG_OPERATION_OK & vbCrLf
'Pour l'instant... (26/11/2009)
Msg = Msg & "L'application doit être fermée pour que la restauration
soit prise en compte." & vbCrLf
Msg = Msg & "Cliquez sur OK pour continuer."
MsgBox Msg, vbOKOnly, ""
DoCmd.Quit
Else
Msg = "Erreur de Restauration."
MsgBox Msg, vbCritical + vbOKOnly, ""
End If
End Sub
Public Function SélectionBase(DossierParDéfaut As String) As String
Dim Fd As FileDialog, FiltreFichier As String
SélectionBase = ""
Set Fd = Application.FileDialog(msoFileDialogFilePicker)
With Fd
.Title = "Sélection d'une base Access"
.InitialView = msoFileDialogViewDetails
.AllowMultiSelect = False
.InitialFileName = DossierParDéfaut
FiltreFichier = "*.mdb; *.accdb"
.Filters.Clear
.Filters.Add "Bases", FiltreFichier
If .Show Then
SélectionBase = .SelectedItems(1)
End If
End With
Set Fd = Nothing
End Function
Public Function CopieBase(NomBaseSource As String, NomBaseDestination As
String, DossierDestination As String) As Boolean
Dim oFs As Scripting.FileSystemObject, Msg As String
CopieBase = True
Set oFs = CreateObject("Scripting.FileSystemObject")
On Error GoTo Err_CopieBase
With oFs
.CopyFile NomBaseSource, DossierDestination & NomBaseDestination,
True
End With
Exit_CopieBase:
Set oFs = Nothing
Exit Function
Err_CopieBase:
Msg = "Erreur n° " & Err.Number & vbCrLf
Msg = Msg & Err.DESCRIPTION
MsgBox Msg, vbCritical + vbOKOnly, ""
CopieBase = False
Resume Exit_CopieBase
End Function
Donc, ma question est la suivante : comment peut-on faire ça sans quitter
l'application ? D'ailleurs est-ce possible ?
Merci d'avance,
Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
Salut Michel__D,
Premièrement, merci de répondre (je n'ai pas eu beaucoup de réponses...)
Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
J'ai essayé ça (extrait) pour supprimer les liens :
Sub Test()
Dim NbTables As Integer, I As Integer, Table As DAO.TableDef, Chemin As
String
Chemin = "C:$BudgetCETablesBudgetCETablesComptaCE.mdb"
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ""
Table.RefreshLink
End If
Next I
CurrentDb.TableDefs().Refresh 'Utile ?
Stop 'Pour vérifier j'ai fermé la base qui réouvert : aucun changement
'et ça pour rétablir :
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ";DATABASE=" & Chemin
Table.RefreshLink
End If
Next I
End Sub
....mais, apparemment, ça ne change pas grand chose (j'ai toujours les mêmes
tables liées avec le meme chemin..)
donc, apparemment, Table.Connect = "" ne suffit pas.
jpg
"Michel__D" <Michel.NOSPAM@orange-ft.com.invalid> a écrit dans le m
essage de news: OMm2GgNgKHA.1540@TK2MSFTNGP06.phx.gbl...
Bonjour,
jero a écrit :
Bonjour,
Restauration : je remplace la base "attachée" par une des sauvegardes
(mais sans quitter l'application et c'est là que ça pose problème...
évidemment)
Le code est tout simple (le pb. n'est pas là):
Private Sub btRestauration_Click()
Dim NomDossierSauvegarde As String, NomBaseSauvegardée As String,
NomBaseAttachée As String, NomDossierRestauration As String, Msg As
String
NomDossierSauvegarde = DLookup("[DossierSauvegarde]",
"[tblParamètresApplication]")
'NomBaseAttachée = fctNomBaseAttachée()
'NomDossierRestauration = fctRépertoireBaseAttachée()
'Par exemple :
NomBaseAttachée = "Tables.mdb"
NomDossierRestauration = "C:Tables"
NomBaseSauvegardée = SélectionBase(NomDossierSauvegarde)
If NomBaseSauvegardée = "" Then Exit Sub
If CopieBase(NomBaseSauvegardée, NomBaseAttachée, NomDossierRestauration)
Then
Msg = "Restauration des tables : " & MSG_OPERATION_OK & vbCrLf
'Pour l'instant... (26/11/2009)
Msg = Msg & "L'application doit être fermée pour que la restauration
soit prise en compte." & vbCrLf
Msg = Msg & "Cliquez sur OK pour continuer."
MsgBox Msg, vbOKOnly, ""
DoCmd.Quit
Else
Msg = "Erreur de Restauration."
MsgBox Msg, vbCritical + vbOKOnly, ""
End If
End Sub
Public Function SélectionBase(DossierParDéfaut As String) As String
Dim Fd As FileDialog, FiltreFichier As String
SélectionBase = ""
Set Fd = Application.FileDialog(msoFileDialogFilePicker)
With Fd
.Title = "Sélection d'une base Access"
.InitialView = msoFileDialogViewDetails
.AllowMultiSelect = False
.InitialFileName = DossierParDéfaut
FiltreFichier = "*.mdb; *.accdb"
.Filters.Clear
.Filters.Add "Bases", FiltreFichier
If .Show Then
SélectionBase = .SelectedItems(1)
End If
End With
Set Fd = Nothing
End Function
Public Function CopieBase(NomBaseSource As String, NomBaseDestination As
String, DossierDestination As String) As Boolean
Dim oFs As Scripting.FileSystemObject, Msg As String
CopieBase = True
Set oFs = CreateObject("Scripting.FileSystemObject")
On Error GoTo Err_CopieBase
With oFs
.CopyFile NomBaseSource, DossierDestination & NomBaseDestination,
True
End With
Exit_CopieBase:
Set oFs = Nothing
Exit Function
Err_CopieBase:
Msg = "Erreur n° " & Err.Number & vbCrLf
Msg = Msg & Err.DESCRIPTION
MsgBox Msg, vbCritical + vbOKOnly, ""
CopieBase = False
Resume Exit_CopieBase
End Function
Donc, ma question est la suivante : comment peut-on faire ça sans quitter
l'application ? D'ailleurs est-ce possible ?
Merci d'avance,
Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
Salut Michel__D,
Premièrement, merci de répondre (je n'ai pas eu beaucoup de réponses...)Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
J'ai essayé ça (extrait) pour supprimer les liens :
Sub Test()
Dim NbTables As Integer, I As Integer, Table As DAO.TableDef, Chemin As
String
Chemin = "C:$BudgetCETablesBudgetCETablesComptaCE.mdb"
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ""
Table.RefreshLink
End If
Next I
CurrentDb.TableDefs().Refresh 'Utile ?
Stop 'Pour vérifier j'ai fermé la base qui réouvert : aucun changement
'et ça pour rétablir :
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ";DATABASE=" & Chemin
Table.RefreshLink
End If
Next I
End Sub
....mais, apparemment, ça ne change pas grand chose (j'ai toujours les mêmes
tables liées avec le meme chemin..)
donc, apparemment, Table.Connect = "" ne suffit pas.
jpg
"Michel__D" a écrit dans le m
essage de news:Bonjour,
jero a écrit :Bonjour,
Restauration : je remplace la base "attachée" par une des sauvegardes
(mais sans quitter l'application et c'est là que ça pose problème...
évidemment)
Le code est tout simple (le pb. n'est pas là):
Private Sub btRestauration_Click()
Dim NomDossierSauvegarde As String, NomBaseSauvegardée As String,
NomBaseAttachée As String, NomDossierRestauration As String, Msg As
String
NomDossierSauvegarde = DLookup("[DossierSauvegarde]",
"[tblParamètresApplication]")
'NomBaseAttachée = fctNomBaseAttachée()
'NomDossierRestauration = fctRépertoireBaseAttachée()
'Par exemple :
NomBaseAttachée = "Tables.mdb"
NomDossierRestauration = "C:Tables"
NomBaseSauvegardée = SélectionBase(NomDossierSauvegarde)
If NomBaseSauvegardée = "" Then Exit Sub
If CopieBase(NomBaseSauvegardée, NomBaseAttachée, NomDossierRestauration)
Then
Msg = "Restauration des tables : " & MSG_OPERATION_OK & vbCrLf
'Pour l'instant... (26/11/2009)
Msg = Msg & "L'application doit être fermée pour que la restauration
soit prise en compte." & vbCrLf
Msg = Msg & "Cliquez sur OK pour continuer."
MsgBox Msg, vbOKOnly, ""
DoCmd.Quit
Else
Msg = "Erreur de Restauration."
MsgBox Msg, vbCritical + vbOKOnly, ""
End If
End Sub
Public Function SélectionBase(DossierParDéfaut As String) As String
Dim Fd As FileDialog, FiltreFichier As String
SélectionBase = ""
Set Fd = Application.FileDialog(msoFileDialogFilePicker)
With Fd
.Title = "Sélection d'une base Access"
.InitialView = msoFileDialogViewDetails
.AllowMultiSelect = False
.InitialFileName = DossierParDéfaut
FiltreFichier = "*.mdb; *.accdb"
.Filters.Clear
.Filters.Add "Bases", FiltreFichier
If .Show Then
SélectionBase = .SelectedItems(1)
End If
End With
Set Fd = Nothing
End Function
Public Function CopieBase(NomBaseSource As String, NomBaseDestination As
String, DossierDestination As String) As Boolean
Dim oFs As Scripting.FileSystemObject, Msg As String
CopieBase = True
Set oFs = CreateObject("Scripting.FileSystemObject")
On Error GoTo Err_CopieBase
With oFs
.CopyFile NomBaseSource, DossierDestination & NomBaseDestination,
True
End With
Exit_CopieBase:
Set oFs = Nothing
Exit Function
Err_CopieBase:
Msg = "Erreur n° " & Err.Number & vbCrLf
Msg = Msg & Err.DESCRIPTION
MsgBox Msg, vbCritical + vbOKOnly, ""
CopieBase = False
Resume Exit_CopieBase
End Function
Donc, ma question est la suivante : comment peut-on faire ça sans quitter
l'application ? D'ailleurs est-ce possible ?
Merci d'avance,
Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
Bonjour,
jero a écrit :Salut Michel__D,
Premièrement, merci de répondre (je n'ai pas eu beaucoup de réponses...)Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
J'ai essayé ça (extrait) pour supprimer les liens :
Sub Test()
Dim NbTables As Integer, I As Integer, Table As DAO.TableDef, Chemin As
String
Chemin = "C:$BudgetCETablesBudgetCETablesComptaCE.mdb"
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ""
Table.RefreshLink
End If
Next I
CurrentDb.TableDefs().Refresh 'Utile ?
Stop 'Pour vérifier j'ai fermé la base qui réouvert : aucun changement
'et ça pour rétablir :
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ";DATABASE=" & Chemin
Table.RefreshLink
End If
Next I
End Sub
....mais, apparemment, ça ne change pas grand chose (j'ai toujours les
mêmes tables liées avec le meme chemin..)
donc, apparemment, Table.Connect = "" ne suffit pas.
jpg
"Michel__D" a écrit dans le m
essage de news:Bonjour,
jero a écrit :Bonjour,
Restauration : je remplace la base "attachée" par une des sauvegardes
(mais sans quitter l'application et c'est là que ça pose problème...
évidemment)
Le code est tout simple (le pb. n'est pas là):
Private Sub btRestauration_Click()
Dim NomDossierSauvegarde As String, NomBaseSauvegardée As String,
NomBaseAttachée As String, NomDossierRestauration As String, Msg As
String
NomDossierSauvegarde = DLookup("[DossierSauvegarde]",
"[tblParamètresApplication]")
'NomBaseAttachée = fctNomBaseAttachée()
'NomDossierRestauration = fctRépertoireBaseAttachée()
'Par exemple :
NomBaseAttachée = "Tables.mdb"
NomDossierRestauration = "C:Tables"
NomBaseSauvegardée = SélectionBase(NomDossierSauvegarde)
If NomBaseSauvegardée = "" Then Exit Sub
If CopieBase(NomBaseSauvegardée, NomBaseAttachée,
NomDossierRestauration) Then
Msg = "Restauration des tables : " & MSG_OPERATION_OK & vbCrLf
'Pour l'instant... (26/11/2009)
Msg = Msg & "L'application doit être fermée pour que la
restauration soit prise en compte." & vbCrLf
Msg = Msg & "Cliquez sur OK pour continuer."
MsgBox Msg, vbOKOnly, ""
DoCmd.Quit
Else
Msg = "Erreur de Restauration."
MsgBox Msg, vbCritical + vbOKOnly, ""
End If
End Sub
Public Function SélectionBase(DossierParDéfaut As String) As String
Dim Fd As FileDialog, FiltreFichier As String
SélectionBase = ""
Set Fd = Application.FileDialog(msoFileDialogFilePicker)
With Fd
.Title = "Sélection d'une base Access"
.InitialView = msoFileDialogViewDetails
.AllowMultiSelect = False
.InitialFileName = DossierParDéfaut
FiltreFichier = "*.mdb; *.accdb"
.Filters.Clear
.Filters.Add "Bases", FiltreFichier
If .Show Then
SélectionBase = .SelectedItems(1)
End If
End With
Set Fd = Nothing
End Function
Public Function CopieBase(NomBaseSource As String, NomBaseDestination
As String, DossierDestination As String) As Boolean
Dim oFs As Scripting.FileSystemObject, Msg As String
CopieBase = True
Set oFs = CreateObject("Scripting.FileSystemObject")
On Error GoTo Err_CopieBase
With oFs
.CopyFile NomBaseSource, DossierDestination & NomBaseDestination,
True
End With
Exit_CopieBase:
Set oFs = Nothing
Exit Function
Err_CopieBase:
Msg = "Erreur n° " & Err.Number & vbCrLf
Msg = Msg & Err.DESCRIPTION
MsgBox Msg, vbCritical + vbOKOnly, ""
CopieBase = False
Resume Exit_CopieBase
End Function
Donc, ma question est la suivante : comment peut-on faire ça sans
quitter l'application ? D'ailleurs est-ce possible ?
Merci d'avance,
Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
Je t'avais suggéré de supprimer tes tables liées, pas de d'effacer la
chaîne de connection de tes tables liées.
Bonjour,
jero a écrit :
Salut Michel__D,
Premièrement, merci de répondre (je n'ai pas eu beaucoup de réponses...)
Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
J'ai essayé ça (extrait) pour supprimer les liens :
Sub Test()
Dim NbTables As Integer, I As Integer, Table As DAO.TableDef, Chemin As
String
Chemin = "C:$BudgetCETablesBudgetCETablesComptaCE.mdb"
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ""
Table.RefreshLink
End If
Next I
CurrentDb.TableDefs().Refresh 'Utile ?
Stop 'Pour vérifier j'ai fermé la base qui réouvert : aucun changement
'et ça pour rétablir :
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ";DATABASE=" & Chemin
Table.RefreshLink
End If
Next I
End Sub
....mais, apparemment, ça ne change pas grand chose (j'ai toujours les
mêmes tables liées avec le meme chemin..)
donc, apparemment, Table.Connect = "" ne suffit pas.
jpg
"Michel__D" <Michel.NOSPAM@orange-ft.com.invalid> a écrit dans le m
essage de news: OMm2GgNgKHA.1540@TK2MSFTNGP06.phx.gbl...
Bonjour,
jero a écrit :
Bonjour,
Restauration : je remplace la base "attachée" par une des sauvegardes
(mais sans quitter l'application et c'est là que ça pose problème...
évidemment)
Le code est tout simple (le pb. n'est pas là):
Private Sub btRestauration_Click()
Dim NomDossierSauvegarde As String, NomBaseSauvegardée As String,
NomBaseAttachée As String, NomDossierRestauration As String, Msg As
String
NomDossierSauvegarde = DLookup("[DossierSauvegarde]",
"[tblParamètresApplication]")
'NomBaseAttachée = fctNomBaseAttachée()
'NomDossierRestauration = fctRépertoireBaseAttachée()
'Par exemple :
NomBaseAttachée = "Tables.mdb"
NomDossierRestauration = "C:Tables"
NomBaseSauvegardée = SélectionBase(NomDossierSauvegarde)
If NomBaseSauvegardée = "" Then Exit Sub
If CopieBase(NomBaseSauvegardée, NomBaseAttachée,
NomDossierRestauration) Then
Msg = "Restauration des tables : " & MSG_OPERATION_OK & vbCrLf
'Pour l'instant... (26/11/2009)
Msg = Msg & "L'application doit être fermée pour que la
restauration soit prise en compte." & vbCrLf
Msg = Msg & "Cliquez sur OK pour continuer."
MsgBox Msg, vbOKOnly, ""
DoCmd.Quit
Else
Msg = "Erreur de Restauration."
MsgBox Msg, vbCritical + vbOKOnly, ""
End If
End Sub
Public Function SélectionBase(DossierParDéfaut As String) As String
Dim Fd As FileDialog, FiltreFichier As String
SélectionBase = ""
Set Fd = Application.FileDialog(msoFileDialogFilePicker)
With Fd
.Title = "Sélection d'une base Access"
.InitialView = msoFileDialogViewDetails
.AllowMultiSelect = False
.InitialFileName = DossierParDéfaut
FiltreFichier = "*.mdb; *.accdb"
.Filters.Clear
.Filters.Add "Bases", FiltreFichier
If .Show Then
SélectionBase = .SelectedItems(1)
End If
End With
Set Fd = Nothing
End Function
Public Function CopieBase(NomBaseSource As String, NomBaseDestination
As String, DossierDestination As String) As Boolean
Dim oFs As Scripting.FileSystemObject, Msg As String
CopieBase = True
Set oFs = CreateObject("Scripting.FileSystemObject")
On Error GoTo Err_CopieBase
With oFs
.CopyFile NomBaseSource, DossierDestination & NomBaseDestination,
True
End With
Exit_CopieBase:
Set oFs = Nothing
Exit Function
Err_CopieBase:
Msg = "Erreur n° " & Err.Number & vbCrLf
Msg = Msg & Err.DESCRIPTION
MsgBox Msg, vbCritical + vbOKOnly, ""
CopieBase = False
Resume Exit_CopieBase
End Function
Donc, ma question est la suivante : comment peut-on faire ça sans
quitter l'application ? D'ailleurs est-ce possible ?
Merci d'avance,
Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
Je t'avais suggéré de supprimer tes tables liées, pas de d'effacer la
chaîne de connection de tes tables liées.
Bonjour,
jero a écrit :Salut Michel__D,
Premièrement, merci de répondre (je n'ai pas eu beaucoup de réponses...)Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
J'ai essayé ça (extrait) pour supprimer les liens :
Sub Test()
Dim NbTables As Integer, I As Integer, Table As DAO.TableDef, Chemin As
String
Chemin = "C:$BudgetCETablesBudgetCETablesComptaCE.mdb"
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ""
Table.RefreshLink
End If
Next I
CurrentDb.TableDefs().Refresh 'Utile ?
Stop 'Pour vérifier j'ai fermé la base qui réouvert : aucun changement
'et ça pour rétablir :
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ";DATABASE=" & Chemin
Table.RefreshLink
End If
Next I
End Sub
....mais, apparemment, ça ne change pas grand chose (j'ai toujours les
mêmes tables liées avec le meme chemin..)
donc, apparemment, Table.Connect = "" ne suffit pas.
jpg
"Michel__D" a écrit dans le m
essage de news:Bonjour,
jero a écrit :Bonjour,
Restauration : je remplace la base "attachée" par une des sauvegardes
(mais sans quitter l'application et c'est là que ça pose problème...
évidemment)
Le code est tout simple (le pb. n'est pas là):
Private Sub btRestauration_Click()
Dim NomDossierSauvegarde As String, NomBaseSauvegardée As String,
NomBaseAttachée As String, NomDossierRestauration As String, Msg As
String
NomDossierSauvegarde = DLookup("[DossierSauvegarde]",
"[tblParamètresApplication]")
'NomBaseAttachée = fctNomBaseAttachée()
'NomDossierRestauration = fctRépertoireBaseAttachée()
'Par exemple :
NomBaseAttachée = "Tables.mdb"
NomDossierRestauration = "C:Tables"
NomBaseSauvegardée = SélectionBase(NomDossierSauvegarde)
If NomBaseSauvegardée = "" Then Exit Sub
If CopieBase(NomBaseSauvegardée, NomBaseAttachée,
NomDossierRestauration) Then
Msg = "Restauration des tables : " & MSG_OPERATION_OK & vbCrLf
'Pour l'instant... (26/11/2009)
Msg = Msg & "L'application doit être fermée pour que la
restauration soit prise en compte." & vbCrLf
Msg = Msg & "Cliquez sur OK pour continuer."
MsgBox Msg, vbOKOnly, ""
DoCmd.Quit
Else
Msg = "Erreur de Restauration."
MsgBox Msg, vbCritical + vbOKOnly, ""
End If
End Sub
Public Function SélectionBase(DossierParDéfaut As String) As String
Dim Fd As FileDialog, FiltreFichier As String
SélectionBase = ""
Set Fd = Application.FileDialog(msoFileDialogFilePicker)
With Fd
.Title = "Sélection d'une base Access"
.InitialView = msoFileDialogViewDetails
.AllowMultiSelect = False
.InitialFileName = DossierParDéfaut
FiltreFichier = "*.mdb; *.accdb"
.Filters.Clear
.Filters.Add "Bases", FiltreFichier
If .Show Then
SélectionBase = .SelectedItems(1)
End If
End With
Set Fd = Nothing
End Function
Public Function CopieBase(NomBaseSource As String, NomBaseDestination
As String, DossierDestination As String) As Boolean
Dim oFs As Scripting.FileSystemObject, Msg As String
CopieBase = True
Set oFs = CreateObject("Scripting.FileSystemObject")
On Error GoTo Err_CopieBase
With oFs
.CopyFile NomBaseSource, DossierDestination & NomBaseDestination,
True
End With
Exit_CopieBase:
Set oFs = Nothing
Exit Function
Err_CopieBase:
Msg = "Erreur n° " & Err.Number & vbCrLf
Msg = Msg & Err.DESCRIPTION
MsgBox Msg, vbCritical + vbOKOnly, ""
CopieBase = False
Resume Exit_CopieBase
End Function
Donc, ma question est la suivante : comment peut-on faire ça sans
quitter l'application ? D'ailleurs est-ce possible ?
Merci d'avance,
Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
Je t'avais suggéré de supprimer tes tables liées, pas de d'effacer la
chaîne de connection de tes tables liées.
Bonjour Michel__D,
J'ai supprimé les tables attachées et remplacé la base qui contient les
tables, et j'ai attaché à nouveau les tables.
ça marche mais les données ne sont toujours pas actualisées.
Note : après suppression des tables attachées, le fichier TablesComptaCE.ldb
existe toujours (et impossible de le supprimer).
J'ai remarqué qu'en fermant le formulaire principal et en l'ouvrant de
nouveau, les données sont bien actualisées.
J'ai donc essayé d'ajouter ça à mon code :
Echo False
DoCmd.Close acForm, "frmMenuPrincipal", acSaveNo
DoCmd.OpenForm "frmMenuPrincipal", acNormal, , , , acDialog
Echo True
Mais, ça ne donne rien...
Joyeux Noël
jpg
"Michel__D" a écrit dans le message de
news:Bonjour,
jero a écrit :Salut Michel__D,
Premièrement, merci de répondre (je n'ai pas eu beaucoup de réponses...)Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
J'ai essayé ça (extrait) pour supprimer les liens :
Sub Test()
Dim NbTables As Integer, I As Integer, Table As DAO.TableDef, Chemin As
String
Chemin = "C:$BudgetCETablesBudgetCETablesComptaCE.mdb"
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ""
Table.RefreshLink
End If
Next I
CurrentDb.TableDefs().Refresh 'Utile ?
Stop 'Pour vérifier j'ai fermé la base qui réouvert : aucun changement
'et ça pour rétablir :
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ";DATABASE=" & Chemin
Table.RefreshLink
End If
Next I
End Sub
....mais, apparemment, ça ne change pas grand chose (j'ai toujours les
mêmes tables liées avec le meme chemin..)
donc, apparemment, Table.Connect = "" ne suffit pas.
jpg
Bonjour Michel__D,
J'ai supprimé les tables attachées et remplacé la base qui contient les
tables, et j'ai attaché à nouveau les tables.
ça marche mais les données ne sont toujours pas actualisées.
Note : après suppression des tables attachées, le fichier TablesComptaCE.ldb
existe toujours (et impossible de le supprimer).
J'ai remarqué qu'en fermant le formulaire principal et en l'ouvrant de
nouveau, les données sont bien actualisées.
J'ai donc essayé d'ajouter ça à mon code :
Echo False
DoCmd.Close acForm, "frmMenuPrincipal", acSaveNo
DoCmd.OpenForm "frmMenuPrincipal", acNormal, , , , acDialog
Echo True
Mais, ça ne donne rien...
Joyeux Noël
jpg
"Michel__D" <Michel.NOSPAM@orange-ft.com.invalid> a écrit dans le message de
news: OarGh1mgKHA.1824@TK2MSFTNGP04.phx.gbl...
Bonjour,
jero a écrit :
Salut Michel__D,
Premièrement, merci de répondre (je n'ai pas eu beaucoup de réponses...)
Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
J'ai essayé ça (extrait) pour supprimer les liens :
Sub Test()
Dim NbTables As Integer, I As Integer, Table As DAO.TableDef, Chemin As
String
Chemin = "C:$BudgetCETablesBudgetCETablesComptaCE.mdb"
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ""
Table.RefreshLink
End If
Next I
CurrentDb.TableDefs().Refresh 'Utile ?
Stop 'Pour vérifier j'ai fermé la base qui réouvert : aucun changement
'et ça pour rétablir :
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ";DATABASE=" & Chemin
Table.RefreshLink
End If
Next I
End Sub
....mais, apparemment, ça ne change pas grand chose (j'ai toujours les
mêmes tables liées avec le meme chemin..)
donc, apparemment, Table.Connect = "" ne suffit pas.
jpg
Bonjour Michel__D,
J'ai supprimé les tables attachées et remplacé la base qui contient les
tables, et j'ai attaché à nouveau les tables.
ça marche mais les données ne sont toujours pas actualisées.
Note : après suppression des tables attachées, le fichier TablesComptaCE.ldb
existe toujours (et impossible de le supprimer).
J'ai remarqué qu'en fermant le formulaire principal et en l'ouvrant de
nouveau, les données sont bien actualisées.
J'ai donc essayé d'ajouter ça à mon code :
Echo False
DoCmd.Close acForm, "frmMenuPrincipal", acSaveNo
DoCmd.OpenForm "frmMenuPrincipal", acNormal, , , , acDialog
Echo True
Mais, ça ne donne rien...
Joyeux Noël
jpg
"Michel__D" a écrit dans le message de
news:Bonjour,
jero a écrit :Salut Michel__D,
Premièrement, merci de répondre (je n'ai pas eu beaucoup de réponses...)Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
J'ai essayé ça (extrait) pour supprimer les liens :
Sub Test()
Dim NbTables As Integer, I As Integer, Table As DAO.TableDef, Chemin As
String
Chemin = "C:$BudgetCETablesBudgetCETablesComptaCE.mdb"
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ""
Table.RefreshLink
End If
Next I
CurrentDb.TableDefs().Refresh 'Utile ?
Stop 'Pour vérifier j'ai fermé la base qui réouvert : aucun changement
'et ça pour rétablir :
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ";DATABASE=" & Chemin
Table.RefreshLink
End If
Next I
End Sub
....mais, apparemment, ça ne change pas grand chose (j'ai toujours les
mêmes tables liées avec le meme chemin..)
donc, apparemment, Table.Connect = "" ne suffit pas.
jpg
la présence du fichier .ldb est normale : oui, je sais...
il faudrait essayer de fermer le formulaire "frmMenuPrincipal" et de faire
ta manipulation dans un autre formulaire.
Bonjour,
Si ton formukaire "frmMenuPrincipal" accède aux tables attachées, la
présence du fichier .ldb est normale
il faudrait essayer de fermer le formulaire "frmMenuPrincipal" et de faire
ta manipulation dans un autre formulaire.
Bonnes Fêtes à tous.
jero a écrit :Bonjour Michel__D,
J'ai supprimé les tables attachées et remplacé la base qui contient les
tables, et j'ai attaché à nouveau les tables.
ça marche mais les données ne sont toujours pas actualisées.
Note : après suppression des tables attachées, le fichier
TablesComptaCE.ldb existe toujours (et impossible de le supprimer).
J'ai remarqué qu'en fermant le formulaire principal et en l'ouvrant de
nouveau, les données sont bien actualisées.
J'ai donc essayé d'ajouter ça à mon code :
Echo False
DoCmd.Close acForm, "frmMenuPrincipal", acSaveNo
DoCmd.OpenForm "frmMenuPrincipal", acNormal, , , , acDialog
Echo True
Mais, ça ne donne rien...
Joyeux Noël
jpg
"Michel__D" a écrit dans le message
de news:Bonjour,
jero a écrit :Salut Michel__D,
Premièrement, merci de répondre (je n'ai pas eu beaucoup de
réponses...)Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
J'ai essayé ça (extrait) pour supprimer les liens :
Sub Test()
Dim NbTables As Integer, I As Integer, Table As DAO.TableDef, Chemin As
String
Chemin = "C:$BudgetCETablesBudgetCETablesComptaCE.mdb"
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ""
Table.RefreshLink
End If
Next I
CurrentDb.TableDefs().Refresh 'Utile ?
Stop 'Pour vérifier j'ai fermé la base qui réouvert : aucun changement
'et ça pour rétablir :
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ";DATABASE=" & Chemin
Table.RefreshLink
End If
Next I
End Sub
....mais, apparemment, ça ne change pas grand chose (j'ai toujours les
mêmes tables liées avec le meme chemin..)
donc, apparemment, Table.Connect = "" ne suffit pas.
jpg
la présence du fichier .ldb est normale : oui, je sais...
il faudrait essayer de fermer le formulaire "frmMenuPrincipal" et de faire
ta manipulation dans un autre formulaire.
Bonjour,
Si ton formukaire "frmMenuPrincipal" accède aux tables attachées, la
présence du fichier .ldb est normale
il faudrait essayer de fermer le formulaire "frmMenuPrincipal" et de faire
ta manipulation dans un autre formulaire.
Bonnes Fêtes à tous.
jero a écrit :
Bonjour Michel__D,
J'ai supprimé les tables attachées et remplacé la base qui contient les
tables, et j'ai attaché à nouveau les tables.
ça marche mais les données ne sont toujours pas actualisées.
Note : après suppression des tables attachées, le fichier
TablesComptaCE.ldb existe toujours (et impossible de le supprimer).
J'ai remarqué qu'en fermant le formulaire principal et en l'ouvrant de
nouveau, les données sont bien actualisées.
J'ai donc essayé d'ajouter ça à mon code :
Echo False
DoCmd.Close acForm, "frmMenuPrincipal", acSaveNo
DoCmd.OpenForm "frmMenuPrincipal", acNormal, , , , acDialog
Echo True
Mais, ça ne donne rien...
Joyeux Noël
jpg
"Michel__D" <Michel.NOSPAM@orange-ft.com.invalid> a écrit dans le message
de news: OarGh1mgKHA.1824@TK2MSFTNGP04.phx.gbl...
Bonjour,
jero a écrit :
Salut Michel__D,
Premièrement, merci de répondre (je n'ai pas eu beaucoup de
réponses...)
Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
J'ai essayé ça (extrait) pour supprimer les liens :
Sub Test()
Dim NbTables As Integer, I As Integer, Table As DAO.TableDef, Chemin As
String
Chemin = "C:$BudgetCETablesBudgetCETablesComptaCE.mdb"
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ""
Table.RefreshLink
End If
Next I
CurrentDb.TableDefs().Refresh 'Utile ?
Stop 'Pour vérifier j'ai fermé la base qui réouvert : aucun changement
'et ça pour rétablir :
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ";DATABASE=" & Chemin
Table.RefreshLink
End If
Next I
End Sub
....mais, apparemment, ça ne change pas grand chose (j'ai toujours les
mêmes tables liées avec le meme chemin..)
donc, apparemment, Table.Connect = "" ne suffit pas.
jpg
la présence du fichier .ldb est normale : oui, je sais...
il faudrait essayer de fermer le formulaire "frmMenuPrincipal" et de faire
ta manipulation dans un autre formulaire.
Bonjour,
Si ton formukaire "frmMenuPrincipal" accède aux tables attachées, la
présence du fichier .ldb est normale
il faudrait essayer de fermer le formulaire "frmMenuPrincipal" et de faire
ta manipulation dans un autre formulaire.
Bonnes Fêtes à tous.
jero a écrit :Bonjour Michel__D,
J'ai supprimé les tables attachées et remplacé la base qui contient les
tables, et j'ai attaché à nouveau les tables.
ça marche mais les données ne sont toujours pas actualisées.
Note : après suppression des tables attachées, le fichier
TablesComptaCE.ldb existe toujours (et impossible de le supprimer).
J'ai remarqué qu'en fermant le formulaire principal et en l'ouvrant de
nouveau, les données sont bien actualisées.
J'ai donc essayé d'ajouter ça à mon code :
Echo False
DoCmd.Close acForm, "frmMenuPrincipal", acSaveNo
DoCmd.OpenForm "frmMenuPrincipal", acNormal, , , , acDialog
Echo True
Mais, ça ne donne rien...
Joyeux Noël
jpg
"Michel__D" a écrit dans le message
de news:Bonjour,
jero a écrit :Salut Michel__D,
Premièrement, merci de répondre (je n'ai pas eu beaucoup de
réponses...)Tu as essayé de supprimer tes liens vers tes tables, puis tu remplace
ta base qui contient les tables et tu attache à nouveau tes tables.
J'ai essayé ça (extrait) pour supprimer les liens :
Sub Test()
Dim NbTables As Integer, I As Integer, Table As DAO.TableDef, Chemin As
String
Chemin = "C:$BudgetCETablesBudgetCETablesComptaCE.mdb"
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ""
Table.RefreshLink
End If
Next I
CurrentDb.TableDefs().Refresh 'Utile ?
Stop 'Pour vérifier j'ai fermé la base qui réouvert : aucun changement
'et ça pour rétablir :
For I = 0 To NbTables - 1
Set Table = CurrentDb.TableDefs(I)
If Table.Connect <> "" Then
Table.Connect = ";DATABASE=" & Chemin
Table.RefreshLink
End If
Next I
End Sub
....mais, apparemment, ça ne change pas grand chose (j'ai toujours les
mêmes tables liées avec le meme chemin..)
donc, apparemment, Table.Connect = "" ne suffit pas.
jpg
J'ai fouillé sur le Web (Access Restauration tables vba) ; rien ou
presque (sur la sauvegarde OUI, sur la restauration NON)
Je reste persuadé que c'est le ".ldb" qui fout la zone...
J'ai fouillé sur le Web (Access Restauration tables vba) ; rien ou
presque (sur la sauvegarde OUI, sur la restauration NON)
Je reste persuadé que c'est le ".ldb" qui fout la zone...
J'ai fouillé sur le Web (Access Restauration tables vba) ; rien ou
presque (sur la sauvegarde OUI, sur la restauration NON)
Je reste persuadé que c'est le ".ldb" qui fout la zone...
Salut,
jero wrote:
[...]J'ai fouillé sur le Web (Access Restauration tables vba) ; rien ou
presque (sur la sauvegarde OUI, sur la restauration NON)
Je reste persuadé que c'est le ".ldb" qui fout la zone...
Avant toute manipulation, il te faut te déconnecter totalement
de la base dorsale (pas de formulaire ou autre y ayant sa source)
Puis, tu peux relier les tables en t'inspirant de ceci:
http://www.3stone.be/access/articles.php?lng=fr&pg" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.3stone.be/access/articles.php?lng=fr&pg(
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Salut,
jero wrote:
[...]
J'ai fouillé sur le Web (Access Restauration tables vba) ; rien ou
presque (sur la sauvegarde OUI, sur la restauration NON)
Je reste persuadé que c'est le ".ldb" qui fout la zone...
Avant toute manipulation, il te faut te déconnecter totalement
de la base dorsale (pas de formulaire ou autre y ayant sa source)
Puis, tu peux relier les tables en t'inspirant de ceci:
http://www.3stone.be/access/articles.php?lng=fr&pg(
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Salut,
jero wrote:
[...]J'ai fouillé sur le Web (Access Restauration tables vba) ; rien ou
presque (sur la sauvegarde OUI, sur la restauration NON)
Je reste persuadé que c'est le ".ldb" qui fout la zone...
Avant toute manipulation, il te faut te déconnecter totalement
de la base dorsale (pas de formulaire ou autre y ayant sa source)
Puis, tu peux relier les tables en t'inspirant de ceci:
http://www.3stone.be/access/articles.php?lng=fr&pg" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.3stone.be/access/articles.php?lng=fr&pg(
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)