Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

copier base Access - merci!

5 réponses
Avatar
Hélène
Bonjour =E0 tous,

Je m'arrache les cheveux sur une appli VB 6 (sous XP et=20
Access 2000), pour copier une base Access lock=E9e par=20
l'application. Est-ce impossible par programmation (alors=20
que =E7a l'est depuis l'Explorateur Windows)? Pour le=20
moment, je fais une copie de la DB record par record,=20
mais c'est tr=E8s long. Faut-il abandonner Access ;-) ou=20
une solution existe-t-elle?
Merci d'avance pour votre aide!

H=E9l=E8ne

5 réponses

Avatar
Ledev
Hélène wrote:
Bonjour à tous,



Bonjour a toi,


Je m'arrache les cheveux sur une appli VB 6 (sous XP et
Access 2000), pour copier une base Access lockée par
l'application. Est-ce impossible par programmation (alors
que ça l'est depuis l'Explorateur Windows)? Pour le
moment, je fais une copie de la DB record par record,
mais c'est très long. Faut-il abandonner Access ;-) ou
une solution existe-t-elle?
Merci d'avance pour votre aide!



Si je comprend bien, pour faire une copie du même style qu'avec
l'explorateur, par programmation vous recréer les tables et réenregistrer
les enregistrements un par un!!!
Ceci est loin d'être la solution:
-un travail monstre qu'y peut être remplacer par, et vous allez pas me
croire, une seul ligne de code ;-)
-Et en plus, la base ne serra pas recopier a l'exactitude(même si vous
aurrez les mêmes enregistrements et tous, les relations faites dans access
par exemple ne seront plus là)
-Puis il faut bien prendre en comptes TOUTES les propriété de chaque
champs(pas juste le type, mais la taille, et toutes les propriété que vous
trouvée dans Access, en bas dans la fenêtre d'édition).
-Et puis, c'est beaucoup plus rapide à l'execution ;-)

Exemple de code:
filecopy "c:mabase.mdb","d:sauveguardemabase.mdb"

Voilà, a+


Hélène


Avatar
datamind
TU PEUX UTILISER CELA PAR EXEMPLE
If Dir("c:bddcopy.bat") = "bddcopy.bat" Then
Kill "c:bddcopy.bat"
Open "c:bddcopy.bat" For Binary As #1
Put #1, , "copy c:base1.mdb d:"
Close #1
Shell ("c:bddcopy.bat")
Avatar
françois
J'avais le même problème pour copier et sauvegarder une
base ouverte dans une de mes applis avec la base sur
réseau. Avec le Copyfile de VB cela ne marche pas si la
base est ouverte. En utilisant une api, pas de problème.
Il faut la mettre dans un module :
Declare Function CopyFile Lib "kernel32" Alias "CopyFileA"
( _
ByVal lpExistingFileName As String, _
ByVal lpNewFileName As String, _
ByVal bFailIfExists As Long) As Long

et dans ton code tu écris dans ta procédure :

lgFailIfExists = CLng(FailIfTargetExists)
Call CopyFile("chemin de ta base+mabase.mdb","chemin de ta
base+nomdecopiedetabase.mdb", lgFailIfExists)

françois
Avatar
Hélène
Merci beaucoup, François; ça marche impeccablement!
Excellente journée,

Hélène

-----Message d'origine-----
J'avais le même problème pour copier et sauvegarder une
base ouverte dans une de mes applis avec la base sur
réseau. Avec le Copyfile de VB cela ne marche pas si la
base est ouverte. En utilisant une api, pas de problème.
Il faut la mettre dans un module :
Declare Function CopyFile Lib "kernel32"


Alias "CopyFileA"
( _
ByVal lpExistingFileName As String, _
ByVal lpNewFileName As String, _
ByVal bFailIfExists As Long) As Long

et dans ton code tu écris dans ta procédure :

lgFailIfExists = CLng(FailIfTargetExists)
Call CopyFile("chemin de ta base+mabase.mdb","chemin de


ta
base+nomdecopiedetabase.mdb", lgFailIfExists)

françois


.



Avatar
Hélène
Merci beaucoup pour ta réponse.
Malheureusement, quand la base est lockée (présence
d'un .ldb), ça ne fonctionne pas; d'où ma question.
En revanche, la solution proposée par François semble
marcher.
Encore merci et bonne journée,

Hélène
-----Message d'origine-----
Hélène wrote:
Bonjour à tous,



Bonjour a toi,


Je m'arrache les cheveux sur une appli VB 6 (sous XP et
Access 2000), pour copier une base Access lockée par
l'application. Est-ce impossible par programmation




(alors
que ça l'est depuis l'Explorateur Windows)? Pour le
moment, je fais une copie de la DB record par record,
mais c'est très long. Faut-il abandonner Access ;-) ou
une solution existe-t-elle?
Merci d'avance pour votre aide!



Si je comprend bien, pour faire une copie du même style


qu'avec
l'explorateur, par programmation vous recréer les tables


et réenregistrer
les enregistrements un par un!!!
Ceci est loin d'être la solution:
-un travail monstre qu'y peut être remplacer par, et


vous allez pas me
croire, une seul ligne de code ;-)
-Et en plus, la base ne serra pas recopier a


l'exactitude(même si vous
aurrez les mêmes enregistrements et tous, les relations


faites dans access
par exemple ne seront plus là)
-Puis il faut bien prendre en comptes TOUTES les


propriété de chaque
champs(pas juste le type, mais la taille, et toutes les


propriété que vous
trouvée dans Access, en bas dans la fenêtre d'édition).
-Et puis, c'est beaucoup plus rapide à l'execution ;-


)

Exemple de code:
filecopy "c:mabase.mdb","d:sauveguardemabase.mdb"

Voilà, a+


Hélène




.