Bonjour,
j'ai appliqué à la lettre le tutorial de Caféine présent sur le site. J'ai compris le fonctionnement et réalisé ma SGBD à la différence d'etre sur plusieur tables.
Principe de fonctionnement: je voudrais dans un premeir temps lister l'ensmeble des donnés de ma requete au chargement de la page, puis précise la recherche par la suite via le multi-critère.
Mon probleme se situe au niveau de l'execution de mon code.
Le programme arrive à compiler. cependant il devrait afficher dans la listbox le rendu de ma requete. Mais il affiche soit rien, soit la requete. J 'ai chercher sur internet et via l'aide et je n'ai pas trouver. Pouvez vous m'aider ?
De plus quand je selectionne le contenu de ma SQL dans une requete classque elle s'éxecute corretement.
Mes hypothèses sont soit:
un problème au niveau du paramétrage de listbox
un probleme au niveau code
Code :
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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177
| Option Compare Database
Private Sub chxAdresseIP_Click()
Me.TxtRech_AdressIP.Visible = Not Me.TxtRech_AdressIP.Visible
RefreshQuery
End Sub
Private Sub ChxAgencee_Click()
Me.cmbagence.Visible = Not Me.cmbagence.Visible
RefreshQuery
End Sub
Private Sub chxAutomate_Click()
Me.TxtRechNom_auto.Visible = Not Me.TxtRechNom_auto.Visible
RefreshQuery
End Sub
Private Sub chxContrat_Click()
Me.cmbContrat.Visible = Not Me.cmbContrat.Visible
RefreshQuery
End Sub
Private Sub chxMarqueAUto_Click()
Me.cmbMarque.Visible = Not Me.cmbMarque.Visible
End Sub
Private Sub chxSite_Click()
Me.cmbsite.Visible = Not Me.cmbsite.Visible
End Sub
Private Sub chxSupervis_Click()
Me.cmbSupervis.Visible = Not Me.cmbSupervis.Visible
RefreshQuery
End Sub
Private Sub chxTelephone_Click()
Me.TxtRech_telephone.Visible = Not Me.TxtRech_telephone.Visible
RefreshQuery
End Sub
Private Sub chxType_Auto_Click()
Me.cmbtype.Visible = Not Me.cmbtype.Visible
RefreshQuery
End Sub
Private Sub cmbagence_AfterUpdate()
Dim lngIDCat As Long
Dim SQL4 As String
'' Vérifie que l'on a cliqué sur une agence pour éviter le NULL
If Not IsNumeric(Me!cmbagence) Then Exit Sub
'' Affecte la valeur de IDagence à la variable lngIDCat
lngIDCat = Me!cmbagence
If lngIDCat < 5 Or lngIDCat = 13 Then
'' Construit la chaîne SQL avec la agence concernée
SQL4 = "SELECT idcontract, contrat, agence FROM liste_contrat_automate WHERE agence =" & lngIDCat & " ORDER BY contrat "
End If
If lngIDCat > 5 Or lngIDCat = 12 Then
SQL4 = " SELECT idcontrat, contrat, agence FROM[listecontrat Télégestion]WHERE agence =" & lngIDCat & " ORDER BY contrat "
End If
'' Affecte la chaîne SQL à la liste des métiers
cmbContrat.RowSource = SQL4
Me![cmbContrat].Requery
RefreshQuery
End Sub
Private Sub cmbcontrat_AfterUpdate()
Dim lngIDsit As String
Dim lngIDCat As Long
Dim SQL3 As String
'' Vérifie que l'on a cliqué sur un Contrat pour éviter le NULL
''If Not String(Me!cmbContrat) Then Exit Sub
'' Affecte la valeur de IDagence à la variable lngIDCat
lngIDsit = Me!cmbContrat.Column(1)
lngIDCat = Me!cmbagence
If lngIDCat < 5 Or lngIDCat = 13 Then
'' Construit la chaîne SQL avec la agence concernée
SQL3 = " SELECT site, contrat FROM table_liste_automate WHERE contrat LIKE '*" & Me.cmbContrat.Column(1) & "*' "
End If
If lngIDCat > 5 Or lngIDCat = 12 Then
SQL3 = " SELECT site , contrat FROM [SITETELEGESTION]WHERE contrat LIKE '*" & Me.cmbContrat.Column(1) & "*' "
End If
cmbsite.RowSource = SQL3
Me![cmbsite].Requery
RefreshQuery
End Sub
Private Sub RefreshQuery()
Dim RS As DAO.Recordset
Dim SQL As String, SQL2 As String
Dim SQLWhere As String
SQL = "SELECT [Nom_automate].[Nom de l'équipement] , [Nom_automate].[Marque] , [Nom_automate].[TYPE] , [Nom_automate.ETAT , Nom_automate.[Derniere modification] , table_liste_automate.site , Liste_contrat_automate.contrat , listeAgence.[Nom agence], listeAgence.[type de gestion] FROM ((listeAgence INNER JOIN Liste_contrat_automate ON listeAgence.[Id agence] = Liste_contrat_automate.agence) INNER JOIN table_liste_automate ON Liste_contrat_automate.contrat = table_liste_automate.contrat)INNER JOIN Nom_automate ON table_liste_automate.site LIKE Nom_automate.site ; "
'SQL2 = "SELECT Count(*) AS Cnt FROM B_SOCIETES INNER JOIN _C_CONTRATS ON [B_SOCIETES].[ID_SOCIETE]=[_C_CONTRATS].[ID_SOCIETE] "
SQLWhere = "where Nom_automate.[Numéro d'identifiant]<>0"
If Not Me.ChxAutomate Then
SQLWhere = SQLWhere & "And [Nom de léquipement] like '*" & Me.TxtRechNom_auto & "*' "
End If
If Not Me.chxAgencee Then
SQLWhere = SQLWhere & "And listeAgence.[Nom agence] = '" & Me.cmbagence & "' "
End If
If Not Me.chxContrat Then
SQLWhere = SQLWhere & "And Liste_contrat_automate!contrat = '" & Me.cmbContrat & "' "
End If
SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
SQL = SQL & SQLWhere & ";"
Me.Lstresult.RowSource = SQL
Me.Lstresult.Requery
End Sub
Private Sub Commande0_Click()
On Error GoTo Err_Commande0_Click
DoCmd.Close
Exit_Commande0_Click:
Exit Sub
Err_Commande0_Click:
MsgBox Err.Description
Resume Exit_Commande0_Click
End Sub
Private Sub Form_Load()
Dim ctl As Control
For Each ctl In Me.Controls
Select Case Left(ctl.Name, 3)
Case "lbl"
ctl.Caption = "- * - * -"
Case "Txt"
ctl.Visible = False
ctl.Value = ""
Case "cmb"
ctl.Visible = False
End Select
Next ctl
Me.Lstresult.RowSource = " SELECT [Nom_automate].[Nom de l'équipement] , [Nom_automate].[Marque] , [Nom_automate].[TYPE] , [Nom_automate.ETAT , Nom_automate.[Derniere modification] , table_liste_automate.site , Liste_contrat_automate.contrat , listeAgence.[Nom agence], listeAgence.[type de gestion] FROM ((listeAgence INNER JOIN Liste_contrat_automate ON listeAgence.[Id agence] = Liste_contrat_automate.agence) INNER JOIN table_liste_automate ON Liste_contrat_automate.contrat = table_liste_automate.contrat)INNER JOIN Nom_automate ON table_liste_automate.site LIKE Nom_automate.site "
Me.Lstresult.Requery
End Sub |
Je pense que mon probleme se situe ici :
Code :
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
| Private Sub RefreshQuery()
Dim RS As DAO.Recordset
Dim SQL As String, SQL2 As String
Dim SQLWhere As String
SQL = "SELECT [Nom_automate].[Nom de l'équipement] , [Nom_automate].[Marque] , [Nom_automate].[TYPE] , [Nom_automate.ETAT , Nom_automate.[Derniere modification] , table_liste_automate.site , Liste_contrat_automate.contrat , listeAgence.[Nom agence], listeAgence.[type de gestion] FROM ((listeAgence INNER JOIN Liste_contrat_automate ON listeAgence.[Id agence] = Liste_contrat_automate.agence) INNER JOIN table_liste_automate ON Liste_contrat_automate.contrat = table_liste_automate.contrat)INNER JOIN Nom_automate ON table_liste_automate.site LIKE Nom_automate.site where Nom_automate.[Numéro d'identifiant]<>0; "
'SQL2 = "SELECT Count(*) AS Cnt FROM B_SOCIETES INNER JOIN _C_CONTRATS ON [B_SOCIETES].[ID_SOCIETE]=[_C_CONTRATS].[ID_SOCIETE] "
SQLWhere = ""
If Not Me.ChxAutomate Then
SQLWhere = SQLWhere & "And [Nom de léquipement] like '*" & Me.TxtRechNom_auto & "*' "
End If
If Not Me.chxAgencee Then
SQLWhere = SQLWhere & "And listeAgence.[Nom agence] = '" & Me.cmbagence & "' "
End If
If Not Me.chxContrat Then
SQLWhere = SQLWhere & "And Liste_contrat_automate!contrat = '" & Me.cmbContrat & "' "
End If
SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
'SQL = SQL & SQLWhere & ";"
Me.Lstresult.RowSource = SQL
Me.Lstresult.Requery
End Sub |
Voici une image presentant ce qui arrive lors de l'execution :