Datagridview(tabelle) daten per Button speichern

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von ChaosBernd.

    Datagridview(tabelle) daten per Button speichern

    Hallo,

    ich brauche umbedingt hilfe

    Ich habe in VB2008 eine Tabelle(DataGridView) erstellt mit Mitarbeiter , Werkzeug , usw..

    wenn ich jetz mit einer Combobox unter Mitarbeiter den name auswähle dann möchte ich das abspeichern mit einem button dann kann ich immer wieder nachschauen .. damit ich weiss (zbs: Frank hatte nen hammer).

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „kevinbusy“ ()

    Aufwendig: jede Zelle in dden Settings speichern und später wieder Auslesen ;)


    Mfg, jmb.96 :)
    "People assume that time is a strict progression of cause to effect, but actually, from a non-linear, non-subjective viewpoint, it's more like a big ball of wibbly wobbly, ...timey wimey ...stuff."
    Aller Anfang ist schwer.

    Speichert eine DataGridView in eine CSV Datei, wobei es hier egal ist wieviele Colums es gibt.
    Also Automatisch
    Mach mal einen Button "Speichern" und dann rufst du die Routine Damit auf das hier rein damit:
    Dann solltest du noch "Datei" deklarieren. Also so wie deine Datei dann heisen soll.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. ' DatagridView speichern
    2. Private Sub DataGrid_Speichern()
    3. Dim Liste As String = Nothing
    4. ' Anzahl der Zeilen
    5. Dim count As Integer = DataGridView1.Rows.Count - 1
    6. For i = 0 To count - 1
    7. ' Anzahl der Spalten
    8. Dim ColumCount As Integer = DataGridView1.ColumnCount - 1
    9. Dim Eintrag As String = Nothing
    10. For g = 0 To ColumCount
    11. If Not g = ColumCount Then
    12. Eintrag += CStr(DataGridView1.Rows(i).Cells(g).Value) & "#"
    13. Else
    14. Eintrag += CStr(DataGridView1.Rows(i).Cells(g).Value)
    15. End If
    16. Next g
    17. Liste += Eintrag & vbCrLf
    18. Next i
    19. Try
    20. IO.File.WriteAllText(Datei, Liste)
    21. Catch ex As Exception
    22. MessageBox.Show("beim speichern ist ein fehler aufgetreten ")
    23. End Try
    24. End Sub


    Befass dich damit.
    Wenn ich heute noch zeit finde gibt dann auch die laden Routine.
    danke für die schnelle antwort

    aber wenn ich den text jetzt in mein Button_2 [Speichern] einfüge dann sieht das so aus und was meinen sie mit Deklariert.



    ---------------------------------------------------------------------------------------

    ok das Private Sub hab ich behoben hab dadrüber einfach End Sub gemacht ..

    was bedeutet wurde nicht deklariert? wie deklariere ich den name und wo ?

    bitte um Hilfe ...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „kevinbusy“ ()

    Sehe ich das richtig?

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. ' DatagridView speichern
    3. Private Sub DataGrid_Speichern()
    4. 'Dim ...
    5. '...
    6. End Sub

    ???
    Wenn ja, mach bitte

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. End Sub
    3. Private Sub DataGrid_Speichern()
    4. End Sub

    draus.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Poste Deinen Quelltext als Quelltext (Button "VB"), dann geht das alles sehr viel schneller.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
    3. End SubPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. Form2.Show()
    5. End SubPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    6. End SubPrivate Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    7. If PrintDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
    8. PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings
    9. PrintDocument1.Print()
    10. End If
    11. End SubPrivate Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPagee.Graphics.DrawString(DataGridView1.Text, New Font("Arial", 13, FontStyle.Regular), Brushes.Black, 10, 10)
    12. End SubPrivate Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    13. End SubPrivate Sub DataGrid_Speichern()
    14. End Sub
    15. Dim Liste As String = Nothing
    16. ' Anzahl der ZeilenDim count As Integer = DataGridView1.Rows.Count - 1
    17. For i = 0 To count - 1
    18. ' Anzahl der SpaltenDim ColumCount As Integer = DataGridView1.ColumnCount - 1
    19. Dim Eintrag As String = NothingFor g = 0 To ColumCount
    20. If Not g = ColumCount Then
    21. Eintrag += CStr(DataGridView1.Rows(i).Cells(g).Value) & "#"
    22. ElseEintrag += CStr(DataGridView1.Rows(i).Cells(g).Value)
    23. End IfNext g
    24. Liste += Eintrag & vbCrLfNext i
    25. Try
    26. IO.File.WriteAllText(Datei, Liste)Catch ex As Exception
    27. MessageBox.Show("beim speichern ist ein fehler aufgetreten ")
    28. End Try
    29. End SubPrivate Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs)
    30. End Sub
    31. End Class
    Ich hab mal den Code korrigiert.
    Wo
    '@@@@@ hier Deinen Wert eintragen
    steht, musst Du Deine speziellen Werte eintragen.
    Und überzeuge Dich bitte, ob der Code am Bildschirm so aussieht, wie bei Dir ("Vorschau")
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Option Strict On
    2. Option Explicit On
    3. Public Class Form1
    4. Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
    5. End Sub
    6. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    7. 'Form2.Show()
    8. End Sub
    9. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    10. End Sub
    11. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    12. If PrintDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
    13. PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings
    14. PrintDocument1.Print()
    15. End If
    16. End Sub
    17. Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    18. e.Graphics.DrawString(DataGridView1.Text, New Font("Arial", 13, FontStyle.Regular), Brushes.Black, 10, 10)
    19. End Sub
    20. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    21. End Sub
    22. Private Sub DataGrid_Speichern()
    23. Dim Liste As String = Nothing
    24. Dim count As Integer = 10 '@@@@@ hier Deinen Wert eintragen
    25. Dim ColumCount As Integer = 5 '@@@@@ hier Deinen Wert eintragen
    26. Dim Datei As String = "c:\temp\mydoc.txt" '@@@@@ hier Deinen Wert eintragen
    27. ' Anzahl der ZeilenDim count As Integer = DataGridView1.Rows.Count - 1
    28. For i = 0 To count - 1
    29. ' Anzahl der SpaltenDim ColumCount As Integer = DataGridView1.ColumnCount - 1
    30. Dim Eintrag As String = Nothing
    31. For g = 0 To ColumCount
    32. If Not g = ColumCount Then
    33. Eintrag &= CStr(DataGridView1.Rows(i).Cells(g).Value) & "#"
    34. Else
    35. Eintrag &= CStr(DataGridView1.Rows(i).Cells(g).Value)
    36. End If
    37. Next g
    38. Liste &= Eintrag & vbCrLf
    39. Next i
    40. Try
    41. IO.File.WriteAllText(Datei, Liste)
    42. Catch ex As Exception
    43. MessageBox.Show("beim speichern ist ein fehler aufgetreten ")
    44. End Try
    45. End Sub
    46. Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs)
    47. End Sub
    48. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany

    RodFromGermany schrieb:

    Dim count As Integer = 10 '@@@@@ hier Deinen Wert eintragen
    Dim ColumCount As Integer = 5 '@@@@@ hier Deinen Wert eintragen

    Das finde ich nicht so schön. Damit wir er nicht zurecht kommen.

    Ich habe hier mal ein kleines Beispiel mit Laden und Speichern gemacht.
    Damit sollte es verständlich sein:

    @kevinbusy

    mach mal eine Form mit einem DataGridView, einem Button für Speichern und einen Button für das Laden.
    Das Verzeichnis "C:\Temp" sollte bei dir vorhanden sein.
    Kopier den kompletten Text in dein Projekt.

    Wichtig:
    Deine DataGridVie sollte bereit die Columns enthaltne.
    Nachdem das Projekt gestartet ist, trägst du einige Werte in die DGV ein.
    Dann drückst du auf deinen Button Speichern.

    Beende das Projekt,
    nach erneutem Starten kannst du dann auf den Button Laden Klicken.
    Nun sollten alle Einträge wieder angezeigt werden.



    Der komplette Code für das Projekt:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Option Strict On
    2. Option Explicit On
    3. Imports System.IO
    4. Public Class Form1
    5. Dim Datei As String = "C:\Temp\Test.CSV"
    6. ' Button 1 ist für das Laden
    7. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    8. DataGrid_Laden()
    9. End Sub
    10. ' Button 2 ist für das Speichern
    11. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    12. DataGrid_Speichern()
    13. End Sub
    14. ' DatagridView speichern
    15. Private Sub DataGrid_Speichern()
    16. Dim Liste As String = Nothing
    17. ' Anzahl der Zeilen
    18. Dim count As Integer = DataGridView1.Rows.Count - 1
    19. For i = 0 To count - 1
    20. ' Anzahl der Spalten
    21. Dim ColumCount As Integer = DataGridView1.ColumnCount - 1
    22. Dim Eintrag As String = Nothing
    23. For g = 0 To ColumCount
    24. If Not g = ColumCount Then
    25. Eintrag += CStr(DataGridView1.Rows(i).Cells(g).Value) & ";"
    26. Else
    27. Eintrag += CStr(DataGridView1.Rows(i).Cells(g).Value)
    28. End If
    29. Next g
    30. Liste += Eintrag & vbCrLf
    31. Next i
    32. Try
    33. IO.File.WriteAllText(Datei, Liste)
    34. Catch ex As Exception
    35. MessageBox.Show("beim speichern ist ein fehler aufgetreten ")
    36. End Try
    37. End Sub
    38. ' DataGridView aus datei lesen und in Grid anzeigen
    39. Private Sub DataGrid_Laden()
    40. If File.Exists(Datei) Then
    41. Dim lines() As String = Nothing
    42. DataGridView1.Rows.Clear()
    43. Me.Cursor = Cursors.AppStarting
    44. 'DataGridView1.AllowUserToAddRows = True
    45. Try
    46. lines = IO.File.ReadAllLines(Datei)
    47. Catch ex As Exception
    48. Me.Cursor = Cursors.Default
    49. Exit Sub
    50. End Try
    51. Dim Menge As Integer = lines.GetLength(Menge) - 1 ' Anzahl der Zeilen ermitteln
    52. For i = 0 To Menge
    53. Dim Eintrag As String = lines(i)
    54. Dim parts() As String = Split(Eintrag, ";")
    55. Dim RowCount As Integer = DataGridView1.RowCount - 1
    56. DataGridView1.Rows.Add()
    57. DataGridView1.BeginEdit(CBool(RowCount))
    58. Dim SplittCount As Integer = parts.Length - 1 ' Anzahl der Einträge in Splitt
    59. If SplittCount >= 0 Then
    60. For g = 0 To SplittCount
    61. DataGridView1.Rows(RowCount).Cells(g).Value = parts(g)
    62. Next g
    63. End If
    64. Next i
    65. DataGridView1.Update()
    66. DataGridView1.EndEdit()
    67. 'DataGridView1.AllowUserToAddRows = False
    68. Me.Cursor = Cursors.Default
    69. End If
    70. End Sub
    71. End Class