Datareport dynamique

0/5 (15 avis)

Snippet vu 16 876 fois - Téléchargée 45 fois

Contenu du snippet

Permet de faire un état dynamique avec le contrôle datareport
Ce code n'ai pas de moi mais vient de chez Krosoft, et fonctionne, je l'ai essayé hier soir, donc si il y en a que ça peut dépanner
Numéro d'article: F18027

Source / Exemple :


'Dans les propriétés du Data Report, changez le nom de l'état en DR.
'
'Placez deux contrôles Label et deux contrôles Textbox de rapport dans la
'section Détail du rapport.
'
'Placez un bouton de commande dans Form1 et nommez-le Command1.
'
'Placez le code suivant dans Form1 :

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim cmd As New ADODB.Command

Private Sub Command1_Click()
Dim q As Integer
Dim intCtrl As Integer
Dim x As Integer
Dim z As Integer
x = 0
q = 0
z = 0

With DR
.Hide
Set .DataSource = rs
.DataMember = ""
With .Sections("Section1").Controls
For intCtrl = 1 To .Count
If TypeOf .Item(intCtrl) Is RptLabel Then
.Item(intCtrl).Caption = rs.Fields(q).Name & " :"
q = q + 1
End If
If TypeOf .Item(intCtrl) Is RptTextBox Then
.Item(intCtrl).DataMember = ""
.Item(intCtrl).DataField = rs(z).Name
z = z + 1
End If
Next intCtrl
End With
.Refresh
.Show
End With
End Sub

Private Sub Form_Load()

Command1.Caption = "Afficher l'état"

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Program Files\Microsoft Visual
Studio\VB98\Nwind.mdb;"

With cmd
.ActiveConnection = cn
.CommandType = adCmdText
.CommandText = "Select Prénom, Nom from Employés"
.Execute
End With

With rs
.ActiveConnection = cn
.CursorLocation = adUseClient
.Open cmd
End With

End Sub

Conclusion :


Modifiez la propriété Data Source dans la chaîne de connexion pour
indiquer le chemin d'accès à votre base de données Northwind.

A voir également

Ajouter un commentaire

Commentaires

MWEKASPA
Messages postés
7
Date d'inscription
vendredi 30 mars 2012
Statut
Membre
Dernière intervention
3 novembre 2012
-
bravo! et maintenant comment faire lorqu'on veut proceder aux regroupements des données?
pitchoulweah
Messages postés
3
Date d'inscription
dimanche 29 juin 2008
Statut
Membre
Dernière intervention
12 novembre 2011
-
Salut Spawn,
Est-il possible d'inserrer dynamiquement des images liees a mon recordset dans un datareport? Je suis desempare. Et dire que je suis a la fin de mon projet sur l'edition de badge pour mon etablissement scolaire.
merci de me presenter une illustration si possible.
Merci encore pour tn soutien au forum.

pitchoulweah
cs_rasedra
Messages postés
6
Date d'inscription
mardi 12 août 2008
Statut
Membre
Dernière intervention
25 janvier 2010
-
j'ai essayer ce mais Dans dim cn as ADODB.connection on a erreur type defini par l'utilisateur non défini
Azwinek
Messages postés
13
Date d'inscription
lundi 26 juin 2006
Statut
Membre
Dernière intervention
18 avril 2007
-
'merci pour la reponce.

'mais la boucle fonctionne seulement pour les objets libelés et textes existants
'on ne peut pas faire des critéres sur les textes céer par datareport
For intCtrl = 1 To .Count
If TypeOf .Item(intCtrl) Is RptLabel Then
.Item(intCtrl).Caption = rs(q).Name & " :"
q = q + 1
End If
If TypeOf .Item(intCtrl) Is RptTextBox Then
.Item(intCtrl).DataMember = ""
.Item(intCtrl).DataField = rs(z).Name

'même si j'ai préciser 'Nancy'
'le critére ne s'applique que pour le premier enregistrement
iet met tout les zones de textes en gras
If rs(z) = "Nancy" Then
.Item("Text1").Font.Bold = True
End If
z = z + 1
End If
Next intCtrl

il me semble qu'il n y a pas de solution pour cela mais je vais continuer a chercher
cs_spawn
Messages postés
8
Date d'inscription
mercredi 26 décembre 2001
Statut
Membre
Dernière intervention
28 mai 2005
-
salut

si j'ai bien compris ce que tu souhaitais faire et sachant que je n'ai plus VB je fais ça de tête et je n'ai pas pu tester, mais un truc du genre devrait je pense fonctionner ;-)
tiens moi au courant car je pense que ça pourrait intéresser d'autres personnes :D

@+ bon courage


For intCtrl = 1 To .Count
If TypeOf .Item(intCtrl) Is RptLabel Then
.Item(intCtrl).Caption = rs.Fields(q).Name & " :"
q = q + 1
End If
If TypeOf .Item(intCtrl) Is RptTextBox Then
.Item(intCtrl).DataMember = ""
.Item(intCtrl).DataField = rs(z).Name
'code à insérer
if rs.(z).name="jack" then
.item(intctrl).datafield.text.font.bold = true
end if
'fin du code à insérer
z = z + 1
End If
Next intCtrl

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.