VB - Speichen und laden eines Datenformulars

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    VB - Speichen und laden eines Datenformulars

    Hallo,

    bin neu in diesem Forum und leider noch blutiger VB-Anfänger.
    Ich hoffe mal ich schriebe hier in den richtigen Forenbereich, sonst bitte verschieben.

    Ich möchste gerne eine Anwendung erstellen, mit der ich diverse Flächen und Volumen ausrechen kann.
    Nachdem ich mich schon durch zahlreiche Youtube-Tutorials gearbeitet habe ist dabei folgende Form herausgekommen.
    (Siehe Screen)

    Das Berechnen klappt wunderbar.
    Mein Problem ist, dass ich leider noch nix (für mich verständliches) gefunden habe wie ich meine Daten speichern kann und dach ein paar Tagen wieder aufrufen.
    Ich möchte z.B. eine Berechnung machen und die Daten dann unter einem Dateinamen speichern, danach wieder etwas berechnen und speichern, usw.
    Über einen Datei-Öffnen-Dialog möchte ich dann später die verschienen Datein öffnen können und daraus dann ein PDF erstellen.

    Kann mir bitte jemand eine anfängertaugliche Antwort liefern? Das wäre top.

    Falls das irgendwie hilf hänge ich meinen bereits erstellten Code an.

    Vielen Dank schonmal...

    Spoiler anzeigen


    Brainfuck-Quellcode

    1. Public Class Form_Mubo_REck
    2. Dim Länge As Double
    3. Dim Breite As Double
    4. Dim Tiefe As Double
    5. Dim Arbeitsraum As Double
    6. Dim Ergebnis As Double
    7. Dim ErgebnisGrundfläche As Double
    8. Dim ErgebnisVolumenGrundfläche As Double
    9. Dim ErgebnisFlächeArbeitsraum As Double
    10. Dim ErgebnisVolumenArbeitsraum As Double
    11. Dim ErgebnisFlächeGesamt As Double
    12. Private Sub TextboxEingabe_MuboREck_Länge_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextboxEingabe_MuboREck_Länge.TextChanged
    13. Try
    14. Länge = Convert.ToDouble(TextboxEingabe_MuboREck_Länge.Text) '------------Eingabe Länge checken
    15. Catch ex As Exception
    16. TextboxEingabe_MuboREck_Länge.Text = ""
    17. Länge = 0
    18. End Try
    19. End Sub
    20. Private Sub TextboxEingabe_MuboREck_Breite_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextboxEingabe_MuboREck_Breite.TextChanged
    21. Try
    22. Breite = Convert.ToDouble(TextboxEingabe_MuboREck_Breite.Text) '------------Eingabe Breite checken
    23. Catch ex As Exception
    24. TextboxEingabe_MuboREck_Breite.Text = ""
    25. Breite = 0
    26. End Try
    27. End Sub
    28. Private Sub TextboxEingabe_MuboREck_Tiefe_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextboxEingabe_MuboREck_Tiefe.TextChanged
    29. Try
    30. Tiefe = Convert.ToDouble(TextboxEingabe_MuboREck_Tiefe.Text) '------------Eingabe Tiefe checken
    31. Catch ex As Exception
    32. TextboxEingabe_MuboREck_Tiefe.Text = ""
    33. Tiefe = 0
    34. End Try
    35. End Sub
    36. Private Sub TextboxEingabe_MuboREck_Arbeitsraum_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextboxEingabe_MuboREck_Arbeitsraum.TextChanged
    37. Try
    38. Arbeitsraum = Convert.ToDouble(TextboxEingabe_MuboREck_Arbeitsraum.Text) '------------Eingabe Arbeirsraum checken
    39. Catch ex As Exception
    40. TextboxEingabe_MuboREck_Arbeitsraum.Text = ""
    41. Arbeitsraum = 0
    42. End Try
    43. End Sub
    44. Private Sub ButtonEingabe_MuboREck_Berechnen_Click(sender As System.Object, e As System.EventArgs) Handles ButtonEingabe_MuboREck_Berechnen.Click
    45. If TextboxEingabe_MuboREck_Länge.Text = Nothing Then
    46. TextboxEingabe_MuboREck_Länge.Text = "0"
    47. Länge = TextboxEingabe_MuboREck_Länge.Text
    48. Else
    49. Länge = TextboxEingabe_MuboREck_Länge.Text
    50. End If
    51. If TextboxEingabe_MuboREck_Breite.Text = Nothing Then
    52. TextboxEingabe_MuboREck_Breite.Text = "0"
    53. Breite = TextboxEingabe_MuboREck_Breite.Text
    54. Else
    55. Breite = TextboxEingabe_MuboREck_Breite.Text
    56. End If
    57. If TextboxEingabe_MuboREck_Tiefe.Text = Nothing Then
    58. TextboxEingabe_MuboREck_Tiefe.Text = "0"
    59. Tiefe = TextboxEingabe_MuboREck_Tiefe.Text
    60. Else
    61. Tiefe = TextboxEingabe_MuboREck_Tiefe.Text
    62. End If
    63. If CheckBoxEingabe_MuboREck_Arbeitsraum.Checked = True Then
    64. If TextboxEingabe_MuboREck_Arbeitsraum.Text = Nothing Then
    65. TextboxEingabe_MuboREck_Arbeitsraum.Text = "0"
    66. Arbeitsraum = TextboxEingabe_MuboREck_Arbeitsraum.Text
    67. Else
    68. Arbeitsraum = TextboxEingabe_MuboREck_Arbeitsraum.Text
    69. End If
    70. ElseIf CheckBoxEingabe_MuboREck_Arbeitsraum.Checked = False Then
    71. Arbeitsraum = 0
    72. TextboxEingabe_MuboREck_Arbeitsraum.Text = "0"
    73. End If
    74. '---- Berechnungen ----
    75. ErgebnisGrundfläche = (Länge * Breite) 'Grundfläche ohne Arbeitsraum
    76. ErgebnisFlächeArbeitsraum = (Länge + 2 * Arbeitsraum) * (Breite + 2 * Arbeitsraum) - (ErgebnisGrundfläche) 'Nur Fläche Arbeitsraum
    77. ErgebnisVolumenGrundfläche = (Länge * Breite * Tiefe) 'Volumen Grundfläche
    78. ErgebnisVolumenArbeitsraum = (ErgebnisFlächeArbeitsraum * Tiefe) 'Volumen nur Arbeitsraum
    79. ErgebnisFlächeGesamt = (Länge + 2 * Arbeitsraum) * (Breite + 2 * Arbeitsraum) 'Fläche Gesamt
    80. Ergebnis = (Länge + 2 * Arbeitsraum) * (Breite + 2 * Arbeitsraum) * Tiefe 'Volumen Gesamt
    81. '---- Ausgabe ----
    82. LabelAusgabe_MuboREck_TextLänge_Wert.Text = Länge & (" m")
    83. LabelAusgabe_MuboREck_TextBreite_Wert.Text = Breite & (" m")
    84. LabelAusgabe_MuboREck_TextTiefe_Wert.Text = Tiefe & (" m")
    85. LabelAusgabe_MuboREck_TextArbeitsraum_Wert.Text = Arbeitsraum & (" m")
    86. LabelAusgabe_MuboREck_TextGesamtvolumen_Wert.Text = Ergebnis & (" m³")
    87. LabelAusgabe_MuboREck_TextGrundfläche_Wert.Text = ErgebnisGrundfläche & (" m²")
    88. LabelAusgabe_MuboREck_TextVolumenGrundfläche_Wert.Text = ErgebnisVolumenGrundfläche & (" m³")
    89. LabelAusgabe_MuboREck_TextFlächeArbeitsraum_Wert.Text = ErgebnisFlächeArbeitsraum & (" m²")
    90. LabelAusgabe_MuboREck_TextVolumenArbeitsraum_Wert.Text = ErgebnisVolumenArbeitsraum & (" m³")
    91. LabelAusgabe_MuboREck_TextGesamtfläche_Wert.Text = ErgebnisFlächeGesamt & (" m²")
    92. End Sub
    93. Private Sub ButtonAktion_MuboREck_Hauptmenü_Click(sender As System.Object, e As System.EventArgs) Handles ButtonAktion_MuboREck_Hauptmenü.Click
    94. FormHauptmenü.Show()
    95. Me.Hide()
    96. End Sub
    97. Private Sub ButtonEingabe_MuboREck_Leeren_Click(sender As System.Object, e As System.EventArgs) Handles ButtonEingabe_MuboREck_Leeren.Click
    98. '---- Leeren ----
    99. TextboxEingabe_MuboREck_Länge.Clear()
    100. TextboxEingabe_MuboREck_Breite.Clear()
    101. TextboxEingabe_MuboREck_Tiefe.Clear()
    102. TextboxEingabe_MuboREck_Arbeitsraum.Clear()
    103. LabelAusgabe_MuboREck_TextGesamtvolumen_Wert.Text = ""
    104. LabelAusgabe_MuboREck_TextLänge_Wert.Text = Nothing
    105. LabelAusgabe_MuboREck_TextBreite_Wert.Text = Nothing
    106. LabelAusgabe_MuboREck_TextTiefe_Wert.Text = Nothing
    107. LabelAusgabe_MuboREck_TextArbeitsraum_Wert.Text = Nothing
    108. LabelAusgabe_MuboREck_TextGesamtvolumen_Wert.Text = Nothing
    109. LabelAusgabe_MuboREck_TextGrundfläche_Wert.Text = Nothing
    110. LabelAusgabe_MuboREck_TextVolumenGrundfläche_Wert.Text = Nothing
    111. LabelAusgabe_MuboREck_TextFlächeArbeitsraum_Wert.Text = Nothing
    112. LabelAusgabe_MuboREck_TextVolumenArbeitsraum_Wert.Text = Nothing
    113. LabelAusgabe_MuboREck_TextGesamtfläche_Wert.Text = Nothing
    114. End Sub
    115. Private Sub CheckBoxOptionen_MuboREck_Info_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBoxOptionen_MuboREck_Info.CheckedChanged
    116. '---- Infobox ----
    117. If CheckBoxOptionen_MuboREck_Info.Checked = True Then
    118. Me.Width = 1239
    119. PictureBoxInfo_MuboREck_Bild.Image = My.Resources.Rechteck
    120. LabelInfo_MuboREck_Infotext.Text = "Länge x Breite x Tiefe"
    121. ElseIf CheckBoxOptionen_MuboREck_Info.Checked = False Then
    122. Me.Width = 891
    123. End If
    124. End Sub
    125. Private Sub TextboxTextfeld_MuboREck_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextboxTextfeld_MuboREck.TextChanged
    126. If CheckBoxOptionen_MuboREck_Textfeld.Checked = True Then
    127. TextboxTextfeld_MuboREck.Show()
    128. Else
    129. TextboxTextfeld_MuboREck.Hide()
    130. End If
    131. End Sub
    132. Private Sub CheckBoxOptionen_MuboREck_Textfeld_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBoxOptionen_MuboREck_Textfeld.CheckedChanged
    133. If CheckBoxOptionen_MuboREck_Textfeld.Checked = True Then
    134. TextboxTextfeld_MuboREck.Visible = True
    135. ElseIf CheckBoxOptionen_MuboREck_Textfeld.Checked = False Then
    136. TextboxTextfeld_MuboREck.Visible = False
    137. End If
    138. End Sub
    139. Private Sub CheckBoxOptionen_MuboREck_Zwischenergebnis_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBoxOptionen_MuboREck_Zwischenergebnis.CheckedChanged
    140. If CheckBoxOptionen_MuboREck_Zwischenergebnis.Checked = True Then
    141. LabelAusgabe_MuboREck_TextGrundfläche.Visible = True
    142. LabelAusgabe_MuboREck_TextGrundfläche_Wert.Visible = True
    143. LabelAusgabe_MuboREck_TextFlächeArbeitsraum.Visible = True
    144. LabelAusgabe_MuboREck_TextFlächeArbeitsraum_Wert.Visible = True
    145. LabelAusgabe_MuboREck_TextVolumenGrundfläche.Visible = True
    146. LabelAusgabe_MuboREck_TextVolumenGrundfläche_Wert.Visible = True
    147. LabelAusgabe_MuboREck_TextVolumenArbeitsraum.Visible = True
    148. LabelAusgabe_MuboREck_TextVolumenArbeitsraum_Wert.Visible = True
    149. LineShapeAusgabe_MuboREck_3.Visible = True
    150. LineShapeAusgabe_MuboREck_2.Visible = True
    151. LabelAusgabe_MuboREck_TextGesamtfläche.Location = New Point(95, 283)
    152. LabelAusgabe_MuboREck_TextGesamtfläche_Wert.Location = New Point(228, 283)
    153. LabelAusgabe_MuboREck_TextGesamtvolumen.Location = New Point(86, 309)
    154. LabelAusgabe_MuboREck_TextGesamtvolumen_Wert.Location = New Point(228, 309)
    155. ElseIf CheckBoxOptionen_MuboREck_Zwischenergebnis.Checked = False Then
    156. LabelAusgabe_MuboREck_TextGrundfläche.Visible = False
    157. LabelAusgabe_MuboREck_TextGrundfläche_Wert.Visible = False
    158. LabelAusgabe_MuboREck_TextFlächeArbeitsraum.Visible = False
    159. LabelAusgabe_MuboREck_TextFlächeArbeitsraum_Wert.Visible = False
    160. LabelAusgabe_MuboREck_TextVolumenGrundfläche.Visible = False
    161. LabelAusgabe_MuboREck_TextVolumenGrundfläche_Wert.Visible = False
    162. LabelAusgabe_MuboREck_TextVolumenArbeitsraum.Visible = False
    163. LabelAusgabe_MuboREck_TextVolumenArbeitsraum_Wert.Visible = False
    164. LineShapeAusgabe_MuboREck_3.Visible = False
    165. LineShapeAusgabe_MuboREck_2.Visible = False
    166. LabelAusgabe_MuboREck_TextGesamtfläche.Location = New Point(95, 149)
    167. LabelAusgabe_MuboREck_TextGesamtfläche_Wert.Location = New Point(228, 149)
    168. LabelAusgabe_MuboREck_TextGesamtvolumen.Location = New Point(86, 175)
    169. LabelAusgabe_MuboREck_TextGesamtvolumen_Wert.Location = New Point(228, 175)
    170. End If
    171. End Sub
    172. End Class


    Bilder
    • Screen.PNG

      39,81 kB, 884×554, 173 mal angesehen

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

    @Fragelix Willkommen im Forum. :thumbup:
    1. Drück den Button Erweiterte Antwort, da kannst Du Dateien anhängen.
    2. Quellcode kannst Du direkt in Deinen Post einfügen, drück einen der Sprach-Button (z.B. VB.NET) und füge dann Deinen Code da rein.
      Ist der Code länger, mach einen Spoiler drumherum.
    3. Pack nicht 7 Probleme in einen Thread, da lässt sich schlecht mit arbeiten.
      Zerlege Dein Problem in eine Reihe von Elementarproblemen und löse diese separat, ggf. je ein Thread pro Problem.
      Löse jedes Problem in einem eigenen kleinen Projekt, und wenn Du alles zu Deiner Zufriedenheit gelöst hast, machst Du da ein neues Gesamt-Projekt draus.
    4. Welche Daten Deiner Rechnung sollen gespeichert werden?
      Du kannst im Projekt Settings anlegen und diese an Controls binden. Such gezielt danach.
    5. Wenn Du numerische Berechnungen anstellen wilst, bietet sich als Input-Control das NumericUpDown an. Da hast Du keine Probleme mit der Typ-Konvertierung.
    6. Meide YT-Tutorials.
    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!
    Aso, ok.

    Also als erstes möchte ich dann eine Datei erstellen/speichern in der die Werte aus den Textboxen und meinen Ausgabelables gespeichert werden.
    Wenn ich später die Datei öffne sollen die Werte wieder in den Textboxen und Labels stehen.

    Ich stöber nochmal bei den Settings rum, mal gucken ob ich da durchsteig. :S

    NumericUpDown kenne ich nicht, bzw. noch nix davon gehört - ich recherchiere da nach.

    Danke erstmal für die fixen Antworten. :thumbsup:


    Unnötiges Vollzitat entfernt
    -Artentus

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

    Fragelix schrieb:

    Aso, ok.
    Bitte zitiere hier nicht die Posts über Dir vollständig, das wird hier nicht geren gesehen.

    Fragelix schrieb:

    Also als erstes möchte ich dann eine Datei erstellen/speichern
    Wenn Du ein Problem hast, gib keine Lösung vor, damit verbaust Du Dir den Weg zu einer besseren Lösung.
    My.Settings.
    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!

    Fragelix schrieb:


    Ich möchte z.B. eine Berechnung machen und die Daten dann unter einem Dateinamen speichern, danach wieder etwas berechnen und speichern, usw.
    Über einen Datei-Öffnen-Dialog möchte ich dann später die verschienen Datein öffnen können und daraus dann ein PDF erstellen.


    Wieso sollte für diese Anfrage MySettings eine "bessere" Lösung sein? IMO ist es gar keine Lösung für seinen Anwendungsfall.
    Wenn ich es richtig verstanden habe und mir auch sein Bild zur Programmoberfläche so ansehe, dann gehe ich von Datenbänkerei aus. Wenigstens ein typisiertes Dataset mit Tabellen und Bindings sollten es meiner Meinung nach sein.