ceraste
Messages postés4Date d'inscriptionmercredi 9 février 2005StatutMembreDernière intervention10 février 2005
-
9 févr. 2005 à 18:28
ceraste
Messages postés4Date d'inscriptionmercredi 9 février 2005StatutMembreDernière intervention10 février 2005
-
10 févr. 2005 à 15:13
Bonjour tout le monde
Je ne suis pas un programmeur mais j'essaie.
J'ai un problème quand je veut sauvegarder (enregistrer sous) ma base de données access avec vb 6.0 .
L'orsque j'ouvre mon programme et que je sauvegarde tout de suite, ca marche.
L'orsque j'ouvre mon programme et que je vais sur d'autres feuilles, je ne peut plus enregistrer (enregistrer sous) ma base de donnée.
Je pense qu'il faut que je lui dise que l'orsque je pese sur le bouton enregistrer, qu'il ferme la base de donnée avant de sauvegarder le données.
Je crois que mon prôblème c'est que l'orsque je vais sur une autre page, il ouvre la base de donnée et l'orsque je veut enregistre , la base de donnée est ouverte et c'est pour ca qu'il n'enregistre rien.
Question: Lorsque je pèse sur le bouton enregistrer, comment lui dire de fermer ma base de donnée avant d'enregistrer.
Merci
ceraste
Messages postés4Date d'inscriptionmercredi 9 février 2005StatutMembreDernière intervention10 février 2005 9 févr. 2005 à 20:07
Merci de m'avoir répondu si vite. Mais comme tu sais je ne suis pas un pro.
Je te donne mon code et si tu peut m'aider, J'apprécirais.
Encore une fois merci
Private Sub cmdsauvegerde_Click()
Dim strsource As String
Dim strdestination As String
dlgcommon.CancelError = False
On Error GoTo Fin
tmrdelais.Enabled = False
'Désactive le timer
strsource = App.Path & "\Transport Bruno Morillon inc.mdb"
'Donne le chemin pour la source de la base de donnée
dlgcommon.Filter = "Fichiers (*.mdb)|*.mdb"
'Force l'extension d'enregistrement en .mdb
dlgcommon.ShowSave
'Affiche la boite de dialogue "enregister sous "
strdestination = dlgcommon.FileName
'Enregistre la destination
FileCopy strsource, strdestination
'Copy la source dans la destination
Fin:
End Sub
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200620 9 févr. 2005 à 20:32
Comme tu l'as pensé, pour sauvegarder ta base de données, il faut qu'aucun prog n'y accède à ce moment.
S'il n'y a que toi (ton instance du prog) qui y accède, il faut que tu refermes la connexion.
Je ne sais pas le type de connexion que tu utilises mais un exemple en DAO (je me rends compte que j'ai inversé DAO et ADO lors de mon 1er post).:
pour ouvrir :
dim db as database
set db = opendatabase("chemin+nomde tabase")
....
pour fermer :
db.close
Dans ce cas, ton code devient :
Private Sub cmdsauvegerde_Click()
Dim strsource As String
Dim strdestination As String
db.close
dlgcommon.CancelError = False
On Error GoTo Fin
tmrdelais.Enabled = False
'Désactive le timer
strsource = App.Path & "\Transport Bruno Morillon inc.mdb"
'Donne le chemin pour la source de la base de donnée
dlgcommon.Filter = "Fichiers (*.mdb)|*.mdb"
'Force l'extension d'enregistrement en .mdb
dlgcommon.ShowSave
'Affiche la boite de dialogue "enregister sous "
strdestination = dlgcommon.FileName
'Enregistre la destination
FileCopy strsource, strdestination
'Copy la source dans la destination
Fin:
End Sub
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200620 9 févr. 2005 à 22:02
Je vois, tu utilises un datacontrol ADO (adodc).
Je ne manipule pas ce genre de controle et ne sais pas comment libérer la ressource utilisée. Surtout si elle est utilisée par plusieurs adodc disséminés dans plusieurs form.
A la place de mon db.close, essaie à tout hasard :
TonAdodc.recordsource=""
TonAdodc.connectionstring=""
TonAdodc.refresh