Au secour

ceraste Messages postés 4 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 10 février 2005 - 9 févr. 2005 à 18:28
ceraste Messages postés 4 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 10 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

7 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
9 févr. 2005 à 18:51
Salut,

Tu as sans doute quelque part dans ton code quelque chose comme :

public (ou dim, ou private) TaVariableBDD as database (en ADO)
ou
public (ou dim, ou private) TaVariableBDD as adodb.connexion (en DAO)

dans les 2 cas, pour germer, c'est :

TaVariableBDD .close

Cordialement, CanisLupus
0
ceraste Messages postés 4 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 10 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
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
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

Cordialement, CanisLupus
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
9 févr. 2005 à 20:33
Si ça ne marche pas, indique moi comment tu ouvres ta base de données.

Cordialement, CanisLupus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ceraste Messages postés 4 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 10 février 2005
9 févr. 2005 à 20:43
J'ai un controle ado que je met sur chaque feuille et que je reli à ma base de donnée.

Voici se que donne quand je double click sur mon controle ado.

Private Sub Adosecretaire_WillMove(ByVal adReason As ADODB.EventReasonEnum, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)


End Sub

Merci de ton aide.

P.S je suis à l'école présentement et je doit quitter dan 20 min
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
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

Cordialement, CanisLupus
0
ceraste Messages postés 4 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 10 février 2005
10 févr. 2005 à 15:13
Salut
j'ai trouvé mon problème.
Il sagit juste de lui donner la commande UNLOAD ME sur chaque feuille ou il y as le ADO et ca marche.

Merci de ton aide
0
Rejoignez-nous