vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
berechnen im DGV 
Autor: Erichbru
Datum: 30.03.24 12:09

ich befülle eine DGV mit Daten, bzw eine Datatable

ID = autowert
Ablesedatum = DateTime aus Datetimepicker mit Uhrzeit
Tag = String aus Ablesedatum
M-J = String aus Ablesedatum
Ablesedaten = double (Eingabewert)
Result = double


in der Spalte (5) "Result" soll nun die Differenz der Ablesedaten Zeile für Zeile berechnet werden

also so:



habe schon gesucht aber so keinen Fund gehabt

ich bekomme das nicht hin, und bitte hier um eure Hilfe

Danke
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: berechnen im DGV 
Autor: Kuno60
Datum: 30.03.24 13:41

Hallo!

Von einem Datensatz aus kannst du nicht so ohne weiteres auf andere Datensätze zugreifen.
Die Differenzen musst du selbst in einer Schleife berechnen und in die Datenbank eintragen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: berechnen im DGV 
Autor: Erichbru
Datum: 30.03.24 14:31

Hallo Kuno60,

Die Differenzen musst du selbst in einer Schleife berechnen und in die Datenbank eintragen

wie könnte die Schleife denn aussehen ?

meine Schleife (Test) kriegt das nicht hin da bekomme ich in jeder Zeile "erste Ablesung"
das gehört aber nur in Zeile (RowIndex) 0, drüber sind ja keine Zeilen mehr



Private Sub Verbrauch_berechnen()
 Dim kwhverbraucht As Double
 
        For Zeile As Integer = 0 To DGVStrom.Rows.Count - 1
            If DGVStrom.CurrentCell.RowIndex = 0 Then
                DGVStrom.Rows(Zeile).Cells(5).Value = "erste Ablesung"
            Else
                DGVStrom.Rows(Zeile).Cells(4).Value ??????
            End If
        Next Zeile
End Sub
Danke
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: berechnen im DGV 
Autor: Kuno60
Datum: 30.03.24 22:03



Mach's mal so:

Private Sub Verbrauch_berechnen()
  Dim Stand As Double
 
  For Zeile As Integer = 0 To DGVStrom.Rows.Count - 1
    If Zeile = 0 Then
      DGVStrom.Rows(Zeile).Cells(5).Value = "erste Ablesung"
      Stand = DGVStrom.Rows(Zeile).Cells(4).Value
    Else
      DGVStrom.Rows(Zeile).Cells(5).Value = DGVStrom.Rows(Zeile).Cells(4).Value _
        - Stand
      Stand = DGVStrom.Rows(Zeile).Cells(4).Value
    End If
  Next Zeile
End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: berechnen im DGV 
Autor: Erichbru
Datum: 31.03.24 11:27

hallo kuno60,

danke hat funktioniert super



und jetzt möchte ich noch die differenz in Tagen zwischen den Eingaben

also 21.02.2023 - 21.1.2023 = Tage
21.03.2023 - 21.02.2023 = Tage
usw.

denke mit einer Schleife oder in die Schleife integrieren ?



Frohe Ostern
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: berechnen im DGV 
Autor: Erichbru
Datum: 31.03.24 19:28

ich habe das unten probiert aber da bekomme ich nur 0 Tage heraus ?




  Private Sub Verbrauch_InnerhalbvonTagen()
        For Zeile As Integer = 0 To DGVStrom.Rows.Count - 1
            If Zeile = 0 Then
                DGVStrom.Rows(Zeile).Cells(6).Value = 0
            Else
                Dim Dateneingabe As Date = CDate(DGVStrom.Rows(Zeile).Cells( _
                  1).Value)
                Dim Dauer_TotalMinuten = (CDate(DGVStrom.Rows(Zeile).Cells( _
                1).Value) - Dateneingabe).TotalMinutes
                Dim Gesamtdauer As TimeSpan
                Gesamtdauer = TimeSpan.FromMinutes(Dauer_TotalMinuten)
 
 
                DGVStrom.Rows(Zeile).Cells(6).Value = Gesamtdauer.Days
            End If
        Next Zeile
    End Sub
wer hat eine Idee ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: berechnen im DGV 
Autor: Erichbru
Datum: 01.04.24 11:05

Hallo zusammen,

auch diese Variante bringt nicht das gewünschte Ergebnis

zum Beispiel:

Von einschließlich: Mittwoch, 21. Februar 2024
Bis einschließlich Donnerstag, 21. März 2024
Ergebnis: 30 Tage

30 Tage zwischen den angegebenen Daten, Enddatum eingeschlossen.

Oder 1 Monat, 1 Tag (inklusive Enddatum)

und zum nächsten Datum
Von einschließlich: Donnerstag, 21. März 2024
Bis einschließlich Sonntag, 21. April 2024
Ergebnis: 32 Tage

