DGV als TXT SPEICHERN

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Visual_Prog.

    DGV als TXT SPEICHERN

    das steht bei mir im Programm, nur, wo gebe ich den speicherpfad an?

    und dann schlaegt Option strict on noch ein paar verbesserungen vor....kommt das dann hin?


    vielen dank!!

    VB.NET-Quellcode

    1. ''' <summary>
    2. ''' Speichert den Inhalt eines DataGridView-Controls in eine Textdatei
    3. ''' Als Feldtrennzeichen wird das Komma verwendet
    4. ''' </summary>
    5. ''' <param name="DataGridView">DataGridView-Control</param>
    6. ''' <param name="Filename">Pfad+Dateiname der Textdadtei</param>
    7. Public Function DataGridView_ExportTXT(ByVal DataGridView As DataGridView, _
    8. ByVal Filename As String) As Boolean
    9. Return DataGridView_ExportTXT(DataGridView, Filename, ",", False)
    10. End Function''' <summary>
    11. ''' Speichert den Inhalt eines DataGridView-Controls in eine Textdatei
    12. ''' </summary>
    13. ''' <param name="DataGridView">DataGridView-Control</param>
    14. ''' <param name="Filename">Pfad+Dateiname der Textdadtei</param>
    15. ''' <param name="FieldSep">Feldtrennzeichen</param>
    16. Public Function DataGridView_ExportTXT(ByVal DataGridView As DataGridView, _
    17. ByVal Filename As String, _
    18. ByVal FieldSep As String) As Boolean
    19. Return DataGridView_ExportTXT(DataGridView, Filename, FieldSep, False)
    20. End Function
    21. ''' <summary>
    22. ''' Speichert den Inhalt eines DataGridView-Controls in eine Textdatei
    23. ''' </summary>
    24. ''' <param name="DataGridView">DataGridView-Control</param>
    25. ''' <param name="Filename">Pfad+Dateiname der Textdadtei</param>
    26. ''' <param name="FieldSep">Feldtrennzeichen</param>
    27. ''' <param name="QuoteText">True, wenn Text und Datumsfelder in
    28. ''' Anführungszeichen eingeschlossen werden sollen</param>
    29. Public Function DataGridView_ExportTXT(ByVal DataGridView As DataGridView, _
    30. ByVal Filename As String, _
    31. ByVal FieldSep As String, _
    32. ByVal QuoteText As Boolean) As Boolean
    33. ' Rückgabewert
    34. Dim bResult As Boolean = False
    35. ' StreamWriter-Objekt
    36. Dim oStream As IO.StreamWriter = Nothing
    37. Try
    38. ' Textdatei zum Schreiben öffnen
    39. oStream = My.Computer.FileSystem.OpenTextFileWriter( _
    40. Filename, False, System.Text.Encoding.Default)
    41. Catch ex As Exception
    42. ' Fehlerausgabe
    43. MsgBox("Textdatei konnte nicht erstellt werden!" & vbCrLf & _
    44. ex.Message, MsgBoxStyle.Exclamation)
    45. End Try
    46. If oStream IsNot Nothing Then
    47. Dim i As Integer
    48. Try
    49. With DataGridView
    50. ' 1. Zeile = Feldbeschreibung
    51. For i = 1 To .Columns.Count
    52. If i > 1 Then oStream.Write(FieldSep)
    53. Debug.Print(.Columns(i - 1).ValueType.ToString)
    54. oStream.Write(.Columns(i - 1).HeaderText)
    55. Next i
    56. oStream.WriteLine()
    57. ' jetzt die einzelnen Datenzeilen speichern
    58. For i = 1 To .RowCount
    59. For u As Integer = 1 To .Columns.Count
    60. If u > 1 Then oStream.Write(FieldSep)
    61. Dim sValue As String
    62. If .Columns(u - 1).ValueType Is GetType(String) OrElse _
    63. .Columns(u - 1).ValueType Is GetType(Date) Then
    64. ' wenn String oder Datum, Wert ggf. in Anführungszeichen setzen
    65. If QuoteText Then
    66. sValue = Chr(34) & .Rows(i - 1).Cells(u - 1).Value & Chr(34)
    67. Else
    68. sValue = .Rows(i - 1).Cells(u - 1).Value
    69. End If
    70. ElseIf .Columns(u - 1).ValueType Is GetType(Boolean) Then
    71. ' Boolean-Werte als 0 oder -1 speichern
    72. sValue = IIf(.Rows(i - 1).Cells(u - 1).Value, "-1", "0")
    73. Else
    74. ' bei numerischen Datentypen mit Nachkommastellen,
    75. ' als Dezimaltrennzeichen immer Punkt (.) verwenden
    76. ' --> Str(...)
    77. sValue = Str(.Rows(i - 1).Cells(u - 1).Value).Trim
    78. End If
    79. oStream.Write(sValue)
    80. Next u
    81. oStream.WriteLine()
    82. Next i
    83. End With
    84. ' Rückgabewert: Success
    85. bResult = True
    86. Catch ex As Exception
    87. ' Fehlerausgabe
    88. MsgBox("Fehler beim Erstellen der Exportdatei!" & vbCrLf & ex.Message, _
    89. MsgBoxStyle.Exclamation)
    90. End Try
    91. ' Datei schließen
    92. oStream.Close()
    93. oStream = Nothing
    94. End If
    95. ' Rückgabewert der Funktion
    96. Return bResult
    97. End Function


    quelle: vbarchiv.net/tipps/tipp_1908.html
    also wenn du ein typisiertes Dataset hast, dann verstehe ich nicht, warum du ein DGV mit > 100 Zeilen minderwertigen Code (untypisiert, vb6-style, strict off) speichern willst, wenn du das Dataset mit nur einer Zeile abspeichern kannst:

    VB.NET-Quellcode

    1. DsCustomers1.WriteXml(filename)
    Beachte auch den Unterschied: vbarchiv will ein DGV speichern (also ein Control, was im Grunde Quatsch ist), und das Dataset speichert halt Daten, keine Controls.
    Soo wir muessen einmal einen Schritt zurück.

    Ich habe jetzt eine neue datenquelle erstellt als objekt, habe dann die zugehörige form ausgesucht.
    dann habe ich sie dem datagridview angefuegt.

    Was passiert denn jetzt? wenn ich die DGV mit Daten auffuelle, werden die dann in der Datenquelle gespeichert?
    Sodass ich dann einach die Datenquelle als txt speichern bzw laden kann?
    watwatwat?
    hast eine neue datenquelle erstellt, fein.
    dann die zugehörige form ausgesucht? Was ist denn die einer datenquelle zugehörige form???
    "dann sie dem datagridview angefügt" watwat? die zugehörige form dem datagridview angefügt?? wie zum Kuckuck fügt man einem datagridview ein form an?

    sorry - alles kauderwelsch.

    zu deiner Frage:

    Visual_Prog schrieb:

    Sodass ich dann einach die Datenquelle als txt speichern bzw laden kann?
    kommt drauf an, welchen Datentyp deine Datenquelle hat.

    Welchen Datentyp hat deine Datenquelle?
    also ich bin:
    projekt, neue Datenbank, habe dann als datenbanktyp objekt ausgewaehlt.

    dann wurde gefragt: an welche Objekte soll gebunden werden ? in dem Menue habe ich dann die form ausgewaehlt, an der ich das binden will (das meine ich mit zugehörige form).

    im designer habe ich dann oben rechts an der DGV auf das Pfeil gedrueckt. da steht dann datenquelle auswählen. habe dann natürlich die datenquelle ausgewählt, die ich davor erstellt habe.

    hoffe das war sprachlich besser formuliert^^ aber da stecke ich nun fest und will das ja bekanntlich speichern als txt
    projekt-neue Datenbank kenne ich nicht - k.A., was du da gemacht hast.

    datenbanktyp objekt gibt es nicht - das weiss ich immerhin sicher.

    an welche Objekte soll gebunden werden? den dialog kenne ich, da muss man seine Datenmodell-Klassen angeben. Wenn du da ein form angegeben hast, war das Unsinn, denn ein Form ist kein Datenmodell.

    was du dann als datenquelle eines DGVs auswählen konntest ist mir schleierhaft, aber sinnvoll wirds nicht sein.


    warum fügst du deim Projekt nicht mal ein typisiertes Dataset zu? die sind besonders leicht abzuspeichern - den Code dazu habich sogar schon gepostet.
    Hier gibts auch Videos zum Thema:
    vier Views-Videos

    Visual_Prog schrieb:

    <p>ja wir m&uuml;ssen das echt mal heute oder morgen fertig kriegen : D</p>

    <p>es kann ja echt nicht so schwer sein eine dgv zu speichern ; /</p>


    Die ganze Zeit schmeisst dir EDR Perlen vor die Füsse, aber Du scheinst nur Bahnhof zu verstehen. Dir fehlen alle Grundlagen und was Du versuchst in rumwurschteln in veraltetem Code.
    EDR versucht Dir zu erklären, dass Du eigentlich so gut wie gar kein Code benötigst, das meiste ist im Designer leicht anzulegen.
    Ein Datagridview ist übrigens dazu da, Daten (Quelle: Dataset / Datenbank) in Tabellenform darzustellen, so heißt das Dingens auch, nur auf Englisch halt.
    Darstellen heißt anzeigen, evtl. noch verändern, zufügen oder löschen von Datensätzen. Speichern, erneut Laden, Drucken etc. sind alles andere Aufgaben. Und ein Dataset lädt oder speichert man mit einer einigen Programmzeile, zuzüglich das an Zeilen was Du brauchst für Dialoge um es komfortabel zu gestalten.
    Wenn Du die Daten als Text (was für Text? CSV?) ausgeben willst, dann bau dir eine einfache Exportfunktion. Die Daten werden aber nicht aus dem DGV (View!) exportiert, sondern aus dem Dataset.

    Das alles und noch viel mehr, versucht Dir EDR die ganze Zeit beizupulen. Scheint mir aber, als wären es die besagten Perlen....

    Visual_Prog schrieb:

    es kann ja echt nicht so schwer sein eine dgv zu speichern

    Vielleicht hilft dir das auf die Sprünge: Man speichert nicht das Control DGV sondern ihre Daten an die es gebunden ist. Und das ist ein Dataset mit der Tabelle an die das DGV verbunden ist...
    Es ist GESCHAFFT. Ich war einfach komplett auf der falschen faehrte...
    Wollte alles selber schreiben, dabei geht das so einfach mit den Designer...

    Hatte vom Bus aus programmiert und da war Youtube gesperrt....

    Auf jeden Fall wieder ein großes Dankschön an alle Poster!
    Hat zwar ganz schön gedaeuert, aber es ist im Kasten!!! :D
    Und sone XML Dateien sind ja auch Hamma, so klein, wie eine txt aehnlich ein html dokument :D