Au secours! VB6 : Création dynamique d'objets dans datareport - VB/VBA/VBS - Programmation
Marsh Posté le 13-03-2007 à 11:43:04
Quel bout de code te pond une erreur pour le moment stp ?
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.
Marsh Posté le 13-03-2007 à 12:10:17
tu peux gérer avec un compteur ("section" & i) par exemple
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 ;-)
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..:-)
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 ?
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
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
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..
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