IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Créer un rapport / état sur VB.net


Sujet :

VB.NET

  1. #21
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    yeahyeah :

    Quand on crée un nouveau projet de rapport avec l'assistant, on a le 1er écran ''sélectionner la source de donnée''

    Nom : MaConnexion (par exemple, c'est le nom que l'on veut lui donner)
    Type : OLE DB
    Cocher la case ''Transformer en une source de donnée partagée''
    de cette manière la connexion sera partagée pour tout le projet
    Chaine de connexion : cliquer sur le bouton ''modifier''

    A l'écran Propriété de connexion
    Fournisseur choisir ''Microsoft Jet 4.0 OLE DB Provider''
    Ensuite cliquer sur le bouton ''liaison de donnée''

    Alors on a un autre écran ''Propriété de la liaison de donnée''
    Cliquer sur le bouton ''...'' pour choisir la base de donnée Access (soit GMAO_Version1)
    Indiquer le nom d'utilisateur et le mot de passe si il y en a sinon laisser Admin
    Cliquer sur le bouton ''tester la connexion'', il doit indiquer test de connexion réussi. ensuite OK, OK et suivant

    Toujours dans l'écran ''assistant rapport''
    On a maintenant Concevoir la requête
    Il faut indiquer une requête (par exemple SELECT * FROM TABLE, ou TABLE est une table de la base GMAO_Version1)
    Ensuite, suivant, l'assistant va demander de choisir le type de rapport
    Tabulaire c'est bien, puis suivant, il faut choisir les champs à afficher, cliquer sur le bouton ''détail'' autant de fois qu'il n'y a de champs dans la liste ''champs disponibles'', suivant, choisir la couleur (en fait le style), suivant
    Laisser le nom par défaut dans le textbox server de rapport, et indiquer dans le textbox dossier de déploiement test, puis cliquer sur suivant, donnez un nom au rapport, test par exemple (pour faire dans l'original)
    et puis cliquer sur ''Terminer''
    et là, y a plus qu'à cliquer dans l'onglet Aperçu et magie de l'informatique, il doit y avoir qqchose à l'écran qui ressemble à un rapport
    Si oui
    Si non

    Allez courage, je vais me coucher

  2. #22
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 92
    Points : 16
    Points
    16
    Par défaut
    Yeah! Nickel! Pfiou depuis le temps que je voulais avoir un rapport.

    Par contre ma requête n'est jamais la même ... je fais une recherche multicritère :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    S1 = "SELECT * FROM Maintenance WHERE ID <> 0 "
            If Me.Check_nom.Checked = -1 Then
                S1 = S1 & "AND Technicien='" & Me.Cmb_nom.Text & "' "
            End If
            If Me.Check_mach.Checked = -1 Then
                S1 = S1 & "And Maintenance!Machine = '" & Me.Cmb_mach.Text & "' "
            End If
            If Me.Check_type.Checked = -1 Then
                S1 = S1 & "And Maintenance!Type_panne = '" & Me.Cmb_type.Text & "' "
            End If
            If Me.Check_date.Checked = -1 Then
                           S1 = S1 & " and Datem between '" & CStr(Me.Cmb_date1.Value) & "' and '" & CStr(Me.Cmb_date2.Value) & "'"
            End If
            If Me.Check_term.Checked = -1 Then
                S1 = S1 & "And Maintenance!Op_term='" & Me.Cmb_term.Text & "' "
            End If
    Ce que je voudrais, c'est une fois que j'ai fais ma recherche, j'appuie sur un bouton qui me sort mon rapport.

    Comment puis-je faire?

  3. #23
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 92
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Jean612 Voir le message
    Salut,

    En fait si tout est bien installé, avec visual studio 2005, vous ne pouvez créer que des rapports !!
    Dit autrement, c'est un report designer, étant donné qu'avec le reportviewer (le composant qui affiche les rapports) pour VB express, le mode design n'est pas opérant

    Entrons dans le vif du sujet :
    Pour utiliser tout cela, il faut créer des reports en mode server avec VS 2005, ensuite copier les fichiers .RDL dans le dossier projet VB express et les renomer en .RDLC. Puis dans VB express, ajouter le fichier RDLC dans le projet, créer un form, utiliser le composant reportviewer (boite à outils-->données-->reportviewer) dans le smart tag du reportviewer choisir le report, ensuite choisir la source de donnée et puis faire une prière à St Microsoft, cela doit fonctionner .

    Vu comme ça cela semble compliqué, mais en fait c'est pire (je déconne ). Je vous invites à lire les docs sur le sujet.
    Bon courage !
    A+
    Je n'ai pas de .rdl à part du .rdl.data
    j'ai aussi du :
    .rds
    .rptproj
    report project file
    report definition file

  4. #24
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 92
    Points : 16
    Points
    16
    Par défaut
    Quelqu'un a-t-il la solution?

  5. #25
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    Pour utiliser une requête paramétrée, il faut créer un paramètre dans Visual Studio. Pour ce faire :
    Il faut créer une requête paramétrée du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM TBL WHERE CHP=?
    Ouvrir le rapport en mode mise en page, puis, Menu Rapport--> Param du rapport
    Indiquer le type du paramètre, cocher la case autoriser null
    Lors de l'aperçu il y aura une txtbox, pour indiquer la valeur du param.

    Attention : Access, ne prend par en charge les paramètres nommés, et il faut laisser le nom par défaut que VS donne à ce param (en générale c'est Parameter1)

    Dans votre cas, cela serait plus facile en VB express, puisque vous pouvez construire dynamiquement la requête (comme dans Access) et utiliser un datatable, et ensuite l'attacher au reportviewer.

    Pour ce qui est des RDL, ce sont les ''report definition file'' (il faut décocher la case ''masquer les extensions des fichiers dont le type est connu'', dans les option de l'explorateur)

    A+

  6. #26
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 92
    Points : 16
    Points
    16
    Par défaut
    Sérieux des fois j'ai l'impression d'être débile ...

    "dans le smart tag du reportviewer choisir le report, ensuite choisir la source de donnée" --> C'est quoi le smart tag? Où et comment je choisi rapport et source de données?

    "Ouvrir le rapport en mode mise en page, puis, Menu Rapport--> Param du rapport" --> C'est où ce menu rapport ?

  7. #27
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 92
    Points : 16
    Points
    16
    Par défaut
    Parce que je copie bien le .rdl et le renomme .rdlc. Puis dans express, dans (ce que je pense être) le smarttag, il n'y a pas mon rapport dans "choose report".

  8. #28
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    Yo
    1° Le smarttag c'est la petite flèche qui est en haut à droite du reportviewer (et d'autre contrôle aussi)

    Avant de pouvoir sélectionner un rapport, il faut l'importer dans Express
    Ajouter un élément existant:
    dans le menu Projet--> Ajouter un élément existant
    Il faut choisir le rapport, Ha oui dans le type de fichier il faut choisir tout (*.*).

    Ensuite, smartag cliquer dans la combo et le rapport doit apparaitre.

    2° le menu rapport c'est dans visual studio, quand on a ouvert un rapport en mode mise en page (l'onglet du milieu, avec la disposition des fenêtre par défaut)
    il faut cliquer dans le menu Rapport c'est le huitième à droite en partant de ''fichier''.

    Bonne continuation

  9. #29
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 92
    Points : 16
    Points
    16
    Par défaut
    Jean,

    J'ai pas trop compris cette histoire de requête paramétrée. Ca me met une textbox qui ne sert pas à grand chose.

    Dans votre cas, cela serait plus facile en VB express, puisque vous pouvez construire dynamiquement la requête (comme dans Access) et utiliser un datatable, et ensuite l'attacher au reportviewer.
    Par contre ca, ca serait pas mal ... Si tu peux m'indiquer comment procéder.

    Merci,

  10. #30
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 92
    Points : 16
    Points
    16
    Par défaut
    Ce que je vais faire :
    Copier les résultats de ma requête dans une base de données temporaire et travailler à partir de celle-ci.

    Par contre, j'y pense, mon rapport ne pourra pas être dynamique. Il restera identique. Si je change ma requête, les résultats du rapport ne changeront pas dans express vu que c'est un copier coller (rdl en rdlc).

  11. #31
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    Hello,

    Mais si ! le rapport sera dynamique, la requête retournera des données différentes suivant les paramètres choisis, ce qui ne changera pas c'est le format du rapport (couleur, police de caractère, nombre de champs...).

    Mais on peut créer un rapport dont le format est dynamique, puisque l'on peut utiliser des fonctions pour par exemple afficher une valeur ou une autre dans un textbox. A voir dans l'aide msdn de VS si elle est installée, ou les différents sites web.

    Cordialement.

  12. #32
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 92
    Points : 16
    Points
    16
    Par défaut
    HEY !!!! Ca avance ...

    Mon rapport s'affiche sur visual basic express. Je charge mes données à partir d'une table temporaire (qui se remplie en fonction de la requête).

    Cependant, je suis obligé de fermer complètement mon programme et de le réouvrir pour avoir les bonnes données sur le rapport.

    Sinon il ouvre les données précédentes ...

    ?????

    Merci,

  13. #33
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    Salut,

    Super si ça avance bien. pour le rafraichissement utilise
    refresh()

    Je pense que cela fonctionnera.

    Voici un code qui affiche 2 rapports que l'on choisi dans un menu (menustrip). Il affiche soit le rapport1 soit le rapport2 tout est créer par code.
    Dans l'écran (Form2 dans l'exemple) il n'y a aucun contrôles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    Option Explicit On
    Imports System
    Imports System.Drawing
    Imports Microsoft.Reporting.WinForms
     
    Public Class Form2
     
        Friend WithEvents ReportViewer1 As Microsoft.Reporting.WinForms.ReportViewer
     
        Private p As String = "C:\reports\"
        Private cntStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\DB\MaBase.mdb"
        Private cnt As New System.Data.OleDb.OleDbConnection(cntStr)
        Private ds As DataSet = New DataSet
     
        Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            'instanciation reportviewer
            Me.ReportViewer1 = New Microsoft.Reporting.WinForms.ReportViewer
            'Ancrer dans le conteneur parent
            Me.ReportViewer1.Dock = System.Windows.Forms.DockStyle.Fill
     
            Me.Text = "Test impression"
            Me.ClientSize = New System.Drawing.Size(800, 600)
            Me.ReportViewer1.ProcessingMode = ProcessingMode.Local
     
            Me.Controls.Add(ReportViewer1)
        End Sub
     
        Private Sub Rapport1ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Rapport1ToolStripMenuItem.Click
            Dim rString As String = "SELECT * FROM TBL1"
            Dim adapter As Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter(rString, cnt)
     
            adapter.Fill(ds, "TBL1")
            createReportViewer("RAPPORT1", "TBL1")
        End Sub
     
        Private Sub Rapport2ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Rapport2ToolStripMenuItem.Click
            Dim rString As String = "SELECT * FROM TBL2"
            Dim adapter As Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter(rString, cnt)
     
            adapter.Fill(ds, "TBL2")
            createReportViewer("RAPPORT2", "TBL2")
        End Sub
        'rpName = Nom du fichier RDLC
        'tbl c'est le dataset du reportviewer
        Private Sub createReportViewer(ByVal rpName As String, ByVal Tbl As String)
            'Vide les datasources
            Me.ReportViewer1.LocalReport.DataSources.Clear()
     
            Me.ReportViewer1.Reset()
     
            'utilisation du rapport
            Me.ReportViewer1.LocalReport.ReportPath = p & rpName & ".rdlc"
            'Associe le Datasource au rapport
            Me.ReportViewer1.LocalReport.DataSources.Add(New ReportDataSource(Tbl, ds.Tables(Tbl)))
            'Affiche le contenu du rapport
            Me.ReportViewer1.RefreshReport()
        End Sub
    End Class
    En espérant que cela puisse t'aider.
    A+

  14. #34
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 92
    Points : 16
    Points
    16
    Par défaut
    J'ai déjà un refreshreport()

    En fait, le rapport lit la base de données (copiée automatiquement) dans le fichier bin\debug.

    Et celui-ci ne se modifie que quand je ré-ouvre le programme que j'ai créé.

  15. #35
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    Ha oui, je me rend compte que je me suis trompé.

    C'est reportviewer.reset() qui est la bonne commande à utiliser, voir l'exemple du msg précèdent

    Sorry

  16. #36
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 92
    Points : 16
    Points
    16
    Par défaut
    Ca y est! ça marche!

    Donc j'ai créé mon rapport sous visual studio, j'ai suivi toutes tes indications.

    Voila le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Option Explicit On
    Imports System
    Imports System.Drawing
    Imports Microsoft.Reporting.WinForms
     
    Public Class Form1
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim rString As String = "SELECT * FROM Temp"
            Dim ds As DataSet = New DataSet
            Dim cntStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\fd\Mes documents\Visual Studio 2005\Projects\GMAO.Version2\GMAO.Version2\GMAO_version1.mdb"
            Dim cnt As New System.Data.OleDb.OleDbConnection(cntStr)
            Dim adapter As Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter(rString, cnt)
            adapter.Fill(ds, "Temp")
            Me.ReportViewer1.Reset()
            Me.ReportViewer1.LocalReport.ReportPath = "C:\Documents and Settings\fd\Mes documents\Visual Studio 2005\Projects\GMAO.Version2\GMAO.Version2\Rapport.rdlc"
            Me.ReportViewer1.LocalReport.DataSources.Add(New ReportDataSource("Temp", ds.Tables("Temp")))
            Me.ReportViewer1.RefreshReport()
        End Sub
    End Class
    Franchement je sais pas où t'es parti chercher tout ça mais en tout cas ça marche.

    Chapeau à toi et encore merci!

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 8
    Dernier message: 23/01/2020, 09h34
  2. créer un Application portable sur Vb.net 2008 ?
    Par abdego dans le forum VB.NET
    Réponses: 3
    Dernier message: 24/09/2012, 15h33
  3. Créer des rapports RDLC en vb.net
    Par shirya dans le forum VB.NET
    Réponses: 2
    Dernier message: 01/08/2008, 14h58
  4. Comment créer un état sur deux pages
    Par wag71 dans le forum IHM
    Réponses: 8
    Dernier message: 15/01/2007, 18h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo