Hallo
mit
hole ich mir alle Notwendigen Daten aus meiner Access Datenbank
jedoch benötige ich noch das kleinste Datum vom Mietbegin und das größte vom Mietende
einfach Einbauen in die SQL Abfrage funktioniert so ja leider nicht, also eine zweite SQL Abfrage welche die erste aber nicht behindert bzw. stört
gebraucht wird es in folgendem Block
und am Ende zu Übersicht mal der gesammte Sub Bereich
mit
Code:
Try
'SQL Zugriff für alle Fahrzeuge welche noch nicht zurückgegeben sind
Sql = "SELECT BuchungsNr, Fahrzeugnummer, Mietbegin, Mietdauer, Mietende 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)
jedoch benötige ich noch das kleinste Datum vom Mietbegin und das größte vom Mietende
SQL:
Min(Mietbegin) As StartDatum, Max(Mietende) As EndDatum
einfach Einbauen in die SQL Abfrage funktioniert so ja leider nicht, also eine zweite SQL Abfrage welche die erste aber nicht behindert bzw. stört
gebraucht wird es in folgendem Block
Code:
Next
Dim zeitleisteBeginn As Integer = (((DateTime.Today.Year * 10000) + 1) * 100) + 1 ' Beginn der Zeitleiste, erstmal das Jahr laut Heutetag zum 01.01
Dim zeitleisteEnde As Integer = (((DateTime.Today.Year * 10000) + 12) * 100) + 31 ' Ende Zeitleiste, erstmal das Jahr laut Heutetag zum 31.12
und am Ende zu Übersicht mal der gesammte Sub Bereich
Code:
Private Sub pictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs)
If String.IsNullOrEmpty(TextBox1.Text) Then
Dim MietzeitIndex = 1 ' Counter zum durchlaufen der Zeilen
Dim g As Graphics = e.Graphics ' Variable für die PictureBox.
Try
'SQL Zugriff für alle Fahrzeuge welche noch nicht zurückgegeben sind
Sql = "SELECT BuchungsNr, Fahrzeugnummer, Mietbegin, Mietdauer, Mietende 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)
'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
Dim zeitleisteBeginn As Integer = (((DateTime.Today.Year * 10000) + 1) * 100) + 1 ' Beginn der Zeitleiste, erstmal das Jahr laut Heutetag zum 01.01
Dim zeitleisteEnde As Integer = (((DateTime.Today.Year * 10000) + 12) * 100) + 31 ' Ende Zeitleiste, erstmal das Jahr laut Heutetag zum 31.12
' hier eventuell dann per SQL das niedrigste und höchste Mietbeginn/Mietende ermittln anstatt hart auf den 01.01 und 31.12 zu gehen
Dim zeitleisteMaxBereich As Integer = (zeitleisteEnde - zeitleisteBeginn + 1) ' 100% für die Zeitleiste
Me.PictureBox1.Width = 60000
Dim bildBreite As Integer = (PictureBox1.Width) ' die Breite des Zeichnungsbereiches (unsere 100% zum zeichnen)
For Each Row As DataRow In dbdt.Rows
Dim Mietbegin As DateTime = CType(Row.Item("Mietbegin"), DateTime) ' Mietbegin als DateTime
Dim MietbeginNum As Integer = (((Mietbegin.Year * 10000) + Mietbegin.Month) * 100) + Mietbegin.Day ' Mietbegin als Zahl umgerechnet
Dim MietbeginProzent As Decimal = ((MietbeginNum - zeitleisteBeginn) / CDec(zeitleisteMaxBereich)) ' der prozentuale Anteile des Mietbegins in der Zeitleiste
Dim Mietende As Date = CType(Row.Item("Mietende"), DateTime) ' Mietende als DateTime
Dim MietendeNum As Integer = (((Mietende.Year * 10000) + Mietende.Month) * 100) + Mietende.Day ' Mietende als Zahl umgerechnet
Dim MietendeProzent As Decimal = ((MietendeNum - zeitleisteBeginn) / CDec(zeitleisteMaxBereich)) ' der prozentuale Anteile des Mietendes in der Zeitleiste
Dim MietbeginText As String = Mietbegin.Day & "." & Mietbegin.Month
Dim MietendeText As String = Mietende.Day & "." & Mietende.Month
Dim Fahrzeugnummer = Row.Item("Fahrzeugnummer") ' Fahrzeugnummer für die Zeitleiste
Dim Horizontal As Integer = (Fahrzeugnummer * 50)
Dim Buchungsnummer = Row.Item("BuchungsNr") ' dBuchungsnummer für die Zeitleiste
If Date.Compare(Mietende, Today) > 0 Then
Dim leftPos1 As Decimal = (MietbeginProzent * bildBreite)
Dim leftPos2 As Decimal = (MietendeProzent * bildBreite)
g.DrawLine(New Pen(System.Drawing.Color.LightSkyBlue, 30), leftPos1, Horizontal, leftPos2, Horizontal)
g.DrawString(MietbeginText + " - ", fnt2, Brushes.Black, New Point(leftPos1, (Horizontal - 30)))
g.DrawString(MietendeText + " |", fnt2, Brushes.Black, New Point((leftPos2 - 28), (Horizontal - 30)))
g.DrawString("FzgNr: " + Fahrzeugnummer, fnt2, Brushes.Black, New Point(leftPos1, (Horizontal - 13)))
g.DrawString(Buchungsnummer, fnt2, Brushes.Black, New Point(leftPos1, (Horizontal)))
End If
MietzeitIndex += 1 'Zähler für die reihen
Next
Catch ex As Exception
MsgBox(ex.Message)
Finally
conn.Close()
End Try
End If
End Sub