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 07/07/2011, 11h01   #1
Invité régulier
 
Vincent Videau
Inscription : novembre 2010
Messages : 28
Détails du profil
Informations personnelles :
Nom : Vincent Videau

Informations forums :
Inscription : novembre 2010
Messages : 28
Points : 7
Points : 7
Par défaut Accéder à l'enregistrement courant d'un formulaire

Bonjour,

Je souhaite accéder à la valeur d'un champ de l'enregistrement courant d'un formulaire mais sans succès.

Le but étant de modifier la valeur de ce champ selon que son identifiant soit présent au moins une fois dans une table liée (Proposer) à celle du formulaire (Patient).

J'ai donc essayé le code VBA suivant :

Code VBA :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
Private Sub B1_Click()
 
    Dim nb As Integer
 
    nb = DCount("*", "tableProposer", "numPatient = " & Me.numPatient)
 
    MsgBox (nb) 'Ici j'arrive bien à afficher le nombre d'occurrences pour l'enregistrement en cours
 
    If (nb > 0) Then
 
        Me.B0.Enabled = True ' Mais là ce sont tous les enregistrements qui sont concernés, alors que je voudrais effectuer la modif uniquement sur l'enregistrement concerné
 
    Else
 
        Me.B0.Enabled = False
 
    End If
 
End Sub

Me disant que le problème venait surement du fait que je ne précise pas quel enregistrement modifier (même si dans le Dcount cela ce fait de manière automatique ) j'ai essayé en ajoutant CurrentRecord après Me. dans la condition :

Code VBA :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
Private Sub B1_Click()
 
    Dim nb As Integer
 
    nb = DCount("*", "tableProposer", "numPatient = " & Me.numPatient)
 
    MsgBox ("")
 
    If (nb > 0) Then
 
        Me.CurrentRecord.B0.Enabled = True
 
    Else
 
        Me.CurrentRecord.B0.Enabled = False
 
    End If
 
End Sub

Sauf que je me retrouve avec ce message : "Erreur de compilation: Qualificateur incorrect" et en cliquant sur l'aide j'ai ceci :

"Le qualificateur n'identifie pas un projet, un module, un objet ou une variable de type défini par l'utilisateur au sein de la portée en cours."

mais ca je ne comprend pas vraiment ce que je dois en faire.

En espérant avoir été a peu près clair,

Merci d'avance pour votre aide
papayou94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 17h23   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Pour le verrouillage des enregistrements c'est une logique tout ou rien. Ou ils sont tous verrouillés ou ils sont tous modifiable.

Ton 1er code est le bon mais tu ne l'appèles pas exactement au bon endroit.

Il faut que tu utilises l'évenement 'sur activation' (on_Current) et que tu décides à ce moment là si la personne peut ou ne peut pas modfier le champ.

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
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h46.


 
 
 
 
Partenaires

Hébergement Web