Progressbar mit Fortschrittzähler

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

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Progressbar mit Fortschrittzähler

    Hallo zusammen,
    Ich hänge an einen Probelm.
    Ich Lese einen Text Datei ein und will den Fortschritt anzeigen.
    Die Progressbar läuft, Ich möchte aber auch eine Beschriftung hinzufügen.

    Ich habe die max Anzahl der Zeilen ermittelt, übergebe sie an ein Label Feld. ==> Dies wird aber nicht angezeigt.
    Ich Zähle hoch und übergebe es auch an Label Feld ==> Dies wird aber nicht angezeigt.

    hat jemand einen Tipp für mich?



    VB.NET-Quellcode

    1. Option Strict On
    2. Imports System.Data.OleDb
    3. Public Class Form1
    4. Dim tcts_lfd As Integer
    5. Dim anzahl_zeile As String
    6. Dim i As Integer
    7. Dim DB As String
    8. Dim con As New OleDbConnection
    9. Dim cmd As New OleDbCommand
    10. Dim reader As OleDbDataReader
    11. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    12. ' Variable bei Formular deklarieren
    13. 'Datenbank Test
    14. DB = "C:\DB\"
    15. 'Datenbank live
    16. 'DB = "N:\Datenbanken\"
    17. End Sub
    18. Sub ermitteln_hoechste_lfd()
    19. con.ConnectionString =
    20. "Provider=Microsoft.ACE.OLEDB.12.0;" &
    21. "Data Source=" & DB & "dbminastabellen.accdb"
    22. cmd.Connection = con
    23. Try
    24. con.Open()
    25. cmd.CommandText = "select max(lfd) as tcts_lfd from tabtabellen where NAME ='TCTS' "
    26. reader = cmd.ExecuteReader()
    27. reader.Read()
    28. tcts_lfd = CInt(reader("tcts_lfd"))
    29. reader.Close()
    30. tcts_lfd = tcts_lfd + 1
    31. 'MsgBox("Es wurden die Zahl " & Ergebnis_clu_max_wtbp & " ermittelt")
    32. con.Close()
    33. Catch ex As Exception
    34. MessageBox.Show(ex.Message)
    35. End Try
    36. End Sub
    37. Private Sub cmd_einlesen_total_Click(sender As Object, e As EventArgs) Handles cmd_einlesen_total.Click
    38. con.ConnectionString =
    39. "Provider=Microsoft.ACE.OLEDB.12.0;" &
    40. "Data Source=" & DB & "dbminastabellen.accdb"
    41. cmd.Connection = con
    42. con.Open()
    43. Try
    44. Dim Pat As String = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "C:\TCTS\TOTAL-Stationsliste_WEAT6.txt")
    45. anzahl_zeile = CStr(System.IO.File.ReadAllLines(Pat).Count)
    46. ProgressBar1.Minimum = 0
    47. '***************************************************************************************************************
    48. 'HIER IST MEIN PROBLEM
    49. ProgressBar1.Maximum = CInt(anzahl_zeile)
    50. '***************************************************************************************************************
    51. Dim sr As New System.IO.StreamReader("C:\TCTS\TOTAL-Stationsliste_WEAT6.txt")
    52. Dim wert03 As String
    53. Dim wert03_conv As Double
    54. Dim tcts_count As Integer
    55. Dim kundenr As Double
    56. Dim name_lfd As String
    57. Dim Insert_Ergebnis As Integer
    58. Dim Update_Ergebnis As Integer
    59. Dim Insert_Ergebnis_NEW As Integer
    60. Dim Update_Ergebnis_NEW As Integer
    61. Dim Zeileninhalt As String
    62. Dim Arr() As String
    63. kundenr = 1234
    64. Do While Not sr.EndOfStream
    65. Zeileninhalt = sr.ReadLine()
    66. Arr = Zeileninhalt.Split(CChar(";"))
    67. wert03 = Arr(0)
    68. i = i + 1
    69. '***************************************************************************************************************
    70. 'PROBLEM 2 hier übergebe ich den Wert der hochzählen dieser wird auch nicht angezeigt im Label Feld
    71. lbl_progress_value.Text = i
    72. '***************************************************************************************************************
    73. ProgressBar1.Value = i
    74. If (wert03 = "" Or Not IsNumeric(wert03)) Then
    75. Else
    76. wert03_conv = CDbl(wert03)
    77. 'MessageBox.Show("Die Nummer lautet: " & wert03)
    78. cmd.CommandText = "select count(wert03) as tcts_wert03 from tabtabellen where NAME ='TCTS' and wert03= " & wert03_conv
    79. reader = cmd.ExecuteReader()
    80. reader.Read()
    81. tcts_count = CInt(reader("tcts_wert03"))
    82. reader.Close()
    83. If tcts_count = 0 Then
    84. cmd.CommandText = "select max(lfd) as tcts_lfd from tabtabellen where NAME ='TCTS' "
    85. reader = cmd.ExecuteReader()
    86. reader.Read()
    87. tcts_lfd = CInt(reader("tcts_lfd"))
    88. reader.Close()
    89. tcts_lfd = tcts_lfd + 1
    90. name_lfd = "TCTS" & tcts_lfd
    91. cmd.CommandText = "INSERT INTO tabtabellen (NAME, LFD, WERT01, WERT02, WERT03, NAME_LFD) values ('TCTS'," & tcts_lfd & " , " & kundenr & ", 0, " & wert03 & ",'" & name_lfd & "')"
    92. Insert_Ergebnis = cmd.ExecuteNonQuery()
    93. Insert_Ergebnis_NEW = Insert_Ergebnis_NEW + 1
    94. 'name =TCTS
    95. 'lfd = ermitteln
    96. 'wert01 = Kundnummer
    97. 'wert02 = 0
    98. 'wert03 = TCS
    99. ' Name_lfd = Text TCTS2102
    100. Else
    101. cmd.CommandText = "update tabtabellen set wert01=" & kundenr & " where wert03=" & wert03
    102. Update_Ergebnis = cmd.ExecuteNonQuery()
    103. Update_Ergebnis_NEW = Update_Ergebnis_NEW + 1
    104. End If
    105. End If
    106. Loop
    107. MessageBox.Show("Fertig mit " & Insert_Ergebnis_NEW & " Eintragungen und " & Update_Ergebnis_NEW & " Fehlerkorekturen")
    108. ProgressBar1.Value = 0
    109. lbl_progress_max.Text = ""
    110. lbl_progress_value.Text = ""
    111. con.Close()
    112. sr.Close()
    113. Catch ex As Exception
    114. MessageBox.Show(ex.Message)
    115. End Try
    116. End Sub
    117. End Class

    jnpanzer schrieb:

    hat jemand einen Tipp für mich?


    Klar. Mein Tipp: Bau dir ne separate Klasse für den DB Zugriff. Da ne Insert/Update Function rein. Dann brauchse dein Zeug nicht immer wieder schreiben.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    Selter98 schrieb:

    VB.NET-Quellcode

    1. Me.Refresh
    nützt nix.
    @jnpanzer Du musst alle Controls, die geändert werden, einzeln updaten.
    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!