Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/01/2011, 18h13   #1
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 797
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 797
Points : 1 508
Points : 1 508
Par défaut Empêcher la mise à jour (Form/Table)

Bonsoir à toutes et à tous,

je vous explique la situation, je possède un formulaire dont une partie est récupéré dans une table (Cette action, Access le fait tout seul) et d'autres champs qui correspondent à des informations d'autres tables.

Je dois donc faire plusieurs requêtes pour mettre à jour mes donnée en fonction de ce que j'ai rentré dans mon formulaire, là pas de soucis.

Cependant j'ai un soucis avec l'enregistrement automatique de Access... Vu que certains de mes champs sont liés avec une table lorsque je quitte le formulaire ou que je change d'enregistrement il effectue une requête UPDATE.
Or cela revient à faire une demi-mise à jour dans mon cas, vu qu'en cas de modification des champs liés et des champs non liés puis l'un des actions provoquant une requête de mise à jour j'obtiens la moitié du traitement (seulement la mise à jour des champs liés).

Comment puis-je faire pour empêcher Access de faire cette requête UPDATE ?
J'ai actuellement tout un formulaire opérationnel si ce n'est cela...

J'ai essayé d'empêcher l'update via :
Code :
1
2
3
Private Sub Form_BeforeUpdate(Cancel As Integer)
    Cancel = 1
End Sub
Mais cela me coupe l'accès à mes boutons pour passer d'un enregistrement à l'autre (effectué par un DoCmd).

Ainsi que :
Code :
1
2
3
Private Sub Form_BeforeUpdate(Cancel As Integer)
    Me.Requery ' en gros remettre les champs comme ils sont dans la table avant de faire la mise à jour => rend l'update inutile
End Sub
Mais comme j'aurai du m'en douter je tourne en boucle du coup et il peut rien faire...

Auriez-vous une solution à me proposer ?
Merci d'avance.

Cordialement, xTG.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 00h31   #2
Membre habitué
 
Avatar de cluster26
 
Inscription : février 2010
Messages : 191
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 191
Points : 128
Points : 128
Bonsoir,

J'ai été confronté, à l'époque où j'ai démarré la programmation avec Access, à ce genre de situation.

Pour y remédier, je travaille dorénavant et presque essentiellement avec des formulaires indépendants. Les champs saisis font appel, à l'aide des procédures, à des requêtes établies en VBA qui viennent alimenter les champs concernés.

La validation en fin de saisie permet de générer définitivement, toujours par la même méthode, l'enregistrement complet dans la table concernée.

Mais est-ce la bonne méthode ?...
cluster26 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/01/2011, 11h28   #3
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 797
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 797
Points : 1 508
Points : 1 508
J'y avais pensé mais j'espérais trouver une solution moins contraignante.

Il y a pas mal de champs à modifier, mais surtout nous sommes 4 à travailler sur le projet et comme nous n'avons pas trouvé de façon correcte de travailler sur un même fichier nous avons tous une copie du dit fichier.
Les formulaires ont donc tous déjà été créés, et nous n'avons plus qu'à faire du copier/coller de code VBA pour merge nos parties.

Si cette solution est la seule possible, auriez-vous une idée pour faire du remplacement de formulaire facilement sur d'autres fichiers ? C'est franchement dommage qu'access ne permette pas le copier/coller d'objet Form d'un projet à un autre.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 19h05   #4
Membre habitué
 
Avatar de cluster26
 
Inscription : février 2010
Messages : 191
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 191
Points : 128
Points : 128
Bonsoir,

Pardonne moi, mais je crains que nous nous heurtions à un problème de terminologie et également de méthodologie.

Si j'ai bien compris, quand tu évoques nous avons tous une copie du dit fichier, cela laisse entendre que la base a été dupliquée 4 fois et que chacun travaille indépendamment sur chaque base.

Cela peut effectivement poser problème !... Surtout lors de la synthèse !..

D'autre part, tu mentionnes que access ne permette pas le copier/coller d'objet Form,
Tu peux toutefois importer un formulaire d'une autre base ce qui correspond en quelque sorte à un copier/coller.
cluster26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 09h24   #5
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 797
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 797
Points : 1 508
Points : 1 508
Oui en effet notre méthode est pas top mais nous n'avons pas le choix, certains travaillent sur des ordinateurs coupés de tout. Donc ils sont obligés d'avoir un duplicata de la base pour travailler leurs formulaires (en mode conception, pas en mode utilisation !)

Par contre l'importation je n'avais pas vu cela, je vais tâcher de trouver cette fonction miracle.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 09h58   #6
Membre habitué
 
Avatar de cluster26
 
Inscription : février 2010
Messages : 191
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 191
Points : 128
Points : 128
Bonjour,

Si j'ai bien compris, vous ne travaillez pas en réseau !..

Si tel est le cas, effectivement vous ne pouvez pas importer d'objet !..

Pour info, pour importer :

Menu Fichier puis
Données externes puis
Importer (sélectionner la base) puis Sélectionner l'objet et l'importer.
cluster26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 17h22   #7
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 797
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 797
Points : 1 508
Points : 1 508
On va essayer en copiant les différentes bases sur le même disque dur.

De plus je marque en réglé, puisqu'à part détacher les champs de la table....
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 09h50   #8
Invité de passage
 
Inscription : janvier 2011
Messages : 1
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 1
Points : 1
Points : 1
j'avais fait quelque chose du genre :

Code :
1
2
3
Private Sub Form_BeforeUpdate(Cancel As Integer)
    Cancel = 1
End Sub
et j'avais le même souçi, à savoir qu'il n'enregistrait plus, même en cliquant sur mon bouton enregistrer. J'ai donc créer une variable booléenne (par exemple Sauvegarder que tu mets par défaut à Faux. et dans ton code tu mets :

Code :
1
2
3
4
Private Sub Form_BeforeUpdate(Cancel As Integer)
    If Sauvegarder = False Then Cancel = 1
    Sauvegarder = False
End Sub
et dans le code de ton bouton pour enregistrer tu met Sauvegarder à Vrai.
crocroc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 12h23   #9
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 797
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 797
Points : 1 508
Points : 1 508
Je l'ai essayé cette méthode avant de venir poster.
Mais tu remarqueras que le Cancel annule aussi la fermeture du formulaire ou tout autre action imbriquée avec la mise à jour des données.
Ce n'était donc pas viable pour mon système.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h33.


 
 
 
 
Partenaires

Hébergement Web