32 Tage zwischen den angegebenen Daten, Enddatum eingeschlossen.

Oder 1 Monat, 1 Tag (inklusive Enddatum)

die Datümer liegen in einer Spalte DGV bzw. Datatable (Ablesedatum) = Spalte 1

meine Variante 2 funktioniert auch noch nicht?

wer hat da einen Lösungsansatz ? evtl. habe ich da einen Denkfehler

 Private Sub Verbrauch_InnerhalbvonTagen()
        Dim Dauer_TotalMinuten As Double
 
        For Zeile As Integer = 0 To DGVStrom.Rows.Count - 1
            If Zeile = 0 Then
                DGVStrom.Rows(Zeile).Cells(6).Value = 0
                Dateneingabe = CDate(DGVStrom.Rows(Zeile).Cells(1).Value)
            Else
                Dim x As Double = DateDiff(DateInterval.Day, Dateneingabe, _
                  CDate(DGVStrom.Rows(Zeile).Cells(1).Value))
 
                DGVStrom.Rows(Zeile).Cells(6).Value = x.ToString
            End If
        Next Zeile
    End Sub
das Ergebnis damit:
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: berechnen im DGV 
Autor: Kuno60
Datum: 01.04.24 15:08

Du musst immer die Differenz zur vorhergehenden Zeile berechnen. In der Schleife musst du also immer den Wert der vorhergehenden Zeile zwischenspeichern, genauso wie ich es in meinem Beispiel gemacht habe.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: berechnen im DGV 
Autor: Erichbru
Datum: 02.04.24 09:13

Danke für deine Antwort

Sorry, ich check das trotzdem nicht passt so auch nicht

da ist dann die Eingabe 21.02.2023 zum 211.01.2023 (-31)
vom 21.02.2023 zum 21.02.2023 (-58)
usw

Private Sub Verbrauch_InnerhalbderEingabeDaten()
        Dim Eingabe As Date
        Dim x As Double
 
        For Zeile As Integer = 0 To DGVStrom.Rows.Count - 1
            If Zeile = 0 Then
                DGVStrom.Rows(Zeile).Cells(6).Value = 0
                Eingabe = DGVStrom.Rows(Zeile).Cells(1).Value
 
            Else
                x = DateDiff(DateInterval.Day, DGVStrom.Rows(Zeile).Cells( _
                  1).Value, Eingabe)
                DGVStrom.Rows(Zeile).Cells(6).Value = x.ToString
 
 
            End If
 
        Next Zeile
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: berechnen im DGV 
Autor: Erichbru
Datum: 02.04.24 13:28

ich gebe auf bin zu bl....

auch das hier passt wohl nicht ganz bin zu bl...

ich brauche aber start Ende as date oder

 Private Sub Verbrauch_InnerhalbderEingabeDaten()
        Dim interval_days As Integer
        For Zeile As Integer = 0 To DGVStrom.Rows.Count - 2
            'Daten einer Zeilenpaarung in Variablen eintragen
            Dim d1 As Date = DGVStrom.Rows(Zeile).Cells(1).Value
            Dim d2 As Date = DGVStrom.Rows(Zeile + 1).Cells(1).Value
            If Zeile = 0 Then
                DGVStrom.Rows(Zeile).Cells(6).Value = 0
            Else
                'aktuelles Ableseintervall in Tagen
                interval_days = (d2 - d1).TotalDays
                'aktuelles Ableseintervall in Tagen
                DGVStrom.Rows(Zeile).Cells(6).Value = String.Format("{0:00}", _
                  interval_days)
            End If
        Next Zeile
 
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: berechnen im DGV 
Autor: Erichbru
Datum: 02.04.24 13:50

ok jetzt sieht das anders aus

aber ist es auch richtig ?



check mit Tageszähler im Netz sagt passt

hier die 153 Tage zum Beispiel



bist du einverstanden ?

  Private Sub Verbrauch_InnerhalbderEingabeDaten()
        Dim interval_days As Integer
        For Zeile As Integer = 0 To DGVStrom.Rows.Count - 2
            'Daten einer Zeilenpaarung in Variablen eintragen
            Dim d1 As Date = DGVStrom.Rows(Zeile).Cells(1).Value
            Dim d2 As Date = DGVStrom.Rows(Zeile + 1).Cells(1).Value
            'aktuelles Ableseintervall in Tagen
            interval_days = (d2 - d1).TotalDays
            If Zeile = 0 Then
                DGVStrom.Rows(Zeile).Cells(6).Value = 0
                DGVStrom.Rows(Zeile + 1).Cells(6).Value = String.Format( _
                  "{0:00}", interval_days)
            Else
                'aktuelles Ableseintervall in Tagen
                DGVStrom.Rows(Zeile + 1).Cells(6).Value = String.Format( _
                  "{0:00}", interval_days)
            End If
        Next Zeile
 
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel