alkashee Si c'est pas beau ca ! | Bonjour,
J'ai un petit problème lors du remplissage d'un sous-form avec un recordset.
Petite précision d'entrée; le form est affiché sous la forme d'une feuille de donnée.
Voici le code utilisé dans un module et lancé sur l'évènement _click d'un bouton dans un autre sous-form du menu principal:
Code :
- Function affiche_details_clm(num_clm As String) As DAO.Recordset
- Dim requete_clm As String
- Dim rs_details_clm As DAO.Recordset
- requete_clm = "SELECT [T_Sous-Reseau].Adresse_IP, [T_Sous-Reseau].Sous_Reseau, [T_Sous-Reseau].Masque, [T_Sous-Reseau].Num_Port, [T_Sous-Reseau].Nom_LAN, [T_Sous-Reseau].Fonction, [T_Sous-Reseau].Nom_Equipement" & _
- " FROM [R_Test-Reponse] INNER JOIN [T_Sous-Reseau] ON [R_Test-Reponse].[CLM 1] = [T_Sous-Reseau].Nom_Equipement" & _
- " GROUP BY [T_Sous-Reseau].Adresse_IP, [T_Sous-Reseau].Sous_Reseau, [T_Sous-Reseau].Masque, [T_Sous-Reseau].Num_Port, [T_Sous-Reseau].Nom_LAN, [T_Sous-Reseau].Fonction, [T_Sous-Reseau].Nom_Equipement" & _
- " HAVING ((([T_Sous-Reseau].Num_Port) Not Like " & Chr(34) & "loopback*" & Chr(34) & " ));"
- Set rs_details_clm = CurrentDb.OpenRecordset(requete_clm)
- Do Until rs_details_clm.EOF = True
- Forms.F_Resultat.F_sf_Detail_CLM_1.Form.Adresse_IP = rs_details_clm.Fields("Adresse_IP" )
- Forms.F_Resultat.F_sf_Detail_CLM_1.Form.sous_reseau = rs_details_clm.Fields("Sous_Reseau" )
- Forms.F_Resultat.F_sf_Detail_CLM_1.Form.masque = rs_details_clm.Fields("masque" )
- Forms.F_Resultat.F_sf_Detail_CLM_1.Form.port = rs_details_clm.Fields("num_port" )
- Forms.F_Resultat.F_sf_Detail_CLM_1.Form.Nom_LAN = rs_details_clm.Fields("nom_LAN" )
- rs_details_clm.MoveNext
- Loop
- End Function
|
En substance, je crée un recordset auquel j'attribue comme valeur une variable contenant une instruction SQL. J'attribue ensuite les champs de mon recordset aux champs (indépendant) de mon sous-form. Tout se passe bien jusqu'à ce que l'on passe au recordset suivant ('rs_details_clm.MoveNext'):
Access écrase les donnée dans le sous-form au lieu "d'aller à la ligne" et de les mettre dans une nouvelle ligne.
J'ai parcouru des forums et j'en ai retiré qu'il fallait donner comme source de données du sous-form le recordset. J'ai essayé avec la ligne suivante:
Code :
- Forms.F_Resultat.F_sf_Detail_CLM_1.Form.RecordSource = rs_details_clm
|
Mais Access me lève une erreur d'exécution 13 "Incompatibilité de type" => Effectivement je veux attribuer comme source d'un form un recordset.
J'ai alors tenté de mettre en source une requête-test contenant mon code SQL (qui fonctionne bien en me retournant le bon résultat) mais ca ne marche pas plus.
Auriez-vous des solutions ?
Vous en remerciant d'avance.
---------------
Shooter ou être shooté, that iz the question
|