Access

renart Messages postés 13 Statut Membre -  
 renart -
Bonjour à toutes et tous,

Voici mon problème en quelques mots.

J'ai créé récemment une BD en access (je précise que je suis un débutant en cette matière, c'est la première fois que je crée une BD avec ce programme).

J'ai pour simplifier 2 tables et un formulaire.
Ce formulaire doit permettre aux personnes d'encoder facilement les données qui seront reprises dans la première table.
Les personnes qui encodent les données doivent mentionner sur le formulaire leur nom,prénom, service,... Pour éviter qu'il ne soit obligé de retaper à chaque fois leurs coordonnées j'ai créé une deuxième table avec le nom et coordonnées de chaque agent.

Mon idée est que lorsque, via un menu déroulant, il choisisse leur nom, les autres données apparaissent instantannément.
J'ai essayé en créant un sous formulaire ou via une requête, mais à chque fois ça rate.

Qqn aurait-il une idée pour m'aider?

Un tout grand merci.

Renart.

1 réponse

Utilisateur anonyme
 
Bonjour,

Bon, c'est pas évident à expliquer, mais voici comment je procède.

TableA = Table de données
TableB = Table des utilisateurs

RequêteA = Requête de la table des données sans restriction
RequêteB = Requête de la table des utilisateurs sans restriction

FormulaireA = Formulaire en cours tirant ses données des requêtes A & B

Placer un liste déroulante sur le formulaire et accrocher la sur
la requête B.

Ouvrir la requête B, placer un filtre pour trouver un nom en particulier.

Passer en mode SQL, vous devriez obtenir quelque chose du genre:

SELECT * FROM [TableB] WHERE ((([TableB].Utilisateur)="Prénom Nom"));

Faire un copier/coller de cette string

Sur la liste déroulante, allez dans l'évènement [ Après MAJ ],
Procédure événementielle et créer la routine suivante :

Dim NomUser As String
Dim Critère As String

NomUser = Forms![Formulaire].[ListeDéroulanteNomUser]
Critere = "Select * from [TableB] where [Utilisateur] = "
Critere = Critere & """" & NomUser & """"

Ainsi, la chaine de caractère qui forme la requête SQL est modifier par programmation. Maintenant il faut changer la requête par
programmation.

J'appelle ici une fonction pour modifier la requête, si la modification
est effectué alors mise à jour formulaire.

If (ChangeRequeteDef("RequeteB", Critere)) Then
Me.Refresh
Else
MsgBox "Impossible de modifier la requête"
End If

Et enfin, ici la fonction qui modifie la requête :

Public Function ChangeRequeteDef(ChaineRequete As String, ChaineSQL As String) As Boolean

Dim Definition As Variant

If ((ChaineRequete = "") Or (ChaineSQL = "")) Then
ChangeRequeteDef = False
Else
Set Definition = CurrentDb.QueryDefs(ChaineRequete)
Definition.SQL = ChaineSQL
Definition.Close
RefreshDatabaseWindow
ChangeRequeteDef = True
End If

End Function

Amicalement
Lupin
0
renart
 
Merci bcp pour ta réponse.
Ca me semble très ardu, mais je vais m'appliquer à comprendre.

Renart
0