Bonjour,
Trois jours que je suis sur un problème de portée de variable sur Access :
Explications : Suite à une requête j'affiche différentes caracactéristiques d'une entreprise et lorque je clique sur une ligne du tableau je devrais avoir un nouveau formulaire avec une nouvelle listbox qui devrait m'afficher les différentes adresses de cette entreprise (en effet il peut en exister une infinité).
Le problème c'est qu'Access ne prend pas en compte sur le second formulaire la varibale nom societe qui me permet d'effectuer ma seconde requête.
Voici mon bout de code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Public Sub cherch_cont_soc()
'=============DECLARATION DES VARIABLES====================='
 
Dim num_colonne As Integer
Dim nom_societe As String
Dim SQLLieu As String
Dim SQLwhereLieu As String
 
'=====================PROCEDURE======================================'
 
' On affecte à la variable nom_societe la valeur de la case repérée par son numéro
' de colonne le nom de la société) et la ligne sélectionnée à l'aide de la souris
 
num_colonne = 0
 
If Form_F_crit_rech_soc.lst_res.Column(num_colonne) <> Null Then
' On teste la valeur de la Form_F_crit_rech_soc.lst_res.Column(num_colonne) 
' pour savoir si elle n'est pas NULL (évite un bug)
    nom_societe = Form_F_crit_rech_soc.lst_res.Column(num_colonne)
'On affecte au label nom soc du formulaire F_soc_contact la valeur contenu dans nom_societe'
    Form_F_soc_contact.lbl_nom_soc.Caption = nom_societe
End If
 
' On affecte à la variable SQLLieu le début de la requête SQL à effectuer pour connaître
' les différentes adresses de l'entreprise sélectionnée, on renseigne la requête 
' sur les champs à rechercher et on effectue les jointures entre les différents tables
 
SQLLieu = "SELECT [LIEU.nom_rue] as Rue, [LIEU.code_postale] as CP, [LOCALITE.ville] as Ville, [LOCALITE.pays] as Pays " & _
"FROM LOCALITE INNER JOIN (SOCIETE INNER JOIN LIEU ON SOCIETE.id_societe=LIEU.id_societe) ON LOCALITE.code_postale=LIEU.code_postale " & _
"WHERE LIEU!id_lieu <> 0 "
 
SQLLieu = SQLLieu & "AND [SOCIETE.nom_soc] = '& nom_societe &' "
SQLLieu = SQLLieu & ";"
 
SQLwhereLieu = Trim(Right(SQLLieu, Len(SQLLieu) - InStr(SQLLieu, "Where ") - Len("Where ") + 1))
Form_F_soc_contact.lst_res_lieu.RowSource = SQLLieu
Form_F_soc_contact.lst_res_lieu.Requery
End Sub
 
APPEL de la procédure :
 
Private Sub lst_res_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
DoCmd.OpenForm ("F_soc_contact")
cherch_cont_soc
End Sub