| |
VB.NET - Ein- und Umsteigerberechnen 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 | |
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. | |
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 | |
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 | |
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 | |
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 ? | |
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:
| |
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. | |
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 | |
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 | |
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 | |
| 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 |
|
|
sevOutBar 4.0
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere InfosTipp des Monats September 2024 Dieter OtterÜbergabeparameter: String oder Array?Mit der IsArray-Funktion lässt sich prüfen, ob es sich bei einem Übergabeparameter an eine Prozedur um ein Array oder einer "einfachen" Variable handelt. TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|
|
|
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
|
|