Sauvegarde dataGridView dans une application

sslen - Modifié le 20 mai 2018 à 17:47
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 - 21 mai 2018 à 14:33
bonjour,

mon code ne fonctionne pas et je ne trouve pas mon erreur.est-il possible que qqun me montre mon erreur? Merci d' avance.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Imports System.IO
Imports System.Runtime.Serialization.Formatters.Binary
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Public Class Form1
    <Serializable()> _
   Public contacttable As DataGridView
    End Class
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Private Sub SAVE_Button_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles SAVE_Button.Click

        Dim txt As String
        Dim Col, Roows As Integer
        Dim text As New List(Of DataGridView)
        Dim f As IO.FileStream = File.Create("enregistreContact.bin")
        Dim contacttable As New BinaryFormatter
----------------------------------------------------------------------------------------------------------------Je recupere mon tableau
        For Roows = 0 To DataGridView1.RowCount - 1
            For Col = 0 To 4
                txt = DataGridView1.Item(Col, Roows).Value
            Next
        Next
-----------------------------------------------------------------------------------------------------------Je sauvegarde
        Try
            contacttable.Serialize(f, text)

---------------------------------------------------------------------------------------------------------Exception
        Catch File As Exception
            MsgBox("You must write a text!")
        End Try
----------------------------------------------------------------------------------------------------------Je ferme la sauvegarde
        f.Close()

End sub

End Sub

4 réponses

vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
Modifié le 20 mai 2018 à 17:33
Bonjour
1) ton
End Class 
est mal placé
2) Contactable a deux utilisations : risque de confusion
3)txt en tant que
List(of DataGridView
: ce serait plutôt
List(of String

4) Deux End Sub en fin code : bizarre ( le dernier End Sub devrait être le End Class mal placé
5) Rows et non Roows pour Lignes en anglais

De plus utilises les balises de code pour poster du code : http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche

0
sslen Messages postés 2 Date d'inscription dimanche 20 mai 2018 Statut Membre Dernière intervention 21 mai 2018
20 mai 2018 à 18:32
merci pour la réponse mais cela ne marche pas. je pense que c' est dans la recuperation des lignes et colonnes que je dois faire une erreur.


cdt

Imports System.IO
Imports System.Runtime.Serialization.Formatters.Binary
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Public Class Form1
<Serializable()> _
Public contact As DataGridView
End Class
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Private Sub SAVE_Button_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles SAVE_Button.Click

Dim txt As String
Dim Col, Rows As Integer
Dim text As New List(Of string)
Dim f As IO.FileStream = File.Create("enregistreContact.bin")
Dim contacttable As New BinaryFormatter
----------------------------------------------------------------------------------------------------------------Je recupere mon tableau
For Rows = 0 To DataGridView1.RowCount - 1
For Col = 0 To 4
txt = DataGridView1.Item(Col, Rows).Value
Next
Next
-----------------------------------------------------------------------------------------------------------Je sauvegarde
Try
contacttable.Serialize(f, text)

---------------------------------------------------------------------------------------------------------Exception
Catch File As Exception
MsgBox("You must write a text!")
End Try
----------------------------------------------------------------------------------------------------------Je ferme la sauvegarde
f.Close()

End sub
End Class
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
20 mai 2018 à 21:18
Bonsoir

C'est trop dur d'utiliser les balises de code !

Imports System.IO 
Imports System.Runtime.Serialization.Formatters.Binary 
----------------------------------------------------------------------------------------------------------------------------------------------------------------- 
Public Class Form1 
<Serializable()> _ 
Public contact As DataGridView 
End Class ' il est en trop celui-là
- 
Private Sub SAVE_Button_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles SAVE_Button.Click 

    Dim txt As String 
    Dim Col, Rows As Integer 
    Dim text As New List(Of string) 
    Dim f As IO.FileStream = File.Create("enregistreContact.bin") 
    Dim contacttable As New BinaryFormatter 
    'Je recupere mon tableau 
    For Rows = 0 To DataGridView1.RowCount - 1 
        For Col = 0 To 4 
            txt = DataGridView1.Item(Col, Rows).Value 
        Next 
    Next 
    'Je sauvegarde 
    Try 
        contacttable.Serialize(f, text) 
    'Exception 
    Catch File As Exception 
        MsgBox("You must write a text!")  
    End Try 
    'Je ferme la sauvegarde 
    f.Close() 

End sub 

End Class 
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
20 mai 2018 à 21:46
Et aussi "ca ne marche pas" n'est pas parlant.
La sauvegarde se fait-elle ?
Est-ce les bonnes valeurs ?
Où fait tu l'écriture sur le FileStream de ton Binaryformatter ?

Place un point d'arrêt au niveau du Try pour vérifier les valeurs de la List(of String)
0
sslen Messages postés 2 Date d'inscription dimanche 20 mai 2018 Statut Membre Dernière intervention 21 mai 2018
21 mai 2018 à 13:45
Imports System.IO 
Imports System.Runtime.Serialization.Formatters.Binary 
----------------------------------------------------------------------------------------------------------------------------------------------------------------- 
Public Class Form1 
<Serializable()> _ 
Public contact As DataGridView 

- 
Private Sub SAVE_Button_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles SAVE_Button.Click 

    Dim txt As String 
    Dim Col, Rows As Integer 
    Dim text As New List(Of string) 
    Dim f As IO.FileStream = File.Create("enregistreContact.bin") 
    Dim contacttable As New BinaryFormatter 
    'Je recupere mon tableau 
    For Rows = 0 To DataGridView1.RowCount - 1 
        For Col = 0 To 4 
            txt = DataGridView1.Item(Col, Rows).Value 
        Next 
    Next 
    'Je sauvegarde 
    Try 
        contacttable.Serialize(f, text) 
    'Exception 
    Catch File As Exception 
        MsgBox("You must write a text!")  
    End Try 
    'Je ferme la sauvegarde 
    f.Close() 

End sub 

End Class 


Merci pour tes commentaire.
1-Pour les balises, j'ai compris(je suis novice dans le domaine)
2-le fichier est crée normalement mais il est vide donc je pense que le code de récupération des données est faux.
Merci d' avance.
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
21 mai 2018 à 14:33
bonjour !
Où fait tu l'écriture sur le FileStream de ton Binaryformatter ?
normalement tu dois le faire après
contacttable.Serialize(f, text) 
dans le Try
Tu as bien sérialisé contacttable mais tu ne l'as pas écrit dans le Io.FileStream : donc rien n'est écrit dans le fichier

Place un point d'arrêt avant le Try pour vérifier les valeurs de la List(of String)

Essaie ce code

Private Sub SAVE_Button_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles SAVE_Button.Click 

    Dim Col, Row As Integer 
    Dim text As New List(Of string) 
    Dim f As IO.FileStream = File.Create("enregistreContact.bin") 
    Dim contacttable As New BinaryFormatter 
    'Je recupere mon tableau 
    For Row = 0 To DataGridView1.RowCount - 1 
        For Col = 0 To 4 
            txt.Add(DataGridView1.Item(Col, Row).Value) 
        Next 
    Next 
   ' test pour vérifier si toute la DataGridview est prise en compte
    if txt.count <> DataGridView1.RowCount * 5 then stop ' place le point d'arrêt ici
     'Je sauvegarde 
    Try 
        contacttable.Serialize(f, text) 
        ' ici il faut écrire contacttable dans le fileStream
    'Exception 
    Catch File As Exception 
        MsgBox("You must write a text!")  
    End Try 
    'Je ferme la sauvegarde 
    f.Close() 

End sub

0
Rejoignez-nous