Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
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/05/2011, 13h22   #1
Membre du Club
 
Homme Mathieu
Étudiant
Inscription : avril 2011
Messages : 133
Détails du profil
Informations personnelles :
Nom : Homme Mathieu
Localisation : France, Vosges (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 133
Points : 50
Points : 50
Envoyer un message via MSN à theuma
Par défaut Ne pas sauvegarder à la fermeture d'un formulaire

Bonjour,
J'aimerais qu'a la fermeture d'un formulaire, que toutes les actions qui ont été réalisé sois annuler ... ainsi ne pas enregistrer les modifications faites!
C'est possible ?
theuma est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 13h46   #2
Modérateur
 
Homme Daniel
Inscription : juillet 2006
Messages : 1 220
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Âge : 67
Localisation : France

Informations professionnelles :
Secteur : Services à domicile

Informations forums :
Inscription : juillet 2006
Messages : 1 220
Points : 1 631
Points : 1 631
bonjour,
faire un formulaire indépendant d'une table ou requête. il n'enregistre une modif que si on le lui demande par code.
LE VIEUX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 14h13   #3
Membre du Club
 
Homme Mathieu
Étudiant
Inscription : avril 2011
Messages : 133
Détails du profil
Informations personnelles :
Nom : Homme Mathieu
Localisation : France, Vosges (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 133
Points : 50
Points : 50
Envoyer un message via MSN à theuma
Tu pourrais etre plus précis ? je ne vois pas très bien comment faire ...
LE problème c'est que j'ai un sous formulaire dedans ...
Les prefa qui viennent de FK_Prefa !
theuma est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 21h27   #4
Membre actif
 
Homme Dominique
Gestion parc machine, assistance informatique, développement Access, Excel...
Inscription : février 2007
Messages : 130
Détails du profil
Informations personnelles :
Nom : Homme Dominique
Âge : 56
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Gestion parc machine, assistance informatique, développement Access, Excel...
Secteur : Service public

Informations forums :
Inscription : février 2007
Messages : 130
Points : 161
Points : 161
Bonsoir.
Dernièrement, j'ai utilisé une méthode différente de celle indiquée ci-dessus.
Mon formulaire affiche les enregistrements en continu mais sans possibilité d'ajout ou de modification.
La gestion d'un menu contextuel sur la partie gauche de l'enregistrement propose différents choix dont l'ajout, la modification de données...
Le choix d'un élément du menu provoque l'ouverture d'un formulaire indépendant de toute table ou requête dédié au traitement choisi (en fait, tous les contrôles sont des zones de texte indépendantes) .
Il y a donc un formulaire adapté à chaque type d'opération.
Le formulaire de modification, par exemple, est renseigné, par code, à partir de l'enregistrement sélectionné.
Dans ce formulaire, deux boutons. L'un lance l'exécution d'une requête Ajout, Update... selon ce que doit faire le formulaire choisi, l'autre ferme simplement le formulaire.
J'ai trouvé sur le site tous les éléments nécessaires et en particulier la gestion des menus contextuels.
A ta disposition pour de plus amples renseignements.
Cordialement, Dominique.
PapouDomi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2011, 08h03   #5
Membre du Club
 
Homme Mathieu
Étudiant
Inscription : avril 2011
Messages : 133
Détails du profil
Informations personnelles :
Nom : Homme Mathieu
Localisation : France, Vosges (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 133
Points : 50
Points : 50
Envoyer un message via MSN à theuma
Donc, la création de formulaire par Access est un peu inutile, je pensais qu'il avait penser faire une commande en VBA pour ne pas enregistrer les modifications faites depuis l'ouverture du formulaire ...
Il faut donc que je refasse les 3/4 de mes formulaires ... Pas très logique de la part de nos amis Microsoft !
theuma est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2011, 08h26   #6
Membre actif
 
Homme Dominique
Gestion parc machine, assistance informatique, développement Access, Excel...
Inscription : février 2007
Messages : 130
Détails du profil
Informations personnelles :
Nom : Homme Dominique
Âge : 56
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Gestion parc machine, assistance informatique, développement Access, Excel...
Secteur : Service public

Informations forums :
Inscription : février 2007
Messages : 130
Points : 161
Points : 161
Bonjour.
Au contraire, il faut impérativement utiliser des formulaires afin de traiter les données.
La saisie directe dans la BDD est à proscrire car il existe un très grand risque d'erreur.
Il faut simplement adapter la construction des formulaires à ses besoins.
Comme te le précise Le Vieux, un formulaire dépendant d'une table ou d'une requête va modifier les données à chaque saisie alors qu'un formulaire indépendant nécessitera une action de type code par exemple pour enregistrer la saisie.
A+
PapouDomi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2011, 08h38   #7
Nouveau Membre du Club
 
Avatar de DevBaldwin
 
Homme
Développeur informatique
Inscription : avril 2011
Messages : 47
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : avril 2011
Messages : 47
Points : 36
Points : 36
Une méthode très simple que j'ai utilisé assez souvent :
-Créer un bouton "Fermer" sur le formulaire en question
-Créer un code événementiel sur l'action OnClick()
-ajouter le code suivant
Code :
1
2
3
4
Private Sub Commande533_Click()
    Me.Undo
    DoCmd.Close
End Sub
Pour plus de précision sur la commande Undo, voir ici
DevBaldwin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2011, 11h32   #8
Membre du Club
 
Homme Mathieu
Étudiant
Inscription : avril 2011
Messages : 133
Détails du profil
Informations personnelles :
Nom : Homme Mathieu
Localisation : France, Vosges (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 133
Points : 50
Points : 50
Envoyer un message via MSN à theuma
C'est super c'est exactement ce que je voulais ... Je test ca !!
theuma est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2011, 11h41   #9
Membre du Club
 
Homme Mathieu
Étudiant
Inscription : avril 2011
Messages : 133
Détails du profil
Informations personnelles :
Nom : Homme Mathieu
Localisation : France, Vosges (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 133
Points : 50
Points : 50
Envoyer un message via MSN à theuma
Le problème c'est que j'ai un sou formulaire ... Comment faire pour que le sous formulaire ne sois pas pris en compte non plus ??
J'ai essayer le Forms!SousFormulaire.Undo
Mais ca ne marche pas ...
theuma est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2011, 12h24   #10
Nouveau Membre du Club
 
Avatar de DevBaldwin
 
Homme
Développeur informatique
Inscription : avril 2011
Messages : 47
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : avril 2011
Messages : 47
Points : 36
Points : 36
Je n'ai pas encore rencontrer ce genre de contrainte.
Essaye peut-être qq chose comme :
Code :
1
2
3
4
Private Sub Commande363_Click()
    Me.[Nom de ton sous formulaire].Form.Undo
    DoCmd.Close
End Sub
Si je n'ai pas encore rencontré ce genre de problème, c'est que je ne permets aucune modification sur un sous-formulaire (données verrouillés=True).
A la place, je crée un lien sur la clé primaire de chaque enregistrements qui amène sur un nouveau formulaire pour modifier l'objet en question.
Cette méthode est plus avantageuse à mon sens.
DevBaldwin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2011, 12h40   #11
Membre du Club
 
Homme Mathieu
Étudiant
Inscription : avril 2011
Messages : 133
Détails du profil
Informations personnelles :
Nom : Homme Mathieu
Localisation : France, Vosges (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 133
Points : 50
Points : 50
Envoyer un message via MSN à theuma
Il ne me jette pas mais ce ne fonctionne pas ...
theuma est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2011, 13h48   #12
Membre du Club
 
Homme Mathieu
Étudiant
Inscription : avril 2011
Messages : 133
Détails du profil
Informations personnelles :
Nom : Homme Mathieu
Localisation : France, Vosges (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 133
Points : 50
Points : 50
Envoyer un message via MSN à theuma
J'ai trouver une solution qui n'est pas très propre mais elle fonctionne
voila le code que j'ai réalisé
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
Option Compare Database
Private User As Integer
Private Flag As Integer
 
Private Sub Commande17_Click()
DoCmd.Save
reponse = MsgBox("Si le travail n'est pas validé il sera perdu, Voulez-vous vraiment quitter ?", vbYesNo + vbWarnings, "Quitter")  ' le critical c'est juste pour la croix rouge.
If reponse = vbYes Then
DoCmd.Close
If Flag = False Then
Dim IDmax As Integer
IDmax = IdCdeMax
DoCmd.SetWarnings False
DoCmd.RunSQL ("Delete * From PrefabCommande Where FK_Commande =" & IDmax)
DoCmd.RunSQL ("Delete * From Commande where ID_Commande =" & IDmax)
DoCmd.SetWarnings True
End If
End If
 
End Sub
 
Private Sub Commande35_Click()
Flag = True
DoCmd.Save
reponse = MsgBox("Voulez vous imprimer la feuille de Réappro ?", vbYesNo + vbExclamation, "Approvisionnement") ' le critical c'est juste pour la croix rouge.
If reponse = vbYes Then
DoCmd.OpenReport "Reappro4", acViewNormal, , "ID_Commande =" & IdCdeMax
End If
DoCmd.GoToRecord acDataForm, "Commande", acNewRec
End Sub
 
 
Private Sub Form_AfterInsert()
Flag = False
End Sub
 
Private Sub Form_Load()
Flag = False
DoCmd.GoToRecord acDataForm, "Commande", acNewRec
Me.Texte23.Value = Format(Now, "dd/mm/yyyy")
Dim Nom, Prenom, SQL1, SQL2 As String
Dim dbs As Database
Dim rst1, rst2 As Recordset
Set dbs = CurrentDb
SQL1 = " Select nom FROM Operateur Where ID_Operateur = " & GetUser
SQL2 = " Select prenom FROM Operateur Where ID_Operateur = " & GetUser
Set rst1 = dbs.OpenRecordset(SQL1)
Set rst2 = dbs.OpenRecordset(SQL2)
Nom = rst1.Fields(0)
Prenom = rst2.Fields(0)
Texte29.Value = Nom & " " & Prenom
Me.FK_Operateur = GetUser
End Sub
 
Private Sub Modifiable7_AfterUpdate()
Dim Ville, SQL1, Num, SQL2 As String
Dim dbs As Database
Dim rst1, rst2 As Recordset
Set dbs = CurrentDb
SQL1 = " Select ville FROM SousTraitant Where ID_SousTraitant = " & Me.Modifiable7.Value
SQL2 = " SELECT Max ( Numero)As nb FROM Commande Where FK_SousTraitant= " & Me.Modifiable7.Value
Set rst1 = dbs.OpenRecordset(SQL1)
Set rst2 = dbs.OpenRecordset(SQL2)
Num = rst2.Fields(0)
Ville = rst1.Fields(0)
Me.Texte33.Value = Ville
Me.Numero.Value = Num + 1
End Sub
 
Public Function IdCdeMax() As Integer
Dim dbs As Database
Dim rstmax As Recordset
Set dbs = CurrentDb
Set rstmax = dbs.OpenRecordset("Select Max(ID_Commande) From Commande")
IdCdeMax = rstmax.Fields(0)
End Function
Ce qui est intéressant c'est la gestion du flag, le reste c'est pour mon appli perso !!
theuma 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 10h57.


 
 
 
 
Partenaires

Hébergement Web