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

  1. 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
    1. renart
       
      Merci bcp pour ta réponse.
      Ca me semble très ardu, mais je vais m'appliquer à comprendre.

      Renart
      0