Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1605 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Problème remplissage Form par recordset

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème remplissage Form par recordset

n°2021359
alkashee
Si c'est pas beau ca !
Posté le 06-09-2010 à 11:11:01  profilanswer
 

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
mood
Publicité
Posté le 06-09-2010 à 11:11:01  profilanswer
 

n°2021545
alkashee
Si c'est pas beau ca !
Posté le 07-09-2010 à 11:27:50  profilanswer
 

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


---------------
Shooter ou être shooté, that iz the question
n°2021580
Oliiii
Posté le 07-09-2010 à 12:59:17  profilanswer
 

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
 

n°2022322
alkashee
Si c'est pas beau ca !
Posté le 10-09-2010 à 14:30:27  profilanswer
 

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
n°2022333
Oliiii
Posté le 10-09-2010 à 15:18:51  profilanswer
 

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 :(

n°2022568
alkashee
Si c'est pas beau ca !
Posté le 13-09-2010 à 09:05:43  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Problème remplissage Form par recordset

 

Sujets relatifs
AS3 = probleme indicateur chargement d'images multipleprobleme avec easy forum ! 2.5
problème avec la fonction vlookupProbleme avec " Adobe Flash Player "
Problème lecture codes barre 2/5 entrelacésproblème réalisation tableau périodique tkinter
GDI - Texte transparent sur Form transparentProblème Script AS3 Flash
[ACCESS] [RESOLU] Problème de doublon récalcitrantProblème de connexion
Plus de sujets relatifs à : Problème remplissage Form par recordset


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR