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 05/04/2011, 22h10   #1
Nouveau Membre du Club
 
Inscription : avril 2009
Messages : 131
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 131
Points : 38
Points : 38
Par défaut blocage et numerotation

Bonjour

Dans ma base de données j'ai deux enregistrements ou je ne dois pas dépasser un nombre donné.

je voudrais pouvoir mettre un verrouillage sur ces champs ou à partir du moment ou l'on atteint le nombre maximum d'enregistrement.

Mes deux champs sont:

Nb_serie dans ma table discipline
Nb_tir_par_serie dans ma table discipline

champs ou je voudrais un verrouillage

Num_serie dans ma table série
Num_tir dans ma table tir

De plus comment faire pour numéroter automatiquement ces deux champs quand je clique sur un bouton ou appuis sur entre numérotation de 1 à X selon le nombre inscrit dans ma table.

en vous remerciant d'avance pour le renseignement
titi57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 23h02   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 462
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 462
Points : 7 539
Points : 7 539
En Access 2007, sur la table, tu ne peux pas limiter le nombre d'enregistrements.

Au niveau d'un formulaire tu peux controler le nombre d'enregistrements et empécher qu'on en saisisse plus d'un certain nombre mais cela n'empèche pas quelqu'un d'aller dans ta table pour y ajouter des enregistrements.

Dans le formulaire tu peux mettre du code dans l'événement BeforeInsert qui va vérifier combien il y a d'enregistrements déjà saisie et annuler l'insertion si tu en as déjà assez.

Sinon tu peux aussi passer à Access 2010 où tu pourra utiliser les nouveaux 'triggers' qui te permettent d'exécuter des actions directement dans la table.

Si tu veux des détails pour le contrôle par formulaire, demande-le.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/04/2011, 12h03   #3
Nouveau Membre du Club
 
Inscription : avril 2009
Messages : 131
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 131
Points : 38
Points : 38
bonjour

merci pour les infos

pouvez vous me dire exacte comment et ou mettre le cade

en vous remerciant d'avance pour votre aide
titi57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 18h49   #4
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 462
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 462
Points : 7 539
Points : 7 539
Voici des exemples de comment on peut y arriver.

Tu peux choisir une sub, une combinaison de sub ou toutes. Cela dépend de ce que tu veux faire.

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
 
Option Compare Database
Option Explicit
 
Private Const NB_ENR_MAX As Long = 3
 
Private Function CompterEnr() As Long
    Dim result As Long
 
    Dim r As DAO.Recordset: Set r = Me.RecordsetClone
    If r.RecordCount <> 0 Then
        r.MoveLast
    End If
 
    result = r.RecordCount
 
    Set r = Nothing
 
    CompterEnr = result
End Function
 
Private Sub Form_AfterInsert()
 
    If CompterEnr >= NB_ENR_MAX Then
        'Interdit les autre ajout (à utiliser avec le OnCurrent sinon tu ne pourra plus faire d'ajout même si tu as supprimer des enr.)
        MsgBox "Vous avez atteind le maximum de " & NB_ENR_MAX & " enr"
        Me.AllowAdditions = False
    End If
 
End Sub
 
Private Sub Form_BeforeInsert(Cancel As Integer)
 
    If CompterEnr() > NB_ENR_MAX Then
        'Annule l'ajout les données saisies seront perdues.
        MsgBox "Au maximum " & NB_ENR_MAX & " enr"
        Cancel = CInt(True)
    End If
 
End Sub
 
Private Sub Form_Current()
 
    If CompterEnr() < NB_ENR_MAX Then
            'Autorise l'ajout
            Me.AllowAdditions = True
        Else
            'Interdit l'ajout
            Me.AllowAdditions = False
    End If
 
End Sub
 
Private Sub Form_Open(Cancel As Integer)
    If CompterEnr() >= NB_ENR_MAX Then
        'Empêche l'ajout si on a atteint le max
        Me.AllowAdditions = False
    End If
End Sub
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/04/2011, 21h22   #5
Nouveau Membre du Club
 
Inscription : avril 2009
Messages : 131
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 131
Points : 38
Points : 38
bonsoir

merci pour le code

mais avec se code je ne peu pas ajoute plus de 3 enregistrement .

alors que dans mon cas le nombre d'enregistrement de "Num_serie" dois correspondre au champs "Nb_serie"

bonne soiree
titi57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 15h04   #6
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 462
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 462
Points : 7 539
Points : 7 539
Je n'ai pas dit que j'écrirai le code qui répond exactement à ton problème :-).

Tu peux récupérer cette valeur et t'en servir dans la fonction de contrôle la logique d'autorisation.

Un truc du genre

Code :
1
2
3
4
5
6
7
8
9
10
Private Sub Form_AfterInsert()
 
    If CompterEnr >= Me.NbSerie Then 
        'Si NbSerie est un élément de l'enre courant
        'Interdit les autre ajout (à utiliser avec le OnCurrent sinon tu ne pourra plus faire d'ajout même si tu as supprimer des enr.)
        MsgBox "Vous avez atteind le maximum de " & NB_ENR_MAX & " enr"
        Me.AllowAdditions = False
    End If
 
End Sub
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/04/2011, 20h52   #7
Nouveau Membre du Club
 
Inscription : avril 2009
Messages : 131
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 131
Points : 38
Points : 38
bonsoir

merci pour ton aide mais les codes que tu ma donner ne fonctionne pas

il bloque ou me donne un message d'erreur
titi57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2011, 21h57   #8
Nouveau Membre du Club
 
Inscription : avril 2009
Messages : 131
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 131
Points : 38
Points : 38
Par contre j'ai essaiyé juste de mettre

Code :
1
2
3
4
5
6
7
Private Sub Form_AfterInsert()
 
If serie.Num_serie > match.Nb_serie Then
 
 End If
 
End Sub
et il me dit erreur d'execution 424 : objet requis

bonne soirée
titi57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 22h25   #9
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 462
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 462
Points : 7 539
Points : 7 539
Je n'en suis pas surpris.

Je ne peux pas écrire du code qui fonctionne directement dans ton application mais seulement te donner des exemples de codes qu'il convient d'adapter.

Avec ton dernier code, que représente
  • serie.um_serie
  • match.Nb_serie

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 13h11   #10
Nouveau Membre du Club
 
Inscription : avril 2009
Messages : 131
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 131
Points : 38
Points : 38
bonjour

serie.num_serie et la valeur qui dois changer quand je fais entre cela dois ajoute 1 . et c'est la valeur qui ne dois pas depasse la valeur de match.nb_serie

a plus
titi57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 18h06   #11
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 462
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 462
Points : 7 539
Points : 7 539
match.nb_serie vient d'une table ?

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 20h13   #12
Nouveau Membre du Club
 
Inscription : avril 2009
Messages : 131
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 131
Points : 38
Points : 38
Bonjour

Oui nb_serie vient d'une table
et num_serie d'une autre table.

a plus
titi57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 18h40   #13
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 462
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 462
Points : 7 539
Points : 7 539
Ok, ça risque d'être long, une information à la fois.

Peux-tu m'envoyer une copie de ta BD par email, je vais la regarder d'ici dimanche.

Je mets mon eMail dans un message privé.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/04/2011, 20h49   #14
Nouveau Membre du Club
 
Inscription : avril 2009
Messages : 131
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 131
Points : 38
Points : 38
merci pour votre aide
titi57 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 02h01.


 
 
 
 
Partenaires

Hébergement Web