Au secours! VB6 : Création dynamique d'objets dans datareport

Au secours! VB6 : Création dynamique d'objets dans datareport - VB/VBA/VBS - Programmation

Marsh Posté le 13-03-2007 à 10:58:13    

Salut tous le monde, voila j ai un petit souci avec le gestion dynamique de datareport, je m explique...
 
J ai créé un datareport dont les sources de données proviennent de tableaux dynamiques . Je voudrais afficher le contenu des elements de mes tableaux dans des objets label ou meme Text de mon datareport, ces objets devant être créé dynamiquement car ils dependent du nombre d éléments de mes tableaux... et la gros souci... Si je ne crée pas autant de label que d éléments de tableaux les suivants ne sont pas créés.
 
Voila mon code, les données des tableaux sont calculées puis stockées en fonction de données prélévées dans une DB access, ce code est executé à l init de mon data report.
 
NCont = 1
ReDim NumCont(NCont)
ReDim SomPoidsNet(NCont)
 
'Stockage des champs "Date" et "Contrat"
Param_Etats.Et_Adodc.Recordset.MoveFirst
DateLgnEnCours = Param_Etats.Et_Adodc.Recordset![Date]
NumCont(NCont) = CStr(Param_Etats.Et_Adodc.Recordset![Contrat])
 
'Stockage des totaux de Poids Net par num de contrat
Do While Not Param_Etats.Et_Adodc.Recordset.EOF
 
    If DateLgnEnCours >= DateDeb And DateLgnEnCours <= DateFin Then
       'Stockage du numéro de contrat suivant si il change
       If CStr(Param_Etats.Et_Adodc.Recordset![Contrat]) <> NumCont(NCont) Then
          NCont = NCont + 1
          ReDim Preserve NumCont(NCont)
          ReDim Preserve SomPoidsNet(NCont)
          NumCont(NCont) = CStr(Param_Etats.Et_Adodc.Recordset![Contrat])
       End If
       'Stockage du Poids Net par numéro de contrat
       SomPoidsNet(NCont) = SomPoidsNet(NCont) + Param_Etats.Et_Adodc.Recordset![Poids_Net]
    End If
    Param_Etats.Et_Adodc.Recordset.MoveNext
    DateLgnEnCours = Param_Etats.Et_Adodc.Recordset![Date]
 
Loop
 
'**** Remplissage des champs de la section 1 "Détails" (Création dynamique des Lbl)
With DR_Et_ContratsSynt
              .Refresh
        Set .DataSource = Param_Etats.Et_Adodc
             .DataMember = ""
 
        With .Sections("Section1" ).Controls
 
             For NCtrl = 1 To (NCont)
                 If TypeOf .Item(NCtrl) Is RptLabel Then
                           .Item(NCtrl).Caption = NumCont(NCtrl)
                 End If
             Next NCtrl
        End With
 
End With
 
 
Je galère depuis ce matin sur ce bout de code alors si quelqu un peut m aider, merci d avance


Message édité par rayno le 13-03-2007 à 20:09:10
Reply

Marsh Posté le 13-03-2007 à 10:58:13   

Reply

Marsh Posté le 13-03-2007 à 11:43:04    

Quel bout de code te pond une erreur pour le moment stp ?

Reply

Marsh Posté le 13-03-2007 à 11:50:50    

En ce qui concerne la gestion de mes tableaux ca fonctionne, par contre quand j arrive à la gestion de ma "section1" c'est la que ca ne fonctionne pas.
La cette partie du code gère des Label, j' ai donc "physiquement" créé un label nommé "Label1" puis un autre nommé "Label2" dans ma section1. Et le probleme c est qu il ne genere pas d erreur mais il affiche simplement les valeurs de mes 2 premiers elements de mon premier tableau (je me suis limité à l'affichage du premier tableau pour le moment) dans les Label 1 et 2, les labels suivants ne sont pas dynamiquement créés.
 

Reply

Marsh Posté le 13-03-2007 à 12:10:17    

tu peux gérer avec un compteur ("section" & i) par exemple :)

Reply

Marsh Posté le 13-03-2007 à 13:31:24    

Ton idée est intéressante jpcheck mais dans mon cas ce n est pas le numéro de section que je dois faire evoluer mais les labels à linterieur de celle ci. Merci quand meme pour ta réponse ;-)

Reply

Marsh Posté le 13-03-2007 à 14:34:42    

En fait la j explique mon problème pour ce cas particulier mais plus généralement la question serait :
 
Comment créer dynamiquement des objets de type text ou label dans un datareport dont la source de données ne provient pas d'une connexion à une base de données mais de variables à l intérieur du code (de type tableau ou meme variable simple).
 
Si quelqu un d autre à une idée ca m aidrait beaucoup! Merci d avance..:-)

Reply

Marsh Posté le 13-03-2007 à 15:02:19    

rayno a écrit :

Ton idée est intéressante jpcheck mais dans mon cas ce n est pas le numéro de section que je dois faire evoluer mais les labels à linterieur de celle ci. Merci quand meme pour ta réponse ;-)


 
ben controls("Label" & i) fonctionne aussi non ?  :sweat:  

Reply

Marsh Posté le 13-03-2007 à 15:28:25    

oui mais il ne crée pas un nouveau label, il faut que celui ci existe deja sur le datareport, la ce qu il me faut c est les creer dynamiquement

Reply

Marsh Posté le 13-03-2007 à 15:59:53    

rayno a écrit :

oui mais il ne crée pas un nouveau label, il faut que celui ci existe deja sur le datareport, la ce qu il me faut c est les creer dynamiquement


ReDim sur un tableau de label par exemple ;)

Reply

Marsh Posté le 13-03-2007 à 16:32:19    

meme si ces labels font parti d un tableau il ne seront pas créé...  
arff ca me gonfle ce truc, et dire que qd t associe une Db tout les objets suivant se créé tout seul..

Reply

Marsh Posté le 13-03-2007 à 16:32:19   

Reply

Marsh Posté le 13-03-2007 à 18:00:17    

Personne n' a d'idée?

Reply

Sujets relatifs:

Leave a Replay

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