VB.Net Drucken der Werte aus DGV

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

Es gibt 76 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Eh, nein. Der Code sagt was anderes. Und zwar, wieviel schon geschafft/gedruckt wurde.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @uNbRaKe Probier es aus.
    Actline ist die erste auf einer Seite gedruckte DGV-Zeile.
    Die Anzahl der zu druckenden Zeilen ist Dein Input.
    Erstell Dir ein DGV mit 60 Zeilen, wo nur die Zeilennummern drinnestehen und druck die, dann musst Du nicht wegen jeder Zeile Code hier eine Frage stellen. ;)
    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 ich habe es jetzt mit Testdaten versucht und mir ist folgendes aufgefallen. Und zwar wird immer der gleiche Datensatz gedruckt und nicht alle Datensätze des DGV´s. Des weiteren wird mein Header nicht mehr befüllt.
    Ich möchte ebenso eine Summe einer Spalte pro Seite erstellen, jedoch beinhaltet die Spalte Werte in Form von 00:05, 00:20, 01:20 etc.

    Ich habe schon ein Versuch gestartet jedoch erfolglos.

    VB.NET-Quellcode

    1. ​Dim summe As Integer = Format("hh:mm")
    2. For i As Integer = 0 To DataDataGridView.Rows.Count - 1
    3. If DataDataGridView.Rows(i).Cells(3).Value IsNot DBNull.Value Then
    4. summe += CInt(DataDataGridView.Rows(i).Cells(3).Value)
    5. End If
    6. Next
    7. TextBox11.Text = summe


    ist es möglich, mit dem Format zu rechnen?

    uNbRaKe schrieb:

    ist es möglich, mit dem Format zu rechnen?
    Was genau ist das?
    Zum Verständnis folgende ernsthafte Frage:
    Was ist der Unterschied zwischen 12 Uhr und 12 Stunden?
    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!
    @uNbRaKe AHa.
    Für die Uhrzeit nimmst Du die Klasse DateTime, für die Differenzen der Uhrzeiten die Klasse TimeSpan.
    docs.microsoft.com/de-de/dotne…datetime?view=netcore-3.1
    docs.microsoft.com/de-de/dotne…timespan?view=netcore-3.1
    Mit den Dingern kannst Du richtig rechnen, allerdings solltest Du vorher in einem kleinen Testprojekt den Umgang damit üben.
    Wenn bei den Uhrzeiten kein Datum dabei steht, musst Du darauf achten, dass dann überall dasselbe Datum drinne steht.
    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
    Das errechnen der Differenz funktioniert, jedoch die Summe der Spalte nicht.

    VB.NET-Quellcode

    1. Try
    2. Dim sTime1 As New System.DateTime
    3. Dim sTime2 As New System.DateTime
    4. sTime1 = BeginnTextBox.Text
    5. sTime2 = EndeTextBox.Text
    6. Dim time1 As TimeSpan = TimeSpan.Parse(sTime1)
    7. Dim time2 As TimeSpan = TimeSpan.Parse(sTime2)
    8. Dim nMin As Integer = 0
    9. With time2.Subtract(time1)
    10. nMin = .Hours * 60 + .Minutes
    11. End With
    12. Dim sTime As String = New TimeSpan(0, nMin, 0).ToString.Substring(0, 5)
    13. 'TextBox3.Text = nMin.ToString
    14. SummeTextBox.Text = sTime.ToString
    15. Catch ex As Exception
    16. MsgBox("Bitte Uhrzeit korrekt" & vbCrLf & "Stunde:Minute (00:00)" & vbCrLf & "eingeben." & vbCrLf & "" & vbCrLf & "z.B.: 7:35", vbOKOnly + vbCritical, "Fehler")
    17. End Try


    So errechne ich die Differenz.

    Der Wert aus der Summentextbox wird mit den anderen Werten als Datensatz gespeichert.
    @uNbRaKe Ist das Dein Übungsprojekt?
    Verstehe dies:
    DateTime - DateTime = TimeSpan
    DateTime + TimeSpan = DateTime
    DateTime - TimeSpan = DateTime

    TimeSpan + TimeSpan = TimeSpan
    TimeSpan - TimeSpan = TimeSpan

    DateTime + DateTime ist nicht definiert.

    Generiere Dir Testdaten und übe damit.
    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 das ist kein Testprojekt und dort funktioniert das errechnen der Zeitspanne zwischen der Uhrzeiten jedoch kann ich keine Summe der ganzen Zeitspannen aus dem DataGridView erstellen.

    VB.NET-Quellcode

    1. ​Dim summe As Integer = Format("hh:mm")
    2. For i As Integer = 0 To DataDataGridView.Rows.Count - 1
    3. If DataDataGridView.Rows(i).Cells(3).Value IsNot DBNull.Value Then
    4. summe += CInt(DataDataGridView.Rows(i).Cells(3).Value)
    5. End If
    6. Next
    7. TextBox11.Text = summe


    funktioniert nicht die Frage ist wieso nicht wo befindet sich mein Denkfehler

    uNbRaKe schrieb:

    VB.NET-Quellcode

    1. ​Dim summe As Integer = Format("hh:mm")
    Was soll in dieser Zeile passieren?
    Was ist TimeSpan?
    Antworte nur auf diese beiden Fragen :!:
    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!
    @uNbRaKe Du hast von zwei Fragen nur eine halbe beantwortet. X(
    Was ist das Ergebnis von Format("hh:mm")?
    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!
    @uNbRaKe OK.

    VB.NET-Quellcode

    1. Dim summe As Integer = Format("hh:mm")
    Format gibt einen String zurück, summe ist vom Typ ein Integer.
    Das geht so nicht, Du behandelst Äpfel als Birnen.
    Fang an mit Option Strict On :!:
    Visual Studio - Empfohlene Einstellungen
    Melde Dich erst wieder, wenn Du das umgesetzt hast!
    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 ich habe mir den link angesehen option strict on aktiviert nun bin ich dabei zu versuchen die fehler zu verstehen und zu verbessern

    Edit:

    Frage zur Konvertierung. Bei der Fehlerbehebung bin ich auf folgendes gestoßen.

    Das war der alte Code, welcher nun als Fehler gesehen wird.

    VB.NET-Quellcode

    1. TextBox2.Text = BenutzerDataGridView.CurrentRow.Cells("DataGridViewTextBoxColumn23").Value


    Nach Recherche bin ich auf folgende Lösung gestoßen.

    VB.NET-Quellcode

    1. Dim Text1 As New Object
    2. Text1 = BenutzerDataGridView.CurrentRow.Cells("DataGridViewTextBoxColumn23").Value
    3. TextBox2.Text = Text1.ToString()

    Und zwar das erstellen eines Objektes, dem Objekt den Wert zuweisen und dann als String in der TextBox anzeigen. Ist dies korrekt?



    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „uNbRaKe“ ()

    @Kasi Falls Du diesen Thread verfolgt haben solltest (nehme ich allerdings nicht an) sieh Dir doch noch mnal den Post #26 an.
    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 schrieb:

    @Kasi Falls Du diesen Thread verfolgt haben solltest (nehme ich allerdings nicht an) sieh Dir doch noch mnal den Post #26 an.


    hab ich gesehen, in Post#23 sagt er ...ist es möglich, mit dem Format zu rechnen?
    und in Post#29 ....wo ist mein Denkfehler..

    manchmal ist Bleistift,papier und Taschenrecher hilfreich wenn man eine Denkblokade hat

    Kasi schrieb:

    Denkfehler
    Wenn wir mit Zeiten, Datümmern und Differenzen davon rechnen, nutzen wir die dafür designten Typen: DateTime und TimeSpan.
    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!
    *unnötiges Zitat entfernt*

    sind Minuten kein Wert

    VB.NET-Quellcode

    1. Private Function m(ByVal mt As Integer) As String
    2. 'dein Integer wert in Minuten
    3. Dim ts As New TimeSpan(0, mt, 0)
    4. 'Gesamt Std. in Format..z.b. 142:23 Stunden und Minuten
    5. Dim s As String = String.Format("{0:00}:{1:00}", Math.Floor(ts.TotalHours), ts.Minutes)
    6. Return s
    7. End Function
    8. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    9. MessageBox.Show(m(750)) '= 12:30
    10. MessageBox.Show(m(8253)) '= 137:33
    11. End Sub


    er will ja die Gesamt Stunden berechnen, es gibt sicherlich x Versionen das zu brechnen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()