Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature currently requires accessing the site using the built-in Safari browser.
Sorry hatte es ausversehen so reingesetzt.Bitte Quellcode formatiert angeben
(den entsprechenden CODE Tag)
und was genau das problem ist
Bitte Quellcode formatiert angeben
(den entsprechenden CODE Tag)
und was genau das problem ist
Private Sub pictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs)
If String.IsNullOrEmpty(TextBox1.Text) Then ' Bedingung das die Textbox1 keinen Wert bzw keine Eingabe hat
Dim Stringliste As New List(Of String) ' String Liste
Dim Startpunkt As String = "" ' Grafikpunkt Mietbegin
Dim Endpunkt As String = "" ' Grafikpunkt Mietende
Dim Fahrzeugnummer As String = "" ' Fahrzeugnummer
Dim MietzeitIndex = 1 ' Mietbegin Counter zum durchlaufen der Zeilen
Dim horizontal = 20 ' der erste horizontale Abstand für die Zeitleiste
Dim g As Graphics = e.Graphics ' Variable für die PictureBox.
'Daten holen und Verarbeiten
dbdt = New DataTable
Try
Sql = "SELECT BuchungsNr, Kunde, Fahrzeugnummer, Modell, Mietbegin, Year(Mietbegin) AS JahrStart, MONTH(Mietbegin) AS MonatStart, DAY(Mietbegin) AS TagStart, Mietdauer, Mietende, TOTAL FROM tblreservierung where KFZ_ABGEGEBEN='nein' ORDER BY Fahrzeugnummer, Mietbegin"
conn.Open()
With dbcmd
.CommandText = Sql
.Connection = conn
End With
dbda.SelectCommand = dbcmd
dbda.Fill(dbdt)
DataGridView7.DataSource = dbdt
'Zeilen Trennung
Dim x As Integer
For x = 40 To 2000 Step 50
g.DrawLine(New Pen(System.Drawing.Color.Black, 1), PictureBox1.Left, x, PictureBox1.Right, x)
Next
'Umsatz Anzeige
Dim TotalMoto = 0
Dim TotalSales = 0
For Each Row As DataRow In dbdt.Rows
Dim Mietende As Date = CDate(Row.Item("Mietende").ToString)
If Date.Compare(Mietende, Today) > 0 Then
Stringliste.Add(Row.Item("Mietbegin"))
Startpunkt &= vbNewLine & ((Row.Item("JahrStart") * 10000) + (Row.Item("MonatStart") * 100)) + Row.Item("TagStart")
Endpunkt &= vbNewLine & Row.Item("Mietdauer")
Fahrzeugnummer &= vbNewLine & Row.Item("Fahrzeugnummer")
End If
MietzeitIndex += 1
TotalSales += Val(Row.Item("TOTAL")) 'Umsatz Berchnung
Next
If Not Stringliste.Count.Equals(0) Then
MessageBox.Show(Startpunkt)
MessageBox.Show(Endpunkt)
MessageBox.Show(Fahrzeugnummer)
' g.DrawLine(New Pen(System.Drawing.Color.DarkRed, 10), FahrzeugnummerMessage, horizontal, FahrzeugnummerMessage, horizontal) 'Eingabezeichen haben das falsche Format
End If
Label15.Text = TotalSales 'Umsatz Anzeige
Catch ex As Exception
MsgBox(ex.Message)
Finally
conn.Close()
End Try
End If
End Sub
Dim Stringliste As New List(Of String) ' Mietbegin Liste
Dim Decimalliste As List(Of Decimal) = Stringliste.ConvertAll(Function(item) Decimal.Parse(item))
' Dim MietzeitstartMessage As String = "" ' Test Message Mietbegin
'Dim MietdauerendeMessage As String = "" ' Test Message Mietende
' Dim FahrzeugnummerMessage As String = "" ' Test Message Fahrzeugnummer
Dim Startpunkt As Decimal = "" ' Grafikpunkt Mietbegin
Dim Endpunkt As Decimal = "" ' Grafikpunkt Mietende
Dim Fahrzeugnummer As Decimal = "" ' Grafikpunkt Mietende
Ja Mietbegin und Mietende sind in der Access vom Typ DateTime muss auch sein da ich das an anderer Stelle so brauche.Ich würde vermuten das Mietbegin vom Typ DateTime ist, du versuchst es aber nach decimal zu parsen.
Müssteste doch eigentlich wenn dann eher nach DateTime parsen.
Dim beginnDate As DateTime = CType(Row.Item("Mietbegin"), DateTime)
Dim beginnNum As Integer = (((beginn.Year * 10000) + beginn.Month) * 100) + beginn.Day
Dim wert As Decimal = CDec(Row.Item("Mietbegin"))
decimalListe.Add(wert)
If TypeOf Row.Item("Mietbegin") Is Decimal Then
Dim wert As Decimal = CDec(Row.Item("Mietbegin"))
decimalListe.Add(wert)
End If
Nicht ganz verstanden, also den Block schonausgehend das du normal mit dem DateTime Objekt arbeitest, erstellen wir uns selbst eine eigene Zahl
(wie ich weiter vorne in einem Post mal erwähnte)
Visual Basic:Dim beginnDate As DateTime = CType(Row.Item("Mietbegin"), DateTime) Dim beginnNum As Integer = (((beginn.Year * 10000) + beginn.Month) * 100) + beginn.Day
sprich in der Liste hälst du dir die original Objekte, die DateTime Objekte/Daten.
Dim Mietende As Date = CDate(Row.Item("Mietende").ToString)
If Date.Compare(Mietende, Today) > 0 Then
Stringliste.Add(Row.Item("Mietbegin"))
Startpunkt &= vbNewLine & ((Row.Item("JahrStart") * 10000) + (Row.Item("MonatStart") * 100)) + Row.Item("TagStart")
Endpunkt &= vbNewLine & Row.Item("Mietdauer")
Fahrzeugnummer &= vbNewLine & Row.Item("Fahrzeugnummer")
End If
Startpunkt &= vbNewLine & ((Row.Item("JahrStart") * 10000) + (Row.Item("MonatStart") * 100)) + Row.Item("TagStart")
Endpunkt &= vbNewLine & Row.Item("Mietdauer")
Fahrzeugnummer &= vbNewLine & Row.Item("Fahrzeugnummer")
Dim beginnDate As DateTime = CType(Row.Item("Mietbegin"), DateTime)
Dim beginnNum As Integer = (((beginn.Year * 10000) + beginn.Month) * 100) + beginn.Day
Private Sub pictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs)
If String.IsNullOrEmpty(TextBox1.Text) Then ' Bedingung das die Textbox1 keinen Wert bzw keine Eingabe hat
Dim Mietendeliste As New List(Of String) ' String Liste Mietende
Dim Startpunkt As String = "" ' Grafikpunkt Mietbegin
Dim Endpunkt As String = "" ' Grafikpunkt Mietende
Dim Fahrzeugnummer As String = "" ' Fahrzeugnummer
Dim MietzeitIndex = 1 ' Counter zum durchlaufen der Zeilen
Dim horizontal = 20 ' der erste horizontale Abstand für die Zeitleiste
Dim g As Graphics = e.Graphics ' Variable für die PictureBox.
'Daten holen und Verarbeiten
dbdt = New DataTable
Try
'SQL Zugriff für alle Fahrzeuge welche noch nicht zurückgegeben sind
Sql = "SELECT BuchungsNr, Kunde, Fahrzeugnummer, Modell, Mietbegin, Year(Mietbegin) AS JahrStart, MONTH(Mietbegin) AS MonatStart, DAY(Mietbegin) AS TagStart, Mietdauer, Mietende, TOTAL FROM tblreservierung where KFZ_ABGEGEBEN='nein' ORDER BY Fahrzeugnummer, Mietbegin"
conn.Open()
With dbcmd
.CommandText = Sql
.Connection = conn
End With
dbda.SelectCommand = dbcmd
dbda.Fill(dbdt)
DataGridView7.DataSource = dbdt
'Zeilen Trennung Linien
Dim x As Integer 'definiert x als Integer Zahl
For x = 40 To 2000 Step 50 'setzt x auf Anfang 40 und erhöht jeweils um 50 bis 2000 erreicht
g.DrawLine(New Pen(System.Drawing.Color.Black, 1), PictureBox1.Left, x, PictureBox1.Right, x) ' zeichnet die Linien in die PictureBox
Next
'Umsatz Anzeige
Dim TotalMoto = 0
Dim TotalSales = 0
For Each Row As DataRow In dbdt.Rows
Dim Mietende As Date = CDate(Row.Item("Mietende").ToString) 'stellt das Mietende als String bereit
If Date.Compare(Mietende, Today) > 0 Then
Mietendeliste.Add(Row.Item("Mietende")) 'fügt die Zeilen der Tabellen Spalte Mietende zur Stringliste
'Daten für MessageBox
Startpunkt &= vbNewLine & ((Row.Item("JahrStart") * 10000) + (Row.Item("MonatStart") * 100)) + Row.Item("TagStart")
Endpunkt &= vbNewLine & Row.Item("Mietdauer")
Fahrzeugnummer &= vbNewLine & Row.Item("Fahrzeugnummer")
End If
MietzeitIndex += 1 'Zähler für die reihen
TotalSales += Val(Row.Item("TOTAL")) 'Umsatz Berchnung
Next
If Not Mietendeliste.Count.Equals(0) Then 'prüft ob Daten in der Stringliste vorhanden oder nicht
MessageBox.Show(Startpunkt)
MessageBox.Show(Endpunkt)
MessageBox.Show(Fahrzeugnummer)
' MessageBox.Show(beginnNum)
' g.DrawLine(New Pen(System.Drawing.Color.DarkRed, 10), Endpunkt, horizontal, Fahrzeugnummer, horizontal) 'Eingabezeichen haben das falsche Format
End If
Label15.Text = TotalSales 'Umsatz Anzeige
Catch ex As Exception
MsgBox(ex.Message)
Finally
conn.Close()
End Try
End If
End Sub
Dim beginnDate As DateTime = CType(Row.Item("Mietbegin"), DateTime)
Dim beginnNum As Integer = (((beginn.Year * 10000) + beginn.Month) * 100) + beginn.Day
Dim beginnDate As DateTime = CType(Row.Item("Mietbegin"), DateTime)
Dim beginnNum As Integer = (((beginnDate.Year * 10000) + beginnDate.Month) * 100) + beginnDate.Day
Dim startNummer As Decimal = Decimal.Parse(StartPunkt)
Hatte ich irgendwann auch schon mal versucht erhalte dann aber falsches Eingabeformataber wenn wir jetzt mal von deinem StartPunkt ausgehen, den du als String hälst und der ja vom Aufbau so sein müsst 20210612
könntest du hier das decimal Parse anwenden
und dann mit startNummer weiter arbeitenCode:Dim startNummer As Decimal = Decimal.Parse(StartPunkt)
Weil alles und jeder einen in diese Richtung gesendet hat, dann lass uns doch nicht mit dem Parse weitermachen weil es halt mal schon so ist, sondern einfach wie den richtig verarbeiten.Und Problem ist das du alles mit string versuchst zu händeln, dabei bekommst du eigentlich aus der SQL auch schon die richtigen Datentypen
hier habe ich das Problem das ich alles im if Date.Compare Block verarbeiten muss auch das drawlineDim beginnDate As DateTime = CType(Row.Item("Mietbegin"), DateTime)
Dim beginnNum As Integer = (((beginnDate.Year * 10000) + beginnDate.Month) * 100) + beginnDate.Day
For Each Row As DataRow In dbdt.Rows
Dim Mietende As Date = CDate(Row.Item("Mietende").ToString) 'stellt das Mietende als String bereit
Dim beginnDate As DateTime = CType(Row.Item("Mietbegin"), DateTime)
Dim beginnNum As Decimal = (((beginnDate.Year * 10000) + beginnDate.Month) * 100) + beginnDate.Day
If Date.Compare(Mietende, Today) > 0 Then
Mietendeliste.Add(Row.Item("Mietende")) 'fügt die Zeilen der Tabellen Spalte Mietende zur Stringliste
'Daten für MessageBox
'Startpunkt &= vbNewLine & ((Row.Item("JahrStart") * 10000) + (Row.Item("MonatStart") * 100)) + Row.Item("TagStart")
Endpunkt &= vbNewLine & Row.Item("Mietdauer")
Fahrzeugnummer &= vbNewLine & Row.Item("Fahrzeugnummer")
g.DrawLine(New Pen(System.Drawing.Color.DarkRed, 10), 200, horizontal, 250, horizontal) 'Eingabezeichen haben das falsche Format