Problème remplissage Form par recordset

Problème remplissage Form par recordset - SQL/NoSQL - Programmation

Marsh Posté le 06-09-2010 à 11:11:01    

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 :
  1. Function affiche_details_clm(num_clm As String) As DAO.Recordset
  2. Dim requete_clm As String
  3. Dim rs_details_clm As DAO.Recordset
  4. 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" & _
  5.              " FROM [R_Test-Reponse] INNER JOIN [T_Sous-Reseau] ON [R_Test-Reponse].[CLM 1] = [T_Sous-Reseau].Nom_Equipement" & _
  6.              " 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" & _
  7.              " HAVING ((([T_Sous-Reseau].Num_Port) Not Like " & Chr(34) & "loopback*" & Chr(34) & " ));"
  8. Set rs_details_clm = CurrentDb.OpenRecordset(requete_clm)
  9. Do Until rs_details_clm.EOF = True
  10.    Forms.F_Resultat.F_sf_Detail_CLM_1.Form.Adresse_IP = rs_details_clm.Fields("Adresse_IP" )
  11.    Forms.F_Resultat.F_sf_Detail_CLM_1.Form.sous_reseau = rs_details_clm.Fields("Sous_Reseau" )
  12.    Forms.F_Resultat.F_sf_Detail_CLM_1.Form.masque = rs_details_clm.Fields("masque" )
  13.    Forms.F_Resultat.F_sf_Detail_CLM_1.Form.port = rs_details_clm.Fields("num_port" )
  14.    Forms.F_Resultat.F_sf_Detail_CLM_1.Form.Nom_LAN = rs_details_clm.Fields("nom_LAN" )
  15.    rs_details_clm.MoveNext
  16. Loop
  17. 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 :
  1. 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
Reply

Marsh Posté le 06-09-2010 à 11:11:01   

Reply

Marsh Posté le 07-09-2010 à 11:27:50    

Personne n'aurait une petite idée :/ ?


---------------
Shooter ou être shooté, that iz the question
Reply

Marsh Posté le 07-09-2010 à 12:59:17    

A vue de nez ton probleme de passage a la ligne est du au fait que tu fais un .MoveNext pour aller au record suivant dans ton record set mais tu ne dit pas a ta forme d'aller a la ligne suivante, donc il ecrase les champs deja remplis.
 
Pas facil d'en dire plus sans voir a quoi ca ressemble
 

Reply

Marsh Posté le 10-09-2010 à 14:30:27    

Bonjour,
 
Effectivement, c'est bien ça le problème il manque quelque chose qui dit "retour à la ligne" au form :/
 
On m'a rigolé au nez sur un autre forum quand j'ai dit que je voulais remplir un form avec un recordset issue d'une requête SQL.
 
J'ai dit OK, faisons autrement, mettons en source directement la requête SQL (qui marche, c'est sûr à 100%) comme je l'expliquais à la fin de mon premier post:
 

Code :
  1. Forms.F_Resultat.F_sf_Detail_CLM_1.Form.RecordSource = requete_clm


Je vois bien qu'Access "prépare" les lignes du sous-form (car il y a le compte exact du résultat de la requête), mais il me met dans chaque colonne la même valeur sur toute les lignes  [:blackdranzer]  
 

Oliiii a écrit :

[...]mais tu ne dit pas à ta forme d'aller à la ligne suivante, donc il écrase les champs déjà remplis.


Sais-tu comment faire ?
 
 :jap:  


---------------
Shooter ou être shooté, that iz the question
Reply

Marsh Posté le 10-09-2010 à 15:18:51    

Non, je ne connais pas assez Access pour te dire exactement comment faire et je ne l'ai pas ici donc je ne pourrais meme pas essayer de trouver :(

Reply

Marsh Posté le 13-09-2010 à 09:05:43    

Erf...
 
Un âme charitable qui aurait une solution ? Je commence à fondre un fusible à force d'y réfléchir  :pt1cable:  


---------------
Shooter ou être shooté, that iz the question
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed