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 :

Contenu saisi d'un datagridview vers un dataset


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 22
    Par défaut Contenu saisi d'un datagridview vers un dataset
    Bonjour j'espère que le titre est assez clair ...

    Mais au cas ou je décrit xD :
    Dans un formulaire, j'ai un datagridview qui se base sur une datatable "Fiche de frais".
    j'ai donc mon datagridview qui s'affiche avec le nom des colonnes ...
    et l'utilisateur peut saisir les informations.

    Et là 2 grandes questions:
    - (Après avoir appuyer sur un bouton OK ...) comment envoyer les données saisies vers la datatable afin de remplir mon rapport CrystalReport ?

    Mon brouillon:
    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
        'Traitement des informations saisies et génération du rapport
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim nbLigne = DataGridView1.RowCount
            'for each nbligne ... supprimer 
            Dim MyDA As New Data
            Dim ds As New Divers
            Try
                'MyDA.'Fill(ds.Tables("listeCanaux"))
            Catch ex As InvalidOperationException
                MsgBox("Erreur pendant l'insertion des données dans la table temporaire (FicheDeFrais) !", 32, "Isis")
                Me.Close()
            End Try
     
            Dim report As New DocumentFicheFrais
            'report.SetDataSource(ds)
            report.DataDefinition.FormulaFields("DateDeb").Text = "'" + MaskedTextBox1.Text + "'"
            report.DataDefinition.FormulaFields("DateFin").Text = "'" + MaskedTextBox2.Text + "'"
            report.DataDefinition.FormulaFields("UserName").Text = "'" + TextBox1.Text + "'"
            report.DataDefinition.FormulaFields("Centre").Text = "'" + TextBox2.Text + "'"
            Afficher_Etats.Show()
            Afficher_Etats.CRV.ReportSource = report
        End Sub
    - Comment activer des contrôles sur les saisies dans le datagridview :
    j'ai fait une sorte de gestion des dataerror, toutefois y a t'il un moyen plus simple (plus propre) pour gérer ces saisies ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        'Gestion des erreurs du datagrid (format des cellules,envoie des données dans le rapport)
        Private Sub DataGridView1_DataError(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles DataGridView1.DataError
            Select Case DataGridView1.Columns(e.ColumnIndex).DataPropertyName
                Case "Date"
                    MessageBox.Show("Format error DATE")
                Case "Parking", "Repas", "Hotel", "Divers"
                    MessageBox.Show("Format error DECIMAL")
            End Select
        End Sub

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 22
    Par défaut
    Hum j'ai trouvé quelque chose qui marche , mais que je trouve pas très propre (enregistrer toutes les colonnes 1 par 1 c'est pas trop bon non ?)
    reste encore le soucis des contraintes de saisie

    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
        'Traitement des informations saisies et génération du rapport
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim nbLigne = DataGridView1.RowCount
            'for each nbligne ... supprimer 
            Dim MyDS As New Divers
            Dim MyDataRow As DataRow
            Dim ds As New Divers
            Dim i As Integer = 0
            Try
                While i < nbLigne - 1
                    MyDataRow = MyDS.Tables("FicheDeFrais").NewRow
                    MyDataRow("Date") = DataGridView1.Rows(i).Cells("DateDataGridViewTextBoxColumn").Value
                    MyDataRow("Déplacement") = DataGridView1.Rows(i).Cells("DéplacementDataGridViewTextBoxColumn").Value
                    MyDataRow("Parking") = DataGridView1.Rows(i).Cells("ParkingDataGridViewTextBoxColumn").Value
                    MyDataRow("Repas") = DataGridView1.Rows(i).Cells("RepasDataGridViewTextBoxColumn").Value
                    MyDataRow("Hotel") = DataGridView1.Rows(i).Cells("HotelDataGridViewTextBoxColumn").Value
                    MyDataRow("Divers") = DataGridView1.Rows(i).Cells("DiversDataGridViewTextBoxColumn").Value
                    MyDS.Tables("FicheDeFrais").Rows.Add(MyDataRow)
                    MsgBox(DataGridView1.Rows(i).Cells("DateDataGridViewTextBoxColumn").Value)
                    i = i + 1
                    'MyDA.'Fill(ds.Tables("listeCanaux"))
                End While
            Catch ex As InvalidOperationException
                MsgBox("Erreur pendant l'insertion des données dans la table temporaire (FicheDeFrais) !", 32, "Isis")
                Me.Close()
            End Try
     
            Dim report As New DocumentFicheFrais
            report.SetDataSource(MyDS)
            report.DataDefinition.FormulaFields("DateDeb").Text = "'" + MaskedTextBox1.Text + "'"
            report.DataDefinition.FormulaFields("DateFin").Text = "'" + MaskedTextBox2.Text + "'"
            report.DataDefinition.FormulaFields("UserName").Text = "'" + TextBox1.Text + "'"
            report.DataDefinition.FormulaFields("Centre").Text = "'" + TextBox2.Text + "'"
            Afficher_Etats.Show()
            Afficher_Etats.CRV.ReportSource = report
        End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 22
    Par défaut
    Bon, j'ai trouvé un peu mieux (plus propre et en prime qui vérifie les valeurs null ou non):

    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
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim nbLigne = DataGridView1.RowCount
            Dim MyDataRow As DataRow
            Dim i As Integer = 0
            Try
                'Suppression de l'ancien contenu du dataset (Divers/FicheDeFrais)
                MyDS.Tables("FicheDeFrais").Clear()
                'Remplissage de la datatable
                Dim a() As String = {"Date", "Déplacement", "Parking", "Repas", "Hotel", "Divers"}
                While i < nbLigne - 1
                    MyDataRow = MyDS.Tables("FicheDeFrais").NewRow
                    For j As Integer = 0 To 5
                        If IsNothing(DataGridView1.Rows(i).Cells(a(j) + "DataGridViewTextBoxColumn").Value) Then
                            MyDataRow(a(j)) = DBNull.Value
                        Else
                            MyDataRow(a(j)) = DataGridView1.Rows(i).Cells(a(j) + "DataGridViewTextBoxColumn").Value
                        End If
                    Next
                    MyDS.Tables("FicheDeFrais").Rows.Add(MyDataRow)
                    i = i + 1
                End While
            Catch ex As InvalidOperationException
                MsgBox("Erreur pendant l'insertion des données dans la table temporaire (FicheDeFrais) !", 32, "MonSoft")
                Me.Close()
            End Try
     
            'Insertion des données dans le rapport
            Dim report As New DocumentFicheFrais
            report.SetDataSource(MyDS)
            report.DataDefinition.FormulaFields("DateDeb").Text = "'" + MaskedTextBox1.Text + "'"
            report.DataDefinition.FormulaFields("DateFin").Text = "'" + MaskedTextBox2.Text + "'"
            report.DataDefinition.FormulaFields("UserName").Text = "'" + TextBox1.Text + "'"
            report.DataDefinition.FormulaFields("Centre").Text = "'" + TextBox2.Text + "'"
            Afficher_Etats.Show()
            Afficher_Etats.CRV.ReportSource = report
        End Sub

    Toutefois il me reste encore une question sur la saisie du champ date:
    l'utilisateur doit obligatoirement saisir une date sous la forme dd/mm/yyyy
    en tapant lui meme les slash
    y a t'il un moyen pour faire en sorte que l'utilisateur ne saisisse que des chiffres dans le datagrid ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 35
    Par défaut
    tu laisse l'utilisateur saisir les chiffres et tu reconstruis toi meme la chaine en y insérant les / avant enregistrement.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 22
    Par défaut
    effectivement j'y avais pas pensé
    je pensé pouvoir m'en sortir avec des options de base sur les champs (mon champ est de type Date dans mon dataset, mais il n'y a pas moyen de forcer la saisie avec un mask,...)

    je m'y atèle, je préviendrais du résultat

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/06/2014, 17h22
  2. Réponses: 0
    Dernier message: 23/04/2011, 10h24
  3. Copie DatagridView vers Dataset
    Par jyuzakumo dans le forum C#
    Réponses: 4
    Dernier message: 28/06/2010, 08h53
  4. Exporter le contenu d'un DataGridView vers Excel
    Par David Fouejio dans le forum Windows Forms
    Réponses: 7
    Dernier message: 31/05/2010, 10h50
  5. Exportation du contenu d'un Quick Report vers PDF
    Par sillycoder dans le forum Bases de données
    Réponses: 1
    Dernier message: 05/07/2005, 14h48

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