Bonjour à tous,
Depuis un bon moment je cherche en vain une solution à mon problème, n'ayant pas trouver, je demande votre aide. (Je précise que je débute)
Voilà je cherche à écrire une procédure sous VBA Access, permettant une recherche multicritères sur plusieurs tables.
Qui doit envoyer le résultat d'une requête sélection dans une listbox d'un formulaire.
Problème, j'ai vu qu'on ne peut pas utiliser la commande docmd.Runsql pour une requête sélection.
Voici le code SQL de la requête qui par ailleurs fonctionne :
Voici le code VBA du formulaire : message d'erreur au niveau SQL="docmd.runSQL.....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT [Liste domaines].Domaine, [Table générale].[Intitulé de l'affaire], [Table générale].[Nature de la Tâche], [Table générale].[Date de la commande], [Table générale].[Date à laquelle la tâche doit être réalisée], [Table générale].[Travail en binome], [Listes Agent 1].[Prénom des agents] AS Agents, [Etat d'avancement].[Etat d'avencement], [Table générale].[Suivi de l'activité] FROM [Listes Agent 1] INNER JOIN ([Liste domaines] INNER JOIN ([Liste Agents 2] INNER JOIN ([Etat d'avancement] INNER JOIN [Table générale] ON [Etat d'avancement].N° = [Table générale].[Etat d'avancement]) ON [Liste Agents 2].N° = [Table générale].[Agent 2]) ON [Liste domaines].N° = [Table générale].Domaine) ON [Listes Agent 1].N° = [Table générale].[Agent 1];
Merci d'avance pour votre aide.
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
46
47
48
49 Private Sub RefreshRequery() 'Procédure Moteur de recherche Dim SQL As String 'SQL désigne en fait la variable qui reçoit la requête SQL = "DoCmd.RunSQL("SELECT [Liste domaines].Domaine, [Table générale].[Intitulé de l'affaire], [Table générale].[Nature de la Tâche], [Table générale].[Date de la commande], [Table générale].[Date à laquelle la tâche doit être réalisée], [Table générale].[Travail en binome], [Listes Agent 1].[Prénom des agents] AS Agents, [Etat d'avancement].[Etat d'avencement], [Table générale].[Suivi de l'activité] FROM [Listes Agent 1] INNER JOIN ([Liste domaines] INNER JOIN ([Liste Agents 2] INNER JOIN ([Etat d'avancement] INNER JOIN [Table générale] ON [Etat d'avancement].N° = [Table générale].[Etat d'avancement]) ON [Liste Agents 2].N° = [Table générale].[Agent 2]) ON [Liste domaines].N° = [Table générale].Domaine) ON [Listes Agent 1].N° = [Table générale].[Agent 1];")" If Me.chkNoms Then SQL = SQL & "And Listes Agent 1!Prenom des agents like '*& Me.cmbRechNoms &*'" End If If Me.chkDomaines Then SQL = SQL & "And Liste domaines!Domaine like '*& Me.cmbRechDomaines &*'" End If If Me.chkAvancement Then SQL = SQL & "And Etat d'avancement!Etat d'avencement like '*& Me.cmbRechAvancement &*'" End If SQL = SQL & ";" Me.lstRésultats.RowSource = SQL Me.lstRésultats.Requery End Sub Private Sub cmbRechAvancement_BeforeUpdate(Cancel As Integer) Me.cmbRechAvancement.Visible = Not Me.cmbRechAvancement.Visible RefreshRequery End Sub Private Sub chkNoms_Click() Me.cmbRechNoms.Visible = Not Me.cmbRechNoms.Visible RefreshRequery End Sub Private Sub chkDomaines_Click() Me.cmbRechDomaines.Visible = Not Me.cmbRechDomaines.Visible RefreshRequery End Sub Private Sub chkAvancement_Click() Me.cmbRechAvancement.Visible = Not Me.cmbRechAvancement.Visible RefreshRequery End Sub Private Sub cmbRechNoms_BeforeUpdate(Cancel As Integer) Me.cmbRechNoms.Visible = Not Me.cmbRechNoms.Visible RefresRequery End Sub Private Sub cmbRechDomaines_BeforeUpdate(Cancel As Integer) Me.cmbRechDomaines.Visible = Not Me.cmbRechDomaines.Visible RefreshRequery End Sub
Partager