Empêcher access d'enregistrer directement

Résolu/Fermé
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013 - 3 janv. 2009 à 11:10
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 - 15 févr. 2009 à 00:08
Bonjour,l'ami

j'aimerais savoir comment faire pour empêcher access d'enregistrer automatiquement les modifications de données

j'ai prévu un code de confirmation à cet effet que j'ai placé sous l'évènement before_update du formulaire

If MsgBox("Voulez-vous confirmer la modification", vbQuestion + vbYesNo, "CONFIRMATION") = vbNo Then
Me.Undo
Cancel = True
End If

le code marche mais pas seulement pour les modifications. ie lorsque je fais un nouvel enregistrement et que j'aimerais passé à l'enregistrement suivant, il me demande si je veux confirmer les modifications!!!!
c'est vraiment embêtant, aider moi

24 réponses

LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
3 janv. 2009 à 18:06
C'est normal que ça fasse ça, c'est le fonctionnement même d'Acccess. Il enregistre avant de passer au suivant.

Tu pourrais par exemple rajouter un champ "Nouveau", qui serait par défaut à Oui, et tu modifierais ton code comme ça:

If Me!Nouveau.Value = True then
Me!Nouveau.Value =False
Else
If MsgBox("Voulez-vous confirmer la modification", vbQuestion + vbYesNo, "CONFIRMATION") = vbNo Then
Me.Undo
Cancel = True
End If
End if
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
4 janv. 2009 à 15:14
Bonjour LatelyGeek

je ne comprends pas le code surtout le début "If Me!Nouveau.Value = True then Me!Nouveau.Value =False " , j'aimerais que tu éclaires ta lanterne.

segondo, j'ai crée un formulaire identification avec les champs :
- utilisateur en liste déoulante (unseen;latelyGeek)
- groupe en liste déroulante (port a , port b)

j'ai crée deux macro (macro1 et macro2) la macro1 ouvre le menu1 et la macro2 ouvre le menu2 . j'ai ensuite crée un bouton de commande que j'appelle connection

je veux si utilisateu = unseen et groupe = port a , en cliquant sur le bouton connection la macro1 s'exécute
de meme si utilisateur = latelygeek et groupe = port b , en cliquant sur le bouton connection la macro2 s'exécute

aide moi pour le code stp
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
4 janv. 2009 à 18:18
Iol faut que tu rajoutes un champ Nouveau, avec valeur par défaut = Oui, comme ça tout nouvel enregiostrement serait considéré comme Nouveau grâce à ce champ.
A la mise à jour, Nouveau étant à Oui, Access le mettrait juste à Non.
Ensuite, Nouveau étant à Non, il demanderait la validation de l'enregistrement? Tu me suis?

Pour la suite, je comprends pas: Il y a 4 possibilités et seulement 2 macros.

Unseen, Port A --> Macro 1
LatelyGeek, Port B --> Macro2

LatelyGeek, Port A --> ?
Unseen, Port B --> ?

0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
5 janv. 2009 à 09:13
oui, je l'ai omis
Si les deux conditions ne sont pas respectées , en cliquant sur le bouton de commande connection , la macro3 s'exécute. cette macro3 prévoit un msgbox disant à l'utilisateur de revoir ces identifiants. exple " Veuillez revoir vos identifiants "

je ne sais si au lieu d'une macro3 il serait mieux de faire le msgbox directement.

Au fait j'ai plutôt 3 champs
- utilisateur
- mot de passe
- groupe

je pense que si j'ai la syntaxe avec utilisateur et groupe ,je pourrai l'adapter. mais si tu peux le faire, je t'en serai gré.
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
5 janv. 2009 à 10:26
je comprends aussi ton code mais où et sur quel évènement devrais je le placer : le formulaire, le champ nouveau , sur mon bouton de commande " nouvel enregsitrement" ou sur mon bouton de commande "précédent "
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
5 janv. 2009 à 12:25
En fait, à mon sens, si Port A ne peut correspondre qu'à Unseen et vice versa, il est inutile de remplir les deux champs, non?

Quant au code, peut-être que tu devrais essayer "Avant MAJ" dans les propriétés du formulaire.
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
5 janv. 2009 à 13:34
j'ai essayé le code en question sur l'évènement before_update, apparemment il ne semble marcher.

En ce qui concerne le code sur la connection, comme il est vrai que unseen = port a et latelygeek = port b mais je me suis dit que l'utilisateur pourrait se tromper d'où la macro3 faisant apparaitre le msgbox.
Peut être que je devrais synchroniser les listes déroulantes pour gangner en syntaxe. ainsi le code ne va concerner que l'utilsateur et son mot de passe.

j'espère que tu me suis?
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
5 janv. 2009 à 18:46
Chez moi, BeforeUpdate fonctionne. Mais dans les propriétés du formulaire lui même, on est d'accord? Pas d'un des champs.

Et pour la deuxième question, je persiste à penser qu'une des deux zones de choix ne sert à rien... Si Unseen ne peut être que sur le Port A, à quoi bon choisir la personne ET le port???
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
5 janv. 2009 à 19:22
je vais rééssayer le code ,le problème doit être du au fait que mes boutons d'actions ouvraient mes formulaires en mode boite de dialogue plutot que standard. je t'informe par la suite.

En ce qui concerne le code de connection je suis d'accord avec toi , c'est vrai j'ai voulu zéler un peu.
Aide moi donc pour la syntaxe avec utilisateur et mot de passe, biensur en prévoyant mes macro (1 et 2) ainsi que le msgbox obligeant l'utilisateur à ressaisir ces données en cas d'erreur.
0

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

Posez votre question
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
6 janv. 2009 à 10:50
Je veux bien t'aider mais il me manque des éléments;

Tu mets deux exemples, mais combien d'utilsateurs as-tu en réalité? En fonction de quoi le choix du formulaire à ouvrir se fait-il? Le nom, ou le Port? Ce port est-il stocké quelque part???

J'ai besoin de ces infos pour te répondre.
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
6 janv. 2009 à 13:13
OK , le code marche

Now, je vais t'expliquer ma base ...

ma base sera utilisée très surement par 3 entités (le port de peche , le port de commerce, la direction commerciale), j'ai pas la liste de tous les utilisateurs mais disons qu'il sont au moins trois (3)

j'ai crée un formulaire " identification" :

- utilisateur (A, B, C ,....)
- mot de passe (...)
- groupe en liste déroulante (port de peche; port de commerce, direction commerciale)

Comme je testais jusqu'à présent , j'ai inscrit ces 3 entités de mon groupe en liste de champs mais peu qu'il faille les mettre dans une table, non?

j'ai crée 3 formulaires "peche, commerce, direction" qui sont en fait les différents menus de mes 3 groupes

j'ai crée 3 macro (la tâche de chacune des macro est de fermer le formulaire "identification " et d'ouvrir, selon sa correspondance le formulaire "peche", "commerce" ou "direction". Ainsi donc

macro1 pour le formulaire "peche"
macro2 pour le formulaire "commerce"
macro3 pour le formulaire "direction"

Sur le formulaire "identification" j'ai mis un unique bouton de commande "connection". J'aimerais que si :

- utilisateur "A" entre avec son password "X" et dans le groupe " port de peche", en cliquant sur "connection", le formulaire " peche" s'ouvre.
- utilisateur "B" entre avec son password "Y" et dans le groupe " port de commerce", en cliquant sur "connection", le formulaire " commerce" s'ouvre.
- utilisateur "C" entre avec son password "Z" et dans le groupe " direction commerciale", en cliquant sur "connection", le formulaire "direction" s'ouvre.

Enfin si cette logique n'est pas respectée, un msgbox apparait pour demander à l'utilisateur de revoir ses identifiants et lui permettre de les ressaisir.

Voici en gros le projet, mais si tu penses que je peux faire simple, je suis ouvert à ta proposition. Je dois faire une présentation de ma base à mon boss en fin de semaine, tu seras gré de m'aider pour de code.

il faut dire que dans mes différents menus, j'ai mis une commande "quitter" qui ferme directement l'application. je ne sais si cela posera un problème lorsqu'il y aura plus d'un utilisateur connecté. Est ce qu'il faille plutôt crée un bouton "déconnection".

Merci de l'aider l'ami.
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
6 janv. 2009 à 13:24
Sur l'expresion "OK, le code marche ", je parlais du code précédent que tu m'avais conseillé pour ma modification des données.

J'espère que tu as tous les détails pour le bouton de conncection

Merci pour tout !
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
6 janv. 2009 à 15:49
Tu ne me dis pas non plus OU Access doit vérifier le mot de passe. Je suppose qu'il est enregistré dans la base...
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
6 janv. 2009 à 19:05
salut l'ami, je comprends toutes tes demandes mais il faut dire que je ne maitrise pas très bien ce volet. Donc si tu penses qu'il faut créer des tables pour stocker mes données (mot de passe, utilisateur, etc..) fais le selon ta logique, je vais l'adapter dans la mesure de mes possibilités.
je pense que tu t'y connais mieux.
fais ce qui te semble correcte.
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013 > unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
7 janv. 2009 à 13:34
Bonjour, l'ami

j'aimerais savoir comment désactiver la croix (bouton fermer) de mon application access à chaque fois que j'ouvre un formulaire, une requête ou un état de ma base de données de façon à obliger l'utilisateur à sortir de ma base par le bouton que j'ai prévu à cet effet.
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
7 janv. 2009 à 09:54
Bonjour LatelyGeek

Disons que les données (utilisateur, mot de passe, groupe) seront stockées dans 3 tables (T_peche, T_commerce, T_direction) puisqu'il ya trois formulaires (F_peche,F_commerce,F_direction) à ouvrir. Bien sur, le bouton "connection" en ouvrant chacune de ces formulaires, ferme le formulaire connection "F_connection"'. je prévois bien évidemment un msgbox "identifiants incorrects" et un bouton "annuler" pour quitter l'application au cas où l'utilisateur ne connaitrait ses identifiants.
je pense que c'est plus simple comme ça plutôt que de chercher à exécuter des macros, non?
j'espère que tu me comprends now.
Merci de m'aider pour ce code.
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
7 janv. 2009 à 15:01
Déjà, mauvaise pioche. Une seule table, avec un champ "Port", qui contiendra Pêche, Direction ou Commerce.

Mais là, on dirait qu'on part carrément de zéro. Je vais répondre à tes questions une par une, mais pas construire la base à ta place. J'y passerais mes journées, vous êtes un certain nombre à poser des questions ici, et c'est juste un forum d'entraide...
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
7 janv. 2009 à 16:12
Désolé de t'importuner. comme je te l'ai dit ce volet, je ne le maitrise pas bien.
ma base est fin prête, j'en suis au niveau du formulaire login/mot de passe et de la désactivation totale de la croix de l'application access.

le bouton "connexion" que j'ai créé sur le formulaire " identifiant" doit ouvrir trois (3) autres formulaires selon le groupe auquel appartient un utilisateur avec un mot de passe donné.

lorsque je t'ai parlé toute à l'heure de 3 tables (T_peche contient les identifiants des utilsateurs du port de pêche, T_commerce contient les identifiants des utilisateurs du port de commerce, T_direction ....) , je me suis qu'on pourrait prévoir une requête de sélection dans le code, de sorte que l'utilisateur d'un groupe donné entre le bon mot de passe.

Si tu penses qu'on pourrait le faire avec une table, no problem

Soit la table T_users (utilisateur, password,groupe) . je suppose qu'elle est remplie de la manière suivante

UTILISATEUR PASSWORD GROUPE
A ........... zero ................ peche
B ........... un .............. commerce
C ......... deux ............. direction

* l'utilsateur "A" a pour password "zero" et appartient au groupe "peche" ....

Ainsi je peux ajouter un nouveau utilisateur comme supprimer un ancien
j'espère que tu me comprends, désolé pour toute à l'heure.
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
7 janv. 2009 à 18:49
Salut LatelyGeek.

Comme je te l'ai dit j'ai crée la table T_users (utilisateur, password,groupe). j'ai mon formulaire "identifiant" avec un bouton de commande "connection" qui ouvre soit le formulaire "F_peche", soit "F_commerce", soit "F_direction". Biensur selon les correspondances de la table T_users (détaillées dans mon précédent message)

le début de mon code est ci -dessous . je peine à écrire le sql (sql = "SELECT * FROM T_user WHERE ...) et à adapter le if aux trois formulaires(F_peche,F_commerce,F_direction). tu pourrais aussi vérifier si je ne me suis pas fourvoyé dans le début de ce code.


Private Sub connection_Click()

Me.Requery
Dim sql, User_id, User_groupe As String
Dim rs As DAO.Recordset
Static i As Byte
sql = "SELECT * FROM T_user WHERE ..............
Set rs = CurrentDb.OpenRecordset(sql)
If Not rs.EOF Then
DoCmd.OpenForm "F_peche", acNormal, , , , acdialog
(' le formulaire s'ouvre sous forme de boite de dialogue)
DoCmd.Close acForm, "F_connection"
User_id = rs("utilisateur").Value
User_groupe = rs("groupe").Value
Else
MsgBox " Veuillez revoir vos identifiants ", vbInformation, "Connexion"
i = i + 1
End If
If i = 3 Then
MsgBox "Vous avez dépassé le nombre de tentatives autorisés", vbCritical
DoCmd.Quit
End If


End Sub

Cordiales salutations
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
8 janv. 2009 à 00:27
Il y a plein de trucs qui ne marcheront pas, dans ton code.

Je te propose de faire différemment, et le plus simple possible avec peu de VB.

Le formulaire s'appelle: Connection.

La zone ou l'utilisateur va choisir son Indentifiant: ChoixId

Celle où il va taper son mot de passe: MotPasse

Celle où va s'afficher son groupe: Groupe. Dedans, tu écriras =RechDom("Groupe";"T_Users";"Utilisateur=ChoixId")
Ca affichera automatiquement le nom du groupe qui doit indiquer le formulaire à ouvrir.

Tu vas en rajouter une, que tu appelleras PassWord et qu'on masquera. Dedans, tu écriras =RechDom("PassWord";"T_Users";"Utilisateur=ChoixId")
Ca affichera automatiquement son mot de passe, mais comme cette zone sera masquée il ne pourra pas la lire.

Tu vas aussi mettre une zone que tu appelleras Compteur, qui comptera les tentatives. On la masquera aussi.

Dans la propriété Après MAJ de la zone ChoixId, tu vas écrire un bout de code:
DoCmd.Requery("MotPasse")
DoCmd.Requery("Groupe")
Me!Compteur.Value = 1
pour que les valeurs s'affichent dès que l'utilisateur se sera identifié, et que le numéro de tentative soit bien remis à un.

Et ensuite, le bouton:

Private Sub Commande0_Click()

If Me!MotPasse.Value = Me!PassWord.Value Then
DoCmd.OpenForm "F_" & Me!Groupe.Value, acNormal, , , , acDialog
DoCmd.Close acForm, "F_connection"
Else
If Me!Compteur.Value = 3 Then
MsgBox "Vous avez épuisé vos trois tentatives de connection"
DoCmd.Quit
Else
MsgBox "Mot de passe incorrect, merci de réessayer"
Me!Compteur.Value = Me!Compteur.Value + 1
End If
End If
End Sub



J'espère que tu as suivi parce que vue l'heure, j'ai la flemme de m'expliquer...
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
8 janv. 2009 à 12:24
Merci LatelyGeek
j'ai testé Ton code dès les premières heures et il marche correctement. la petite remarque que je fais est que mon formulaire "connection" ne se ferme pas directement lorsque le formulaire "F_peche,F_commerce ou F_direction" s'ouvre. Par contre, il se ferme lorsque j'ouvre un formulaire contenu dans ces formulaires. Vraiment merci, c'est déjà bon.

J'aimerais maintenant savoir comment désactiver la croix (touche fermer) de mon application access aussi bien lorsque j'ouvre un formulaire, un état ou une requête.Cela pour obliger l'utilisateur à sortir par la commande prévue à cet effet

Encore Merci.
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
8 janv. 2009 à 14:53
Connection ne se ferme pas parce que tu ouvres l'autre en mode boîte de dialogue.

Et pour ce qui est de la croix j'en sais rien, c'est du Windows, pas de l'Access et je sais même pas si c'est possible. Il faudrait voir si on peu attacher un code à la fermeture de la base, comme on peut le faire pour un formulaire.


---
Pourquoi se compliquer la vie à faire simple, quand c'est si simple de faire compliqué?
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
8 janv. 2009 à 16:43
Ok, j'ai crée des requêtes auxquelles j'avais donné des noms pas très bien libellé vu que j'étais en plein conception. j'aimerais maintenant changer ces libellés qui s'affiche dans la barre de titre comment puis - je le faire.
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
8 janv. 2009 à 16:54
je veux aussi afficher mon formulaire d'ouverture "F_connection" sous la forme d'une boîte de dialogue.

j'ai écrit sur l'évènement ouverture du formulaire le code suivant :

DoCmd.OpenForm "F_connection", acNormal, , , , acDialog

Est l'emplacement du code qui est mal indiqué ou le problème se trouve dans le code lui même

Merci d'avance !
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
8 janv. 2009 à 21:58
Pourquoi tu veux des boîtes de dialogue? Le truc, c'est que le formulaire s'ouvre en mode normal, et tu lui demandes le mode Boîte dialogue alors qu'il est déjà ouvert...
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
9 janv. 2009 à 08:59
Ok, j'ai crée des requêtes auxquelles j'avais donné des noms pas très bien libellés vu que j'étais en pleine conception. j'aimerais maintenant changer ces libellés qui s'affiche dans la barre de titre comment puis - je le faire.

Est ce qu'il serait aussi possible de modifier le code que tu m'a proposé pour le formulaire "connection" afin d'y mettre un utilisateur unique "Administrateur" qui aura accès aux trois autres formulaires. j'ai pensé à créer trois administrateurs avec différents mot de passe :

adminstrateur A pour le formulaire F_peche
adminstrateur B .........................F_commerce
adminstrateur C .........................F_direction

Mais je trouve que ça ne fait pas trop professionnel. Aide moi STP.
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
9 janv. 2009 à 12:50
Tu sais LatelyGeek, je comprends parfaitement ta réaction. Pour sûr j'ai pas tes connaissances en access. jusqu'à présent je n'avais fait que de petites bases de données access. la base actuelle est dense et complexe. Au fait ce n'est pas que je ne sache pas ce que j'ai à faire mais mon boss, me demande beaucoup plus de choses à la fois. A l'heure où je te parle , je suis entrain de la modifier encore alors que je croyais finir
je pense avoir compris ton code du moins en partie et j'ai essayé de changer le nom de mes requêtes en passant par la propriété légende à l'instar du formulaire ou du code me!caption "...".mais rien n'y fit.
Anyway je vais y réfléchir à nouveau et te faire la suite. je te remercie pour ta patience et tes sacrifices.Dire que tu es quelqu'un de bien ne serait jamais assez car ils ne sont pas nombreuses ses personnes qui consacrent du temps aux autres. les propos que je te tiens ne sont pas laudatifs et ils ne visent aucune intention sous jacente.(crois moi) je suis quelqu'un de sincère dans tout ce que je fais et ma qualité à moi c'est la fidélité dans les relations.
je pense que quand tout cela finira, j'échangerai plus profondément avec toi.
Amicalement.
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
9 janv. 2009 à 10:38
Ben, euh... à vrai dire...

Tu vois, ce qui serait cool, c'est que tu attendes de savoir ce que tu veux faire AVANT de me demander de te pondre des codes.
Pas modifier ce que j'ai déjà eu la patience de faire parce que tu avais pas réfléchi à tel ou tel truc.

Les deux questions que tu poses, tu devrais pouvoir y répondre seul, si tu connaissais Acces un minimum pour ce qui concerne les requêtes, et si tu avais compris mon code pour la deuxième.

Je peux pas faire ta base à ta place, on est là juste pour des coups de pouce, tu comprends?


0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
12 janv. 2009 à 09:55
Bonjour LatelyGeek, j'espère que ton week end était cool.
je pense avoir compris ce que tu as voulu dire par "si je comprenais ton code". En effet, j'ai crée un formulaire "administrateur" donnant accès au trois autres formulaires.

Mais pour mes requêtes, je constate que quelque soit le nom que je les donne, le type de requête est toujours précisé. exple (BILAN JOURNALIER : requête sélection).

je voudrais savoir s'il est possible de supprimer "requête sélection" dans mes titres de requêtes.

j'ai aussi créé un champ texte "mois" en une liste déroulante (janvier , février, etc) je constate que lorsque je déroule la liste , access les classe par ordre alphabétique. Comment puis imposer à access de respecter l'ordre des mois (de janvier à décembre)

Enfin, je partage avec toi le code de désactivation de la croix de l'application access dont je t'avais parlé.je l'ai eu sur un forum. Voici la syntaxe :

Copie le code dans un module

Option Compare Database
Option Explicit

Public Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Public Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Public Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Public Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long

Public Const MF_BYPOSITION = &H400&
Public Const MF_REMOVE = &H1000&
Public Function DisableX()
'Désactive le X de fermeture d'ACCESS
Dim hMenu As Long
Dim nCount As Long
hMenu = GetSystemMenu(Application.hWndAccessApp, 0)
nCount = GetMenuItemCount(hMenu)

Call RemoveMenu(hMenu, nCount - 1, MF_REMOVE Or MF_BYPOSITION)
Call RemoveMenu(hMenu, nCount - 2, MF_REMOVE Or MF_BYPOSITION)
Call RemoveMenu(hMenu, nCount - 3, MF_REMOVE Or MF_BYPOSITION)

DrawMenuBar Application.hWndAccessApp
End Function


Puis par exemple dans ta macro Autoexec :
Action = ExécuterCode
Nom fonction =DisableX()

Amicalement !
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
13 janv. 2009 à 18:55
Salut LatelyGeek.

je me répends , je ne te poserai plus de questions banales si telle est la raison de ton absence. Encore une fois je tiens à m'excuser et franchement j'aimerais qu'on se quitte en de bons termes.

j'aimerais que tu fasses fi de toutes les questions que je t'ai posé précédemment et que tu répondes à celle ci . il s'agit de la mise en réseau du base de données.

j'ai ma base qui sera utilisée par plusieurs personnes à la fois. j'ai oui dire qu'il ne faut partager l'application mais plutôt les tables. j'aimerais que tu me donne l'idée générale de la mise d'une base en réseau.

STP réponds moi .
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
13 janv. 2009 à 19:37
Généralement ça fonctionne assez bien d'installer comme tu dis, les tables en réseau et l'application elle-même en local sur chaque poste.
Ca merdouille parfois, mais globalement ça fonctionne.

T'inquiète, quand je suis pas là c'est juste que... je suis pas là!
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
15 janv. 2009 à 14:13
Salut LatelyGeek, j'aimerais savoir comment tu caches généralement l'accés de ta base à l'utilisateur de façon à être le seul à y avoir accès.

j'ai utilisé la commande "demarrage" pour faire apparaitre mon formulaire d'ouverture "connection" .Ensuite pour y avoir accès, j'ai crée mon propre menu avec la commande "demarrage" que j'ai renommée par un point comme ceci "." il faut être vraiment vigilant pour le voir. Mais je me dis que quelque qui si connais pourrais y avoir accès facilement.

Pourrais tu me donner une astuce plus robuste.
Merci
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
15 janv. 2009 à 17:30
Va dans le menu Outils-Sécurité-Autorisations d'accès.
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
30 janv. 2009 à 12:00
Bonjour LatelyGeek

j'aimerais faire défiler un texte dans ma barre de titre access. exple "bienvenue sur X". j'ai vu sur un forum qu'il est possible de le faire avec la syntaxe SetTitle et/ou SetStatusText. Pourrais tu m'aider ?
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
16 janv. 2009 à 08:52
le problème ici, c'est que j'ai déjà un formulaire d'ouverture "F_connection", en utilisant la sécurité_ outils il ya une boite de dialogue qui s'ouvre également à l'ouverture. je trouve que s'identifier deux fois ça fait un peu trop.
ou bien est ce qu'il est possible de ne pas faire apparaitre la seconde boite d'identification que windows génère.
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
30 janv. 2009 à 17:49
Alors je vais répondre aux deux questions d'un coup:
Tu veux deux niveaux d'identification, un qui dépend d'Access - la possibilité de modifier ou non les objets - et l'autre pour servir de filtre aux données. Deux niveaux, deux identifications. C'est comme ça.

Et pour ton titre qui défile... C'est typiquement le genre de truc qui parasite une appli, un risque de bug supplémentaire, et qui sert à rien en plus. Je ne me sers jamais de ces trucs là, donc je ne pourrai pas t'aider.
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
30 janv. 2009 à 19:09
ok, je prends bonne note ...


je suis passé par l'outil démarrage pour afficher directement mon formulaire "connection". le probleme est qu'il possible à l'utilisateur de déformer la forme de ce formulaire.

j'ai écris un code sur l'évènement "sur ouverture " du formulaire "connection" afin de le faire apparaitre en mode boite de dialogue.

DoCmd.OpenForm "connection", acNormal, , , , acDialog


ça ne marche pas. je ne sais si c'est le code qui est mal libellé ou ya t'il une propriété permettant de ne pas modifier la forme du formulaire.

Merci de m'aider
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
31 janv. 2009 à 15:49
Je pense surtout qu'une fois qu'il est ouvert ta commande ne sert plus à rien, et la propriété "sur ouverture" arrive trop tard.

Il vaudrait mieux écrire un autoexec qui ouvre le formulaire en mode boîte de dialogue.

Ca doit exister en vb, mais j'avoue à ma grande honte que je ne sais pas. Par contre, tu peux écrire une macro, que tu appelles autoexec.
----
Pourquoi se compliquer la vie à faire simple, quand c'est si simple de faire compliqué?
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
2 févr. 2009 à 19:00
je crois que je serai obligé de laisser ce formulaire dans son é.tat actuel car malheureusement , j'ai déjà crée une macro autoexec pour désactiver la croix de l'application access et donc l'application refuse une seconde macro autoexec.

Merci pour tout !
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
2 févr. 2009 à 20:24
Tu peux mettre plusieurs action dans la macro autoexec, non? Après avoir désactivé la croix, ça t'ouvre ton formulaire... Je dis des bêtises?
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
3 févr. 2009 à 10:18
ok, j'ai mis une seconde action dans ma macro autoexec et ça l'air de marcher à condition de mettre "aucune" pour formulaire d'ouverture dans l'outil démarrage.

Pour ta dernière question la désactivation de la croix n'a pour le moment eu aucun impact sur mon formulaire...

j'ai un fichier sur la mise d'une bd access en mode multi users sur réseaux, il est question la dedans d'une interface dorsale et frontale en liaison. la bd est fractionnée, l'interface dorsale ne comporte que les tables et est installer sur le serveur . Quant à l'interface frontale, elle comprend les formulaires, les requetes et les macro et est installer sur tous les autres postes en local. En as tu entendu parlé?

Ma question est de savoir si cette méthode permet de limiter efficacement les risques de bug d'une base access en réseau.?
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
3 févr. 2009 à 11:34
Les tables sur le serveur et l'appli sur chaque poste, c'est la meilleure façon de procéder, mais ça n'empêche pas les bugs à 100%. Ca dépend aussi des performances du réseau...
0
unseen Messages postés 56 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 25 avril 2013
4 févr. 2009 à 12:08
Bonjour LatelyGeek

j'aimerais savoir la capacité de stockage de données d'une bd access ? Est le fait de mettre ma bd (interface dorsale ) sur un serveur permettra de stocker durablement les données (combien d'années au max) ? sinon quelle alternative ?

désolée de te poser toutes ces questions à la fois, au fait la bd gèrera des statistiques portuaires et je n'aimerais pas prendre de risques.

Merci d'avance
0