diff --git a/Diverses/1374582037_41973.ico b/Diverses/1374582037_41973.ico new file mode 100644 index 0000000..e3398fb Binary files /dev/null and b/Diverses/1374582037_41973.ico differ diff --git a/Diverses/1374582040_38117.ico b/Diverses/1374582040_38117.ico new file mode 100644 index 0000000..602353c Binary files /dev/null and b/Diverses/1374582040_38117.ico differ diff --git a/Diverses/1374582044_95059.ico b/Diverses/1374582044_95059.ico new file mode 100644 index 0000000..4a9adc7 Binary files /dev/null and b/Diverses/1374582044_95059.ico differ diff --git a/Diverses/1374582119_88249.ico b/Diverses/1374582119_88249.ico new file mode 100644 index 0000000..bc2e69b Binary files /dev/null and b/Diverses/1374582119_88249.ico differ diff --git a/Diverses/Logo_Waberer.jpg b/Diverses/Logo_Waberer.jpg new file mode 100644 index 0000000..0901eec Binary files /dev/null and b/Diverses/Logo_Waberer.jpg differ diff --git a/Diverses/Logo_Waberer2.jpg b/Diverses/Logo_Waberer2.jpg new file mode 100644 index 0000000..93a8e2a Binary files /dev/null and b/Diverses/Logo_Waberer2.jpg differ diff --git a/Diverses/Waberers LKW Liste Parkplatz für Datenerfassung1.xlsx b/Diverses/Waberers LKW Liste Parkplatz für Datenerfassung1.xlsx new file mode 100644 index 0000000..3490734 Binary files /dev/null and b/Diverses/Waberers LKW Liste Parkplatz für Datenerfassung1.xlsx differ diff --git a/Diverses/parkzeit.ico b/Diverses/parkzeit.ico new file mode 100644 index 0000000..03fae60 Binary files /dev/null and b/Diverses/parkzeit.ico differ diff --git a/Parkzeit.accdb b/Parkzeit.accdb new file mode 100644 index 0000000..967d01d Binary files /dev/null and b/Parkzeit.accdb differ diff --git a/Parkzeit.sln b/Parkzeit.sln new file mode 100644 index 0000000..835b45d --- /dev/null +++ b/Parkzeit.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Parkzeit", "Parkzeit\Parkzeit.vbproj", "{E4190547-B222-4AE3-A0BE-A44EAEE70335}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x86 = Debug|x86 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E4190547-B222-4AE3-A0BE-A44EAEE70335}.Debug|x86.ActiveCfg = Debug|x86 + {E4190547-B222-4AE3-A0BE-A44EAEE70335}.Debug|x86.Build.0 = Debug|x86 + {E4190547-B222-4AE3-A0BE-A44EAEE70335}.Release|x86.ActiveCfg = Release|x86 + {E4190547-B222-4AE3-A0BE-A44EAEE70335}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Parkzeit/App.config b/Parkzeit/App.config new file mode 100644 index 0000000..9b1ee58 --- /dev/null +++ b/Parkzeit/App.config @@ -0,0 +1,27 @@ + + + + +
+ + + + + + + + + 200, 200 + + + 800, 500 + + + + + + + + + + diff --git a/Parkzeit/ApplicationEvents.vb b/Parkzeit/ApplicationEvents.vb new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/Parkzeit/ApplicationEvents.vb @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Parkzeit/ManagementObjectSearcher.vb b/Parkzeit/ManagementObjectSearcher.vb new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/Parkzeit/ManagementObjectSearcher.vb @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Parkzeit/My Project/Application.Designer.vb b/Parkzeit/My Project/Application.Designer.vb new file mode 100644 index 0000000..7a066bb --- /dev/null +++ b/Parkzeit/My Project/Application.Designer.vb @@ -0,0 +1,38 @@ +'------------------------------------------------------------------------------ +' +' Dieser Code wurde von einem Tool generiert. +' Laufzeitversion:4.0.30319.34014 +' +' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +' der Code erneut generiert wird. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + 'HINWEIS: Diese Datei wird automatisch generiert. Ändern Sie sie nicht direkt. Zum Ändern + ' oder bei in dieser Datei auftretenden Buildfehlern wechseln Sie zum Projekt-Designer. + ' (Wechseln Sie dazu zu den Projekteigenschaften, oder doppelklicken Sie auf den Knoten "Mein Projekt" im + ' Projektmappen-Explorer). Nehmen Sie auf der Registerkarte "Anwendung" entsprechende Änderungen vor. + ' + Partial Friend Class MyApplication + + _ + Public Sub New() + MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows) + Me.IsSingleInstance = false + Me.EnableVisualStyles = true + Me.SaveMySettingsOnExit = true + Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses + End Sub + + _ + Protected Overrides Sub OnCreateMainForm() + Me.MainForm = Global.Parkzeit.frmMain + End Sub + End Class +End Namespace diff --git a/Parkzeit/My Project/Application.myapp b/Parkzeit/My Project/Application.myapp new file mode 100644 index 0000000..739ea6f --- /dev/null +++ b/Parkzeit/My Project/Application.myapp @@ -0,0 +1,10 @@ + + + true + frmMain + false + 0 + true + 0 + true + \ No newline at end of file diff --git a/Parkzeit/My Project/AssemblyInfo.vb b/Parkzeit/My Project/AssemblyInfo.vb new file mode 100644 index 0000000..3b992b9 --- /dev/null +++ b/Parkzeit/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' Allgemeine Informationen über eine Assembly werden über die folgenden +' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +' die mit einer Assembly verknüpft sind. + +' Die Werte der Assemblyattribute überprüfen + + + + + + + + + + +'Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird + + +' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +' +' Hauptversion +' Nebenversion +' Buildnummer +' Revision +' +' Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern +' übernehmen, indem Sie "*" eingeben: +' + + + diff --git a/Parkzeit/My Project/Resources.Designer.vb b/Parkzeit/My Project/Resources.Designer.vb new file mode 100644 index 0000000..5e89ecb --- /dev/null +++ b/Parkzeit/My Project/Resources.Designer.vb @@ -0,0 +1,134 @@ +'------------------------------------------------------------------------------ +' +' Dieser Code wurde von einem Tool generiert. +' Laufzeitversion:4.0.30319.34014 +' +' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +' der Code erneut generiert wird. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + +Imports System + +Namespace My.Resources + + 'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert + '-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. + 'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen + 'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + ''' + ''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + ''' + _ + Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager + Get + If Object.ReferenceEquals(resourceMan, Nothing) Then + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("Parkzeit.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + ''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set + resourceCulture = value + End Set + End Property + + ''' + ''' Sucht eine lokalisierte Zeichenfolge, die Data Source=DEVELOPER\DEVSQL;Initial Catalog=Parkzeit;Integrated Security=false;User ID=sa;Password=BmWr501956; ähnelt. + ''' + Friend ReadOnly Property connectionString_DEV() As String + Get + Return ResourceManager.GetString("connectionString_DEV", resourceCulture) + End Get + End Property + + ''' + ''' Sucht eine lokalisierte Zeichenfolge, die Data Source=BUCHHALTUNG\SQLEXPRESS;Initial Catalog=Parkzeit;Integrated Security=false;User ID=sa;Password=BmWr501956; ähnelt. + ''' + Friend ReadOnly Property connectionString_PROD() As String + Get + Return ResourceManager.GetString("connectionString_PROD", resourceCulture) + End Get + End Property + + ''' + ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + ''' + Friend ReadOnly Property Logo_Waberer() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("Logo_Waberer", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + + ''' + ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Icon ähnlich wie (Symbol). + ''' + Friend ReadOnly Property Parkschild() As System.Drawing.Icon + Get + Dim obj As Object = ResourceManager.GetObject("Parkschild", resourceCulture) + Return CType(obj,System.Drawing.Icon) + End Get + End Property + + ''' + ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Icon ähnlich wie (Symbol). + ''' + Friend ReadOnly Property parkzeit() As System.Drawing.Icon + Get + Dim obj As Object = ResourceManager.GetObject("parkzeit", resourceCulture) + Return CType(obj,System.Drawing.Icon) + End Get + End Property + + ''' + ''' Sucht eine lokalisierte Zeichenfolge, die Version 1.2.1 19.03.2015 (Luxbauer Andreas) + '''- Umstellung auf SQLConnection + ''' + '''Version 1.2.0 11.12.2014 (Luxbauer Andreas) + '''- Anbindung SQL Server + '''- Bugfix Programmstart + ''' + '''Version 1.1.0 19.10.2013 + '''NEU: Trennung der Abrechnung nach LKW-Kennzeichen + '''-Ungarn (die ersten drei Stellen sind Buchstaben) + '''-Rumänien (die erste oder zweite Stelle ist ein Buchstabe) + '''-Sonstige (die ersten beiden Stellen sind Ziffern) + '''KORREKTUR: Spaltengröße bei Gesamtsumme erweitert (ansonsten erfolgte Zeilenumbruch) + ''' + '''Version [Rest der Zeichenfolge wurde abgeschnitten]"; ähnelt. + ''' + Friend ReadOnly Property Versionsinfo() As String + Get + Return ResourceManager.GetString("Versionsinfo", resourceCulture) + End Get + End Property + End Module +End Namespace diff --git a/Parkzeit/My Project/Resources.resx b/Parkzeit/My Project/Resources.resx new file mode 100644 index 0000000..06708d7 --- /dev/null +++ b/Parkzeit/My Project/Resources.resx @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\Parkschild.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Logo_Waberer.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Versionsinfo.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + + Data Source=DEVELOPER\DEVSQL;Initial Catalog=Parkzeit;Integrated Security=false;User ID=sa;Password=BmWr501956; + + + Data Source=BUCHHALTUNG\SQLEXPRESS;Initial Catalog=Parkzeit;Integrated Security=false;User ID=sa;Password=BmWr501956; + + + ..\Resources\parkzeit.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/Parkzeit/My Project/Settings.Designer.vb b/Parkzeit/My Project/Settings.Designer.vb new file mode 100644 index 0000000..efaa5e9 --- /dev/null +++ b/Parkzeit/My Project/Settings.Designer.vb @@ -0,0 +1,97 @@ +'------------------------------------------------------------------------------ +' +' Dieser Code wurde von einem Tool generiert. +' Laufzeitversion:4.0.30319.34014 +' +' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +' der Code erneut generiert wird. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + _ + Partial Friend NotInheritable Class MySettings + Inherits Global.System.Configuration.ApplicationSettingsBase + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) + +#Region "Funktion zum automatischen Speichern von My.Settings" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + Private Shared addedHandlerLockObject As New Object + + _ + Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub +#End If +#End Region + + Public Shared ReadOnly Property [Default]() As MySettings + Get + +#If _MyType = "WindowsForms" Then + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If +#End If + Return defaultInstance + End Get + End Property + + _ + Public Property frmMainPosition() As Global.System.Drawing.Point + Get + Return CType(Me("frmMainPosition"),Global.System.Drawing.Point) + End Get + Set + Me("frmMainPosition") = value + End Set + End Property + + _ + Public Property frmMainSize() As Global.System.Drawing.Size + Get + Return CType(Me("frmMainSize"),Global.System.Drawing.Size) + End Get + Set + Me("frmMainSize") = value + End Set + End Property + End Class +End Namespace + +Namespace My + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.Parkzeit.My.MySettings + Get + Return Global.Parkzeit.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/Parkzeit/My Project/Settings.settings b/Parkzeit/My Project/Settings.settings new file mode 100644 index 0000000..ecc64ce --- /dev/null +++ b/Parkzeit/My Project/Settings.settings @@ -0,0 +1,12 @@ + + + + + + 200, 200 + + + 800, 500 + + + \ No newline at end of file diff --git a/Parkzeit/My Project/app.manifest b/Parkzeit/My Project/app.manifest new file mode 100644 index 0000000..1dcd8c6 --- /dev/null +++ b/Parkzeit/My Project/app.manifest @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Parkzeit/Parkzeit.vbproj b/Parkzeit/Parkzeit.vbproj new file mode 100644 index 0000000..2039f96 --- /dev/null +++ b/Parkzeit/Parkzeit.vbproj @@ -0,0 +1,260 @@ + + + + Debug + x86 + + + 2.0 + {E4190547-B222-4AE3-A0BE-A44EAEE70335} + WinExe + Parkzeit.My.MyApplication + Parkzeit + Parkzeit + 512 + WindowsForms + v4.0 + + + false + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + true + + + AnyCPU + true + full + true + true + bin\Debug\ + Parkzeit.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + x86 + pdbonly + false + true + true + bin\Release\ + Parkzeit.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + On + + + Binary + + + On + + + On + + + parkzeit.ico + + + My Project\app.manifest + + + false + + + + False + bin\Debug\Microsoft.ReportViewer.Common.dll + + + False + bin\Debug\Microsoft.ReportViewer.WinForms.dll + + + + False + True + + + + + + + + + False + True + + + + + + + + + + + + + + + + + + + + + + + + + frmAuswahl_Abrechnung.vb + + + Form + + + frmDruckansicht.vb + + + Form + + + frmEintragParkzeit.vb + + + Form + + + frmInfo.vb + + + Form + + + Form + + + frmMain.vb + Form + + + + + True + Application.myapp + + + True + True + Resources.resx + + + True + Settings.settings + True + + + True + True + ParkzeitDataSet.xsd + + + + + + frmAuswahl_Abrechnung.vb + + + frmDruckansicht.vb + + + frmEintragParkzeit.vb + + + frmInfo.vb + + + frmMain.vb + + + VbMyResourcesResXFileCodeGenerator + My.Resources + Designer + Resources.Designer.vb + + + + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + + + + ParkzeitDataSet.xsd + + + MSDataSetGenerator + ParkzeitDataSet.Designer.vb + Designer + + + ParkzeitDataSet.xsd + + + + + + False + Microsoft .NET Framework 4 Client Profile %28x86 und x64%29 + true + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + false + + + False + Windows Installer 3.1 + true + + + + + \ No newline at end of file diff --git a/Parkzeit/ParkzeitDataSet.Designer.vb b/Parkzeit/ParkzeitDataSet.Designer.vb new file mode 100644 index 0000000..00e15e7 --- /dev/null +++ b/Parkzeit/ParkzeitDataSet.Designer.vb @@ -0,0 +1,1761 @@ +'------------------------------------------------------------------------------ +' +' Dieser Code wurde von einem Tool generiert. +' Laufzeitversion:4.0.30319.34014 +' +' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +' der Code erneut generiert wird. +' +'------------------------------------------------------------------------------ + +Option Strict Off +Option Explicit On + + + +''' +'''Represents a strongly typed in-memory cache of data. +''' + _ +Partial Public Class ParkzeitDataSet + Inherits Global.System.Data.DataSet + + Private tableParkzeiten As ParkzeitenDataTable + + Private _schemaSerializationMode As Global.System.Data.SchemaSerializationMode = Global.System.Data.SchemaSerializationMode.IncludeSchema + + _ + Public Sub New() + MyBase.New + Me.BeginInit + Me.InitClass + Dim schemaChangedHandler As Global.System.ComponentModel.CollectionChangeEventHandler = AddressOf Me.SchemaChanged + AddHandler MyBase.Tables.CollectionChanged, schemaChangedHandler + AddHandler MyBase.Relations.CollectionChanged, schemaChangedHandler + Me.EndInit + End Sub + + _ + Protected Sub New(ByVal info As Global.System.Runtime.Serialization.SerializationInfo, ByVal context As Global.System.Runtime.Serialization.StreamingContext) + MyBase.New(info, context, false) + If (Me.IsBinarySerialized(info, context) = true) Then + Me.InitVars(false) + Dim schemaChangedHandler1 As Global.System.ComponentModel.CollectionChangeEventHandler = AddressOf Me.SchemaChanged + AddHandler Me.Tables.CollectionChanged, schemaChangedHandler1 + AddHandler Me.Relations.CollectionChanged, schemaChangedHandler1 + Return + End If + Dim strSchema As String = CType(info.GetValue("XmlSchema", GetType(String)),String) + If (Me.DetermineSchemaSerializationMode(info, context) = Global.System.Data.SchemaSerializationMode.IncludeSchema) Then + Dim ds As Global.System.Data.DataSet = New Global.System.Data.DataSet() + ds.ReadXmlSchema(New Global.System.Xml.XmlTextReader(New Global.System.IO.StringReader(strSchema))) + If (Not (ds.Tables("Parkzeiten")) Is Nothing) Then + MyBase.Tables.Add(New ParkzeitenDataTable(ds.Tables("Parkzeiten"))) + End If + Me.DataSetName = ds.DataSetName + Me.Prefix = ds.Prefix + Me.Namespace = ds.Namespace + Me.Locale = ds.Locale + Me.CaseSensitive = ds.CaseSensitive + Me.EnforceConstraints = ds.EnforceConstraints + Me.Merge(ds, false, Global.System.Data.MissingSchemaAction.Add) + Me.InitVars + Else + Me.ReadXmlSchema(New Global.System.Xml.XmlTextReader(New Global.System.IO.StringReader(strSchema))) + End If + Me.GetSerializationData(info, context) + Dim schemaChangedHandler As Global.System.ComponentModel.CollectionChangeEventHandler = AddressOf Me.SchemaChanged + AddHandler MyBase.Tables.CollectionChanged, schemaChangedHandler + AddHandler Me.Relations.CollectionChanged, schemaChangedHandler + End Sub + + _ + Public ReadOnly Property Parkzeiten() As ParkzeitenDataTable + Get + Return Me.tableParkzeiten + End Get + End Property + + _ + Public Overrides Property SchemaSerializationMode() As Global.System.Data.SchemaSerializationMode + Get + Return Me._schemaSerializationMode + End Get + Set + Me._schemaSerializationMode = value + End Set + End Property + + _ + Public Shadows ReadOnly Property Tables() As Global.System.Data.DataTableCollection + Get + Return MyBase.Tables + End Get + End Property + + _ + Public Shadows ReadOnly Property Relations() As Global.System.Data.DataRelationCollection + Get + Return MyBase.Relations + End Get + End Property + + _ + Protected Overrides Sub InitializeDerivedDataSet() + Me.BeginInit + Me.InitClass + Me.EndInit + End Sub + + _ + Public Overrides Function Clone() As Global.System.Data.DataSet + Dim cln As ParkzeitDataSet = CType(MyBase.Clone,ParkzeitDataSet) + cln.InitVars + cln.SchemaSerializationMode = Me.SchemaSerializationMode + Return cln + End Function + + _ + Protected Overrides Function ShouldSerializeTables() As Boolean + Return false + End Function + + _ + Protected Overrides Function ShouldSerializeRelations() As Boolean + Return false + End Function + + _ + Protected Overrides Sub ReadXmlSerializable(ByVal reader As Global.System.Xml.XmlReader) + If (Me.DetermineSchemaSerializationMode(reader) = Global.System.Data.SchemaSerializationMode.IncludeSchema) Then + Me.Reset + Dim ds As Global.System.Data.DataSet = New Global.System.Data.DataSet() + ds.ReadXml(reader) + If (Not (ds.Tables("Parkzeiten")) Is Nothing) Then + MyBase.Tables.Add(New ParkzeitenDataTable(ds.Tables("Parkzeiten"))) + End If + Me.DataSetName = ds.DataSetName + Me.Prefix = ds.Prefix + Me.Namespace = ds.Namespace + Me.Locale = ds.Locale + Me.CaseSensitive = ds.CaseSensitive + Me.EnforceConstraints = ds.EnforceConstraints + Me.Merge(ds, false, Global.System.Data.MissingSchemaAction.Add) + Me.InitVars + Else + Me.ReadXml(reader) + Me.InitVars + End If + End Sub + + _ + Protected Overrides Function GetSchemaSerializable() As Global.System.Xml.Schema.XmlSchema + Dim stream As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() + Me.WriteXmlSchema(New Global.System.Xml.XmlTextWriter(stream, Nothing)) + stream.Position = 0 + Return Global.System.Xml.Schema.XmlSchema.Read(New Global.System.Xml.XmlTextReader(stream), Nothing) + End Function + + _ + Friend Overloads Sub InitVars() + Me.InitVars(true) + End Sub + + _ + Friend Overloads Sub InitVars(ByVal initTable As Boolean) + Me.tableParkzeiten = CType(MyBase.Tables("Parkzeiten"),ParkzeitenDataTable) + If (initTable = true) Then + If (Not (Me.tableParkzeiten) Is Nothing) Then + Me.tableParkzeiten.InitVars + End If + End If + End Sub + + _ + Private Sub InitClass() + Me.DataSetName = "ParkzeitDataSet" + Me.Prefix = "" + Me.Namespace = "http://tempuri.org/ParkzeitDataSet.xsd" + Me.EnforceConstraints = true + Me.SchemaSerializationMode = Global.System.Data.SchemaSerializationMode.IncludeSchema + Me.tableParkzeiten = New ParkzeitenDataTable() + MyBase.Tables.Add(Me.tableParkzeiten) + End Sub + + _ + Private Function ShouldSerializeParkzeiten() As Boolean + Return false + End Function + + _ + Private Sub SchemaChanged(ByVal sender As Object, ByVal e As Global.System.ComponentModel.CollectionChangeEventArgs) + If (e.Action = Global.System.ComponentModel.CollectionChangeAction.Remove) Then + Me.InitVars + End If + End Sub + + _ + Public Shared Function GetTypedDataSetSchema(ByVal xs As Global.System.Xml.Schema.XmlSchemaSet) As Global.System.Xml.Schema.XmlSchemaComplexType + Dim ds As ParkzeitDataSet = New ParkzeitDataSet() + Dim type As Global.System.Xml.Schema.XmlSchemaComplexType = New Global.System.Xml.Schema.XmlSchemaComplexType() + Dim sequence As Global.System.Xml.Schema.XmlSchemaSequence = New Global.System.Xml.Schema.XmlSchemaSequence() + Dim any As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() + any.Namespace = ds.Namespace + sequence.Items.Add(any) + type.Particle = sequence + Dim dsSchema As Global.System.Xml.Schema.XmlSchema = ds.GetSchemaSerializable + If xs.Contains(dsSchema.TargetNamespace) Then + Dim s1 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() + Dim s2 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() + Try + Dim schema As Global.System.Xml.Schema.XmlSchema = Nothing + dsSchema.Write(s1) + Dim schemas As Global.System.Collections.IEnumerator = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator + Do While schemas.MoveNext + schema = CType(schemas.Current,Global.System.Xml.Schema.XmlSchema) + s2.SetLength(0) + schema.Write(s2) + If (s1.Length = s2.Length) Then + s1.Position = 0 + s2.Position = 0 + + Do While ((s1.Position <> s1.Length) _ + AndAlso (s1.ReadByte = s2.ReadByte)) + + + Loop + If (s1.Position = s1.Length) Then + Return type + End If + End If + + Loop + Finally + If (Not (s1) Is Nothing) Then + s1.Close + End If + If (Not (s2) Is Nothing) Then + s2.Close + End If + End Try + End If + xs.Add(dsSchema) + Return type + End Function + + _ + Public Delegate Sub ParkzeitenRowChangeEventHandler(ByVal sender As Object, ByVal e As ParkzeitenRowChangeEvent) + + ''' + '''Represents the strongly named DataTable class. + ''' + _ + Partial Public Class ParkzeitenDataTable + Inherits Global.System.Data.TypedTableBase(Of ParkzeitenRow) + + Private columnParkzeitID As Global.System.Data.DataColumn + + Private columnLaufende_Nr As Global.System.Data.DataColumn + + Private columnVon As Global.System.Data.DataColumn + + Private columnBis As Global.System.Data.DataColumn + + Private columnDauer As Global.System.Data.DataColumn + + Private columnDauer_Minuten As Global.System.Data.DataColumn + + Private columnKennzeichen As Global.System.Data.DataColumn + + _ + Public Sub New() + MyBase.New + Me.TableName = "Parkzeiten" + Me.BeginInit + Me.InitClass + Me.EndInit + End Sub + + _ + Friend Sub New(ByVal table As Global.System.Data.DataTable) + MyBase.New + Me.TableName = table.TableName + If (table.CaseSensitive <> table.DataSet.CaseSensitive) Then + Me.CaseSensitive = table.CaseSensitive + End If + If (table.Locale.ToString <> table.DataSet.Locale.ToString) Then + Me.Locale = table.Locale + End If + If (table.Namespace <> table.DataSet.Namespace) Then + Me.Namespace = table.Namespace + End If + Me.Prefix = table.Prefix + Me.MinimumCapacity = table.MinimumCapacity + End Sub + + _ + Protected Sub New(ByVal info As Global.System.Runtime.Serialization.SerializationInfo, ByVal context As Global.System.Runtime.Serialization.StreamingContext) + MyBase.New(info, context) + Me.InitVars + End Sub + + _ + Public ReadOnly Property ParkzeitIDColumn() As Global.System.Data.DataColumn + Get + Return Me.columnParkzeitID + End Get + End Property + + _ + Public ReadOnly Property Laufende_NrColumn() As Global.System.Data.DataColumn + Get + Return Me.columnLaufende_Nr + End Get + End Property + + _ + Public ReadOnly Property VonColumn() As Global.System.Data.DataColumn + Get + Return Me.columnVon + End Get + End Property + + _ + Public ReadOnly Property BisColumn() As Global.System.Data.DataColumn + Get + Return Me.columnBis + End Get + End Property + + _ + Public ReadOnly Property DauerColumn() As Global.System.Data.DataColumn + Get + Return Me.columnDauer + End Get + End Property + + _ + Public ReadOnly Property Dauer_MinutenColumn() As Global.System.Data.DataColumn + Get + Return Me.columnDauer_Minuten + End Get + End Property + + _ + Public ReadOnly Property KennzeichenColumn() As Global.System.Data.DataColumn + Get + Return Me.columnKennzeichen + End Get + End Property + + _ + Public ReadOnly Property Count() As Integer + Get + Return Me.Rows.Count + End Get + End Property + + _ + Public Default ReadOnly Property Item(ByVal index As Integer) As ParkzeitenRow + Get + Return CType(Me.Rows(index),ParkzeitenRow) + End Get + End Property + + _ + Public Event ParkzeitenRowChanging As ParkzeitenRowChangeEventHandler + + _ + Public Event ParkzeitenRowChanged As ParkzeitenRowChangeEventHandler + + _ + Public Event ParkzeitenRowDeleting As ParkzeitenRowChangeEventHandler + + _ + Public Event ParkzeitenRowDeleted As ParkzeitenRowChangeEventHandler + + _ + Public Overloads Sub AddParkzeitenRow(ByVal row As ParkzeitenRow) + Me.Rows.Add(row) + End Sub + + _ + Public Overloads Function AddParkzeitenRow(ByVal Laufende_Nr As Integer, ByVal Von As Date, ByVal Bis As Date, ByVal Dauer As String, ByVal Dauer_Minuten As Integer, ByVal Kennzeichen As String) As ParkzeitenRow + Dim rowParkzeitenRow As ParkzeitenRow = CType(Me.NewRow,ParkzeitenRow) + Dim columnValuesArray() As Object = New Object() {Nothing, Laufende_Nr, Von, Bis, Dauer, Dauer_Minuten, Kennzeichen} + rowParkzeitenRow.ItemArray = columnValuesArray + Me.Rows.Add(rowParkzeitenRow) + Return rowParkzeitenRow + End Function + + _ + Public Function FindByParkzeitID(ByVal ParkzeitID As Integer) As ParkzeitenRow + Return CType(Me.Rows.Find(New Object() {ParkzeitID}),ParkzeitenRow) + End Function + + _ + Public Overrides Function Clone() As Global.System.Data.DataTable + Dim cln As ParkzeitenDataTable = CType(MyBase.Clone,ParkzeitenDataTable) + cln.InitVars + Return cln + End Function + + _ + Protected Overrides Function CreateInstance() As Global.System.Data.DataTable + Return New ParkzeitenDataTable() + End Function + + _ + Friend Sub InitVars() + Me.columnParkzeitID = MyBase.Columns("ParkzeitID") + Me.columnLaufende_Nr = MyBase.Columns("Laufende_Nr") + Me.columnVon = MyBase.Columns("Von") + Me.columnBis = MyBase.Columns("Bis") + Me.columnDauer = MyBase.Columns("Dauer") + Me.columnDauer_Minuten = MyBase.Columns("Dauer_Minuten") + Me.columnKennzeichen = MyBase.Columns("Kennzeichen") + End Sub + + _ + Private Sub InitClass() + Me.columnParkzeitID = New Global.System.Data.DataColumn("ParkzeitID", GetType(Integer), Nothing, Global.System.Data.MappingType.Element) + MyBase.Columns.Add(Me.columnParkzeitID) + Me.columnLaufende_Nr = New Global.System.Data.DataColumn("Laufende_Nr", GetType(Integer), Nothing, Global.System.Data.MappingType.Element) + MyBase.Columns.Add(Me.columnLaufende_Nr) + Me.columnVon = New Global.System.Data.DataColumn("Von", GetType(Date), Nothing, Global.System.Data.MappingType.Element) + MyBase.Columns.Add(Me.columnVon) + Me.columnBis = New Global.System.Data.DataColumn("Bis", GetType(Date), Nothing, Global.System.Data.MappingType.Element) + MyBase.Columns.Add(Me.columnBis) + Me.columnDauer = New Global.System.Data.DataColumn("Dauer", GetType(String), Nothing, Global.System.Data.MappingType.Element) + MyBase.Columns.Add(Me.columnDauer) + Me.columnDauer_Minuten = New Global.System.Data.DataColumn("Dauer_Minuten", GetType(Integer), Nothing, Global.System.Data.MappingType.Element) + MyBase.Columns.Add(Me.columnDauer_Minuten) + Me.columnKennzeichen = New Global.System.Data.DataColumn("Kennzeichen", GetType(String), Nothing, Global.System.Data.MappingType.Element) + MyBase.Columns.Add(Me.columnKennzeichen) + Me.Constraints.Add(New Global.System.Data.UniqueConstraint("Constraint1", New Global.System.Data.DataColumn() {Me.columnParkzeitID}, true)) + Me.columnParkzeitID.AutoIncrement = true + Me.columnParkzeitID.AutoIncrementSeed = -1 + Me.columnParkzeitID.AutoIncrementStep = -1 + Me.columnParkzeitID.AllowDBNull = false + Me.columnParkzeitID.Unique = true + Me.columnDauer.MaxLength = 255 + Me.columnKennzeichen.MaxLength = 50 + End Sub + + _ + Public Function NewParkzeitenRow() As ParkzeitenRow + Return CType(Me.NewRow,ParkzeitenRow) + End Function + + _ + Protected Overrides Function NewRowFromBuilder(ByVal builder As Global.System.Data.DataRowBuilder) As Global.System.Data.DataRow + Return New ParkzeitenRow(builder) + End Function + + _ + Protected Overrides Function GetRowType() As Global.System.Type + Return GetType(ParkzeitenRow) + End Function + + _ + Protected Overrides Sub OnRowChanged(ByVal e As Global.System.Data.DataRowChangeEventArgs) + MyBase.OnRowChanged(e) + If (Not (Me.ParkzeitenRowChangedEvent) Is Nothing) Then + RaiseEvent ParkzeitenRowChanged(Me, New ParkzeitenRowChangeEvent(CType(e.Row,ParkzeitenRow), e.Action)) + End If + End Sub + + _ + Protected Overrides Sub OnRowChanging(ByVal e As Global.System.Data.DataRowChangeEventArgs) + MyBase.OnRowChanging(e) + If (Not (Me.ParkzeitenRowChangingEvent) Is Nothing) Then + RaiseEvent ParkzeitenRowChanging(Me, New ParkzeitenRowChangeEvent(CType(e.Row,ParkzeitenRow), e.Action)) + End If + End Sub + + _ + Protected Overrides Sub OnRowDeleted(ByVal e As Global.System.Data.DataRowChangeEventArgs) + MyBase.OnRowDeleted(e) + If (Not (Me.ParkzeitenRowDeletedEvent) Is Nothing) Then + RaiseEvent ParkzeitenRowDeleted(Me, New ParkzeitenRowChangeEvent(CType(e.Row,ParkzeitenRow), e.Action)) + End If + End Sub + + _ + Protected Overrides Sub OnRowDeleting(ByVal e As Global.System.Data.DataRowChangeEventArgs) + MyBase.OnRowDeleting(e) + If (Not (Me.ParkzeitenRowDeletingEvent) Is Nothing) Then + RaiseEvent ParkzeitenRowDeleting(Me, New ParkzeitenRowChangeEvent(CType(e.Row,ParkzeitenRow), e.Action)) + End If + End Sub + + _ + Public Sub RemoveParkzeitenRow(ByVal row As ParkzeitenRow) + Me.Rows.Remove(row) + End Sub + + _ + Public Shared Function GetTypedTableSchema(ByVal xs As Global.System.Xml.Schema.XmlSchemaSet) As Global.System.Xml.Schema.XmlSchemaComplexType + Dim type As Global.System.Xml.Schema.XmlSchemaComplexType = New Global.System.Xml.Schema.XmlSchemaComplexType() + Dim sequence As Global.System.Xml.Schema.XmlSchemaSequence = New Global.System.Xml.Schema.XmlSchemaSequence() + Dim ds As ParkzeitDataSet = New ParkzeitDataSet() + Dim any1 As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() + any1.Namespace = "http://www.w3.org/2001/XMLSchema" + any1.MinOccurs = New Decimal(0) + any1.MaxOccurs = Decimal.MaxValue + any1.ProcessContents = Global.System.Xml.Schema.XmlSchemaContentProcessing.Lax + sequence.Items.Add(any1) + Dim any2 As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1" + any2.MinOccurs = New Decimal(1) + any2.ProcessContents = Global.System.Xml.Schema.XmlSchemaContentProcessing.Lax + sequence.Items.Add(any2) + Dim attribute1 As Global.System.Xml.Schema.XmlSchemaAttribute = New Global.System.Xml.Schema.XmlSchemaAttribute() + attribute1.Name = "namespace" + attribute1.FixedValue = ds.Namespace + type.Attributes.Add(attribute1) + Dim attribute2 As Global.System.Xml.Schema.XmlSchemaAttribute = New Global.System.Xml.Schema.XmlSchemaAttribute() + attribute2.Name = "tableTypeName" + attribute2.FixedValue = "ParkzeitenDataTable" + type.Attributes.Add(attribute2) + type.Particle = sequence + Dim dsSchema As Global.System.Xml.Schema.XmlSchema = ds.GetSchemaSerializable + If xs.Contains(dsSchema.TargetNamespace) Then + Dim s1 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() + Dim s2 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() + Try + Dim schema As Global.System.Xml.Schema.XmlSchema = Nothing + dsSchema.Write(s1) + Dim schemas As Global.System.Collections.IEnumerator = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator + Do While schemas.MoveNext + schema = CType(schemas.Current,Global.System.Xml.Schema.XmlSchema) + s2.SetLength(0) + schema.Write(s2) + If (s1.Length = s2.Length) Then + s1.Position = 0 + s2.Position = 0 + + Do While ((s1.Position <> s1.Length) _ + AndAlso (s1.ReadByte = s2.ReadByte)) + + + Loop + If (s1.Position = s1.Length) Then + Return type + End If + End If + + Loop + Finally + If (Not (s1) Is Nothing) Then + s1.Close + End If + If (Not (s2) Is Nothing) Then + s2.Close + End If + End Try + End If + xs.Add(dsSchema) + Return type + End Function + End Class + + ''' + '''Represents strongly named DataRow class. + ''' + Partial Public Class ParkzeitenRow + Inherits Global.System.Data.DataRow + + Private tableParkzeiten As ParkzeitenDataTable + + _ + Friend Sub New(ByVal rb As Global.System.Data.DataRowBuilder) + MyBase.New(rb) + Me.tableParkzeiten = CType(Me.Table,ParkzeitenDataTable) + End Sub + + _ + Public Property ParkzeitID() As Integer + Get + Return CType(Me(Me.tableParkzeiten.ParkzeitIDColumn),Integer) + End Get + Set + Me(Me.tableParkzeiten.ParkzeitIDColumn) = value + End Set + End Property + + _ + Public Property Laufende_Nr() As Integer + Get + Try + Return CType(Me(Me.tableParkzeiten.Laufende_NrColumn),Integer) + Catch e As Global.System.InvalidCastException + Throw New Global.System.Data.StrongTypingException("Der Wert für Spalte Laufende_Nr in Tabelle Parkzeiten ist DBNull.", e) + End Try + End Get + Set + Me(Me.tableParkzeiten.Laufende_NrColumn) = value + End Set + End Property + + _ + Public Property Von() As Date + Get + Try + Return CType(Me(Me.tableParkzeiten.VonColumn),Date) + Catch e As Global.System.InvalidCastException + Throw New Global.System.Data.StrongTypingException("Der Wert für Spalte Von in Tabelle Parkzeiten ist DBNull.", e) + End Try + End Get + Set + Me(Me.tableParkzeiten.VonColumn) = value + End Set + End Property + + _ + Public Property Bis() As Date + Get + Try + Return CType(Me(Me.tableParkzeiten.BisColumn),Date) + Catch e As Global.System.InvalidCastException + Throw New Global.System.Data.StrongTypingException("Der Wert für Spalte Bis in Tabelle Parkzeiten ist DBNull.", e) + End Try + End Get + Set + Me(Me.tableParkzeiten.BisColumn) = value + End Set + End Property + + _ + Public Property Dauer() As String + Get + Try + Return CType(Me(Me.tableParkzeiten.DauerColumn),String) + Catch e As Global.System.InvalidCastException + Throw New Global.System.Data.StrongTypingException("Der Wert für Spalte Dauer in Tabelle Parkzeiten ist DBNull.", e) + End Try + End Get + Set + Me(Me.tableParkzeiten.DauerColumn) = value + End Set + End Property + + _ + Public Property Dauer_Minuten() As Integer + Get + Try + Return CType(Me(Me.tableParkzeiten.Dauer_MinutenColumn),Integer) + Catch e As Global.System.InvalidCastException + Throw New Global.System.Data.StrongTypingException("Der Wert für Spalte Dauer_Minuten in Tabelle Parkzeiten ist DBNull.", e) + End Try + End Get + Set + Me(Me.tableParkzeiten.Dauer_MinutenColumn) = value + End Set + End Property + + _ + Public Property Kennzeichen() As String + Get + Try + Return CType(Me(Me.tableParkzeiten.KennzeichenColumn),String) + Catch e As Global.System.InvalidCastException + Throw New Global.System.Data.StrongTypingException("Der Wert für Spalte Kennzeichen in Tabelle Parkzeiten ist DBNull.", e) + End Try + End Get + Set + Me(Me.tableParkzeiten.KennzeichenColumn) = value + End Set + End Property + + _ + Public Function IsLaufende_NrNull() As Boolean + Return Me.IsNull(Me.tableParkzeiten.Laufende_NrColumn) + End Function + + _ + Public Sub SetLaufende_NrNull() + Me(Me.tableParkzeiten.Laufende_NrColumn) = Global.System.Convert.DBNull + End Sub + + _ + Public Function IsVonNull() As Boolean + Return Me.IsNull(Me.tableParkzeiten.VonColumn) + End Function + + _ + Public Sub SetVonNull() + Me(Me.tableParkzeiten.VonColumn) = Global.System.Convert.DBNull + End Sub + + _ + Public Function IsBisNull() As Boolean + Return Me.IsNull(Me.tableParkzeiten.BisColumn) + End Function + + _ + Public Sub SetBisNull() + Me(Me.tableParkzeiten.BisColumn) = Global.System.Convert.DBNull + End Sub + + _ + Public Function IsDauerNull() As Boolean + Return Me.IsNull(Me.tableParkzeiten.DauerColumn) + End Function + + _ + Public Sub SetDauerNull() + Me(Me.tableParkzeiten.DauerColumn) = Global.System.Convert.DBNull + End Sub + + _ + Public Function IsDauer_MinutenNull() As Boolean + Return Me.IsNull(Me.tableParkzeiten.Dauer_MinutenColumn) + End Function + + _ + Public Sub SetDauer_MinutenNull() + Me(Me.tableParkzeiten.Dauer_MinutenColumn) = Global.System.Convert.DBNull + End Sub + + _ + Public Function IsKennzeichenNull() As Boolean + Return Me.IsNull(Me.tableParkzeiten.KennzeichenColumn) + End Function + + _ + Public Sub SetKennzeichenNull() + Me(Me.tableParkzeiten.KennzeichenColumn) = Global.System.Convert.DBNull + End Sub + End Class + + ''' + '''Row event argument class + ''' + _ + Public Class ParkzeitenRowChangeEvent + Inherits Global.System.EventArgs + + Private eventRow As ParkzeitenRow + + Private eventAction As Global.System.Data.DataRowAction + + _ + Public Sub New(ByVal row As ParkzeitenRow, ByVal action As Global.System.Data.DataRowAction) + MyBase.New + Me.eventRow = row + Me.eventAction = action + End Sub + + _ + Public ReadOnly Property Row() As ParkzeitenRow + Get + Return Me.eventRow + End Get + End Property + + _ + Public ReadOnly Property Action() As Global.System.Data.DataRowAction + Get + Return Me.eventAction + End Get + End Property + End Class +End Class + +Namespace ParkzeitDataSetTableAdapters + + ''' + '''Represents the connection and commands used to retrieve and save data. + ''' + _ + Partial Public Class ParkzeitenTableAdapter + Inherits Global.System.ComponentModel.Component + + Private WithEvents _adapter As Global.System.Data.OleDb.OleDbDataAdapter + + Private _connection As Global.System.Data.OleDb.OleDbConnection + + Private _transaction As Global.System.Data.OleDb.OleDbTransaction + + Private _commandCollection() As Global.System.Data.OleDb.OleDbCommand + + Private _clearBeforeFill As Boolean + + _ + Public Sub New() + MyBase.New + Me.ClearBeforeFill = true + End Sub + + _ + Protected Friend ReadOnly Property Adapter() As Global.System.Data.OleDb.OleDbDataAdapter + Get + If (Me._adapter Is Nothing) Then + Me.InitAdapter + End If + Return Me._adapter + End Get + End Property + + _ + Friend Property Connection() As Global.System.Data.OleDb.OleDbConnection + Get + If (Me._connection Is Nothing) Then + Me.InitConnection + End If + Return Me._connection + End Get + Set + Me._connection = value + If (Not (Me.Adapter.InsertCommand) Is Nothing) Then + Me.Adapter.InsertCommand.Connection = value + End If + If (Not (Me.Adapter.DeleteCommand) Is Nothing) Then + Me.Adapter.DeleteCommand.Connection = value + End If + If (Not (Me.Adapter.UpdateCommand) Is Nothing) Then + Me.Adapter.UpdateCommand.Connection = value + End If + Dim i As Integer = 0 + Do While (i < Me.CommandCollection.Length) + If (Not (Me.CommandCollection(i)) Is Nothing) Then + CType(Me.CommandCollection(i),Global.System.Data.OleDb.OleDbCommand).Connection = value + End If + i = (i + 1) + Loop + End Set + End Property + + _ + Friend Property Transaction() As Global.System.Data.OleDb.OleDbTransaction + Get + Return Me._transaction + End Get + Set + Me._transaction = value + Dim i As Integer = 0 + Do While (i < Me.CommandCollection.Length) + Me.CommandCollection(i).Transaction = Me._transaction + i = (i + 1) + Loop + If ((Not (Me.Adapter) Is Nothing) _ + AndAlso (Not (Me.Adapter.DeleteCommand) Is Nothing)) Then + Me.Adapter.DeleteCommand.Transaction = Me._transaction + End If + If ((Not (Me.Adapter) Is Nothing) _ + AndAlso (Not (Me.Adapter.InsertCommand) Is Nothing)) Then + Me.Adapter.InsertCommand.Transaction = Me._transaction + End If + If ((Not (Me.Adapter) Is Nothing) _ + AndAlso (Not (Me.Adapter.UpdateCommand) Is Nothing)) Then + Me.Adapter.UpdateCommand.Transaction = Me._transaction + End If + End Set + End Property + + _ + Protected ReadOnly Property CommandCollection() As Global.System.Data.OleDb.OleDbCommand() + Get + If (Me._commandCollection Is Nothing) Then + Me.InitCommandCollection + End If + Return Me._commandCollection + End Get + End Property + + _ + Public Property ClearBeforeFill() As Boolean + Get + Return Me._clearBeforeFill + End Get + Set + Me._clearBeforeFill = value + End Set + End Property + + _ + Private Sub InitAdapter() + Me._adapter = New Global.System.Data.OleDb.OleDbDataAdapter() + Dim tableMapping As Global.System.Data.Common.DataTableMapping = New Global.System.Data.Common.DataTableMapping() + tableMapping.SourceTable = "Table" + tableMapping.DataSetTable = "Parkzeiten" + tableMapping.ColumnMappings.Add("ParkzeitID", "ParkzeitID") + tableMapping.ColumnMappings.Add("Laufende_Nr", "Laufende_Nr") + tableMapping.ColumnMappings.Add("Von", "Von") + tableMapping.ColumnMappings.Add("Bis", "Bis") + tableMapping.ColumnMappings.Add("Dauer", "Dauer") + tableMapping.ColumnMappings.Add("Dauer_Minuten", "Dauer_Minuten") + tableMapping.ColumnMappings.Add("Kennzeichen", "Kennzeichen") + Me._adapter.TableMappings.Add(tableMapping) + Me._adapter.DeleteCommand = New Global.System.Data.OleDb.OleDbCommand() + Me._adapter.DeleteCommand.Connection = Me.Connection + Me._adapter.DeleteCommand.CommandText = "DELETE FROM `Parkzeiten` WHERE ((`ParkzeitID` = ?) AND ((? = 1 AND `Laufende_Nr` "& _ + "IS NULL) OR (`Laufende_Nr` = ?)) AND ((? = 1 AND `Von` IS NULL) OR (`Von` = ?)) "& _ + "AND ((? = 1 AND `Bis` IS NULL) OR (`Bis` = ?)) AND ((? = 1 AND `Dauer` IS NULL) "& _ + "OR (`Dauer` = ?)) AND ((? = 1 AND `Dauer_Minuten` IS NULL) OR (`Dauer_Minuten` ="& _ + " ?)) AND ((? = 1 AND `Kennzeichen` IS NULL) OR (`Kennzeichen` = ?)))" + Me._adapter.DeleteCommand.CommandType = Global.System.Data.CommandType.Text + Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Original_ParkzeitID", Global.System.Data.OleDb.OleDbType.[Integer], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "ParkzeitID", Global.System.Data.DataRowVersion.Original, false, Nothing)) + Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("IsNull_Laufende_Nr", Global.System.Data.OleDb.OleDbType.[Integer], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Laufende_Nr", Global.System.Data.DataRowVersion.Original, true, Nothing)) + Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Original_Laufende_Nr", Global.System.Data.OleDb.OleDbType.[Integer], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Laufende_Nr", Global.System.Data.DataRowVersion.Original, false, Nothing)) + Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("IsNull_Von", Global.System.Data.OleDb.OleDbType.[Integer], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Von", Global.System.Data.DataRowVersion.Original, true, Nothing)) + Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Original_Von", Global.System.Data.OleDb.OleDbType.[Date], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Von", Global.System.Data.DataRowVersion.Original, false, Nothing)) + Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("IsNull_Bis", Global.System.Data.OleDb.OleDbType.[Integer], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Bis", Global.System.Data.DataRowVersion.Original, true, Nothing)) + Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Original_Bis", Global.System.Data.OleDb.OleDbType.[Date], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Bis", Global.System.Data.DataRowVersion.Original, false, Nothing)) + Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("IsNull_Dauer", Global.System.Data.OleDb.OleDbType.[Integer], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Dauer", Global.System.Data.DataRowVersion.Original, true, Nothing)) + Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Original_Dauer", Global.System.Data.OleDb.OleDbType.VarWChar, 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Dauer", Global.System.Data.DataRowVersion.Original, false, Nothing)) + Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("IsNull_Dauer_Minuten", Global.System.Data.OleDb.OleDbType.[Integer], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Dauer_Minuten", Global.System.Data.DataRowVersion.Original, true, Nothing)) + Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Original_Dauer_Minuten", Global.System.Data.OleDb.OleDbType.[Integer], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Dauer_Minuten", Global.System.Data.DataRowVersion.Original, false, Nothing)) + Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("IsNull_Kennzeichen", Global.System.Data.OleDb.OleDbType.[Integer], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Kennzeichen", Global.System.Data.DataRowVersion.Original, true, Nothing)) + Me._adapter.DeleteCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Original_Kennzeichen", Global.System.Data.OleDb.OleDbType.VarWChar, 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Kennzeichen", Global.System.Data.DataRowVersion.Original, false, Nothing)) + Me._adapter.InsertCommand = New Global.System.Data.OleDb.OleDbCommand() + Me._adapter.InsertCommand.Connection = Me.Connection + Me._adapter.InsertCommand.CommandText = "INSERT INTO `Parkzeiten` (`Laufende_Nr`, `Von`, `Bis`, `Dauer`, `Dauer_Minuten`, "& _ + "`Kennzeichen`) VALUES (?, ?, ?, ?, ?, ?)" + Me._adapter.InsertCommand.CommandType = Global.System.Data.CommandType.Text + Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Laufende_Nr", Global.System.Data.OleDb.OleDbType.[Integer], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Laufende_Nr", Global.System.Data.DataRowVersion.Current, false, Nothing)) + Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Von", Global.System.Data.OleDb.OleDbType.[Date], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Von", Global.System.Data.DataRowVersion.Current, false, Nothing)) + Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Bis", Global.System.Data.OleDb.OleDbType.[Date], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Bis", Global.System.Data.DataRowVersion.Current, false, Nothing)) + Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Dauer", Global.System.Data.OleDb.OleDbType.VarWChar, 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Dauer", Global.System.Data.DataRowVersion.Current, false, Nothing)) + Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Dauer_Minuten", Global.System.Data.OleDb.OleDbType.[Integer], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Dauer_Minuten", Global.System.Data.DataRowVersion.Current, false, Nothing)) + Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Kennzeichen", Global.System.Data.OleDb.OleDbType.VarWChar, 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Kennzeichen", Global.System.Data.DataRowVersion.Current, false, Nothing)) + Me._adapter.UpdateCommand = New Global.System.Data.OleDb.OleDbCommand() + Me._adapter.UpdateCommand.Connection = Me.Connection + Me._adapter.UpdateCommand.CommandText = "UPDATE `Parkzeiten` SET `Laufende_Nr` = ?, `Von` = ?, `Bis` = ?, `Dauer` = ?, `Da"& _ + "uer_Minuten` = ?, `Kennzeichen` = ? WHERE ((`ParkzeitID` = ?) AND ((? = 1 AND `L"& _ + "aufende_Nr` IS NULL) OR (`Laufende_Nr` = ?)) AND ((? = 1 AND `Von` IS NULL) OR ("& _ + "`Von` = ?)) AND ((? = 1 AND `Bis` IS NULL) OR (`Bis` = ?)) AND ((? = 1 AND `Daue"& _ + "r` IS NULL) OR (`Dauer` = ?)) AND ((? = 1 AND `Dauer_Minuten` IS NULL) OR (`Daue"& _ + "r_Minuten` = ?)) AND ((? = 1 AND `Kennzeichen` IS NULL) OR (`Kennzeichen` = ?)))"& _ + "" + Me._adapter.UpdateCommand.CommandType = Global.System.Data.CommandType.Text + Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Laufende_Nr", Global.System.Data.OleDb.OleDbType.[Integer], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Laufende_Nr", Global.System.Data.DataRowVersion.Current, false, Nothing)) + Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Von", Global.System.Data.OleDb.OleDbType.[Date], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Von", Global.System.Data.DataRowVersion.Current, false, Nothing)) + Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Bis", Global.System.Data.OleDb.OleDbType.[Date], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Bis", Global.System.Data.DataRowVersion.Current, false, Nothing)) + Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Dauer", Global.System.Data.OleDb.OleDbType.VarWChar, 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Dauer", Global.System.Data.DataRowVersion.Current, false, Nothing)) + Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Dauer_Minuten", Global.System.Data.OleDb.OleDbType.[Integer], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Dauer_Minuten", Global.System.Data.DataRowVersion.Current, false, Nothing)) + Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Kennzeichen", Global.System.Data.OleDb.OleDbType.VarWChar, 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Kennzeichen", Global.System.Data.DataRowVersion.Current, false, Nothing)) + Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Original_ParkzeitID", Global.System.Data.OleDb.OleDbType.[Integer], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "ParkzeitID", Global.System.Data.DataRowVersion.Original, false, Nothing)) + Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("IsNull_Laufende_Nr", Global.System.Data.OleDb.OleDbType.[Integer], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Laufende_Nr", Global.System.Data.DataRowVersion.Original, true, Nothing)) + Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Original_Laufende_Nr", Global.System.Data.OleDb.OleDbType.[Integer], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Laufende_Nr", Global.System.Data.DataRowVersion.Original, false, Nothing)) + Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("IsNull_Von", Global.System.Data.OleDb.OleDbType.[Integer], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Von", Global.System.Data.DataRowVersion.Original, true, Nothing)) + Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Original_Von", Global.System.Data.OleDb.OleDbType.[Date], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Von", Global.System.Data.DataRowVersion.Original, false, Nothing)) + Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("IsNull_Bis", Global.System.Data.OleDb.OleDbType.[Integer], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Bis", Global.System.Data.DataRowVersion.Original, true, Nothing)) + Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Original_Bis", Global.System.Data.OleDb.OleDbType.[Date], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Bis", Global.System.Data.DataRowVersion.Original, false, Nothing)) + Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("IsNull_Dauer", Global.System.Data.OleDb.OleDbType.[Integer], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Dauer", Global.System.Data.DataRowVersion.Original, true, Nothing)) + Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Original_Dauer", Global.System.Data.OleDb.OleDbType.VarWChar, 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Dauer", Global.System.Data.DataRowVersion.Original, false, Nothing)) + Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("IsNull_Dauer_Minuten", Global.System.Data.OleDb.OleDbType.[Integer], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Dauer_Minuten", Global.System.Data.DataRowVersion.Original, true, Nothing)) + Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Original_Dauer_Minuten", Global.System.Data.OleDb.OleDbType.[Integer], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Dauer_Minuten", Global.System.Data.DataRowVersion.Original, false, Nothing)) + Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("IsNull_Kennzeichen", Global.System.Data.OleDb.OleDbType.[Integer], 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Kennzeichen", Global.System.Data.DataRowVersion.Original, true, Nothing)) + Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.OleDb.OleDbParameter("Original_Kennzeichen", Global.System.Data.OleDb.OleDbType.VarWChar, 0, Global.System.Data.ParameterDirection.Input, CType(0,Byte), CType(0,Byte), "Kennzeichen", Global.System.Data.DataRowVersion.Original, false, Nothing)) + End Sub + + _ + Private Sub InitConnection() + Me._connection = New Global.System.Data.OleDb.OleDbConnection() + Me._connection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Projekte.NET\Verag\Parkzeit\Park"& _ + "zeit.accdb" + End Sub + + _ + Private Sub InitCommandCollection() + Me._commandCollection = New Global.System.Data.OleDb.OleDbCommand(0) {} + Me._commandCollection(0) = New Global.System.Data.OleDb.OleDbCommand() + Me._commandCollection(0).Connection = Me.Connection + Me._commandCollection(0).CommandText = "SELECT ParkzeitID, Laufende_Nr, Von, Bis, Dauer, Dauer_Minuten, Kennzeichen FROM "& _ + "Parkzeiten" + Me._commandCollection(0).CommandType = Global.System.Data.CommandType.Text + End Sub + + _ + Public Overloads Overridable Function Fill(ByVal dataTable As ParkzeitDataSet.ParkzeitenDataTable) As Integer + Me.Adapter.SelectCommand = Me.CommandCollection(0) + If (Me.ClearBeforeFill = true) Then + dataTable.Clear + End If + Dim returnValue As Integer = Me.Adapter.Fill(dataTable) + Return returnValue + End Function + + _ + Public Overloads Overridable Function GetData() As ParkzeitDataSet.ParkzeitenDataTable + Me.Adapter.SelectCommand = Me.CommandCollection(0) + Dim dataTable As ParkzeitDataSet.ParkzeitenDataTable = New ParkzeitDataSet.ParkzeitenDataTable() + Me.Adapter.Fill(dataTable) + Return dataTable + End Function + + _ + Public Overloads Overridable Function Update(ByVal dataTable As ParkzeitDataSet.ParkzeitenDataTable) As Integer + Return Me.Adapter.Update(dataTable) + End Function + + _ + Public Overloads Overridable Function Update(ByVal dataSet As ParkzeitDataSet) As Integer + Return Me.Adapter.Update(dataSet, "Parkzeiten") + End Function + + _ + Public Overloads Overridable Function Update(ByVal dataRow As Global.System.Data.DataRow) As Integer + Return Me.Adapter.Update(New Global.System.Data.DataRow() {dataRow}) + End Function + + _ + Public Overloads Overridable Function Update(ByVal dataRows() As Global.System.Data.DataRow) As Integer + Return Me.Adapter.Update(dataRows) + End Function + + _ + Public Overloads Overridable Function Delete(ByVal Original_ParkzeitID As Integer, ByVal Original_Laufende_Nr As Global.System.Nullable(Of Integer), ByVal Original_Von As Global.System.Nullable(Of Date), ByVal Original_Bis As Global.System.Nullable(Of Date), ByVal Original_Dauer As String, ByVal Original_Dauer_Minuten As Global.System.Nullable(Of Integer), ByVal Original_Kennzeichen As String) As Integer + Me.Adapter.DeleteCommand.Parameters(0).Value = CType(Original_ParkzeitID,Integer) + If (Original_Laufende_Nr.HasValue = true) Then + Me.Adapter.DeleteCommand.Parameters(1).Value = CType(0,Object) + Me.Adapter.DeleteCommand.Parameters(2).Value = CType(Original_Laufende_Nr.Value,Integer) + Else + Me.Adapter.DeleteCommand.Parameters(1).Value = CType(1,Object) + Me.Adapter.DeleteCommand.Parameters(2).Value = Global.System.DBNull.Value + End If + If (Original_Von.HasValue = true) Then + Me.Adapter.DeleteCommand.Parameters(3).Value = CType(0,Object) + Me.Adapter.DeleteCommand.Parameters(4).Value = CType(Original_Von.Value,Date) + Else + Me.Adapter.DeleteCommand.Parameters(3).Value = CType(1,Object) + Me.Adapter.DeleteCommand.Parameters(4).Value = Global.System.DBNull.Value + End If + If (Original_Bis.HasValue = true) Then + Me.Adapter.DeleteCommand.Parameters(5).Value = CType(0,Object) + Me.Adapter.DeleteCommand.Parameters(6).Value = CType(Original_Bis.Value,Date) + Else + Me.Adapter.DeleteCommand.Parameters(5).Value = CType(1,Object) + Me.Adapter.DeleteCommand.Parameters(6).Value = Global.System.DBNull.Value + End If + If (Original_Dauer Is Nothing) Then + Me.Adapter.DeleteCommand.Parameters(7).Value = CType(1,Object) + Me.Adapter.DeleteCommand.Parameters(8).Value = Global.System.DBNull.Value + Else + Me.Adapter.DeleteCommand.Parameters(7).Value = CType(0,Object) + Me.Adapter.DeleteCommand.Parameters(8).Value = CType(Original_Dauer,String) + End If + If (Original_Dauer_Minuten.HasValue = true) Then + Me.Adapter.DeleteCommand.Parameters(9).Value = CType(0,Object) + Me.Adapter.DeleteCommand.Parameters(10).Value = CType(Original_Dauer_Minuten.Value,Integer) + Else + Me.Adapter.DeleteCommand.Parameters(9).Value = CType(1,Object) + Me.Adapter.DeleteCommand.Parameters(10).Value = Global.System.DBNull.Value + End If + If (Original_Kennzeichen Is Nothing) Then + Me.Adapter.DeleteCommand.Parameters(11).Value = CType(1,Object) + Me.Adapter.DeleteCommand.Parameters(12).Value = Global.System.DBNull.Value + Else + Me.Adapter.DeleteCommand.Parameters(11).Value = CType(0,Object) + Me.Adapter.DeleteCommand.Parameters(12).Value = CType(Original_Kennzeichen,String) + End If + Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.DeleteCommand.Connection.State + If ((Me.Adapter.DeleteCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ + <> Global.System.Data.ConnectionState.Open) Then + Me.Adapter.DeleteCommand.Connection.Open + End If + Try + Dim returnValue As Integer = Me.Adapter.DeleteCommand.ExecuteNonQuery + Return returnValue + Finally + If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then + Me.Adapter.DeleteCommand.Connection.Close + End If + End Try + End Function + + _ + Public Overloads Overridable Function Insert(ByVal Laufende_Nr As Global.System.Nullable(Of Integer), ByVal Von As Global.System.Nullable(Of Date), ByVal Bis As Global.System.Nullable(Of Date), ByVal Dauer As String, ByVal Dauer_Minuten As Global.System.Nullable(Of Integer), ByVal Kennzeichen As String) As Integer + If (Laufende_Nr.HasValue = true) Then + Me.Adapter.InsertCommand.Parameters(0).Value = CType(Laufende_Nr.Value,Integer) + Else + Me.Adapter.InsertCommand.Parameters(0).Value = Global.System.DBNull.Value + End If + If (Von.HasValue = true) Then + Me.Adapter.InsertCommand.Parameters(1).Value = CType(Von.Value,Date) + Else + Me.Adapter.InsertCommand.Parameters(1).Value = Global.System.DBNull.Value + End If + If (Bis.HasValue = true) Then + Me.Adapter.InsertCommand.Parameters(2).Value = CType(Bis.Value,Date) + Else + Me.Adapter.InsertCommand.Parameters(2).Value = Global.System.DBNull.Value + End If + If (Dauer Is Nothing) Then + Me.Adapter.InsertCommand.Parameters(3).Value = Global.System.DBNull.Value + Else + Me.Adapter.InsertCommand.Parameters(3).Value = CType(Dauer,String) + End If + If (Dauer_Minuten.HasValue = true) Then + Me.Adapter.InsertCommand.Parameters(4).Value = CType(Dauer_Minuten.Value,Integer) + Else + Me.Adapter.InsertCommand.Parameters(4).Value = Global.System.DBNull.Value + End If + If (Kennzeichen Is Nothing) Then + Me.Adapter.InsertCommand.Parameters(5).Value = Global.System.DBNull.Value + Else + Me.Adapter.InsertCommand.Parameters(5).Value = CType(Kennzeichen,String) + End If + Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.InsertCommand.Connection.State + If ((Me.Adapter.InsertCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ + <> Global.System.Data.ConnectionState.Open) Then + Me.Adapter.InsertCommand.Connection.Open + End If + Try + Dim returnValue As Integer = Me.Adapter.InsertCommand.ExecuteNonQuery + Return returnValue + Finally + If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then + Me.Adapter.InsertCommand.Connection.Close + End If + End Try + End Function + + _ + Public Overloads Overridable Function Update(ByVal Laufende_Nr As Global.System.Nullable(Of Integer), ByVal Von As Global.System.Nullable(Of Date), ByVal Bis As Global.System.Nullable(Of Date), ByVal Dauer As String, ByVal Dauer_Minuten As Global.System.Nullable(Of Integer), ByVal Kennzeichen As String, ByVal Original_ParkzeitID As Integer, ByVal Original_Laufende_Nr As Global.System.Nullable(Of Integer), ByVal Original_Von As Global.System.Nullable(Of Date), ByVal Original_Bis As Global.System.Nullable(Of Date), ByVal Original_Dauer As String, ByVal Original_Dauer_Minuten As Global.System.Nullable(Of Integer), ByVal Original_Kennzeichen As String) As Integer + If (Laufende_Nr.HasValue = true) Then + Me.Adapter.UpdateCommand.Parameters(0).Value = CType(Laufende_Nr.Value,Integer) + Else + Me.Adapter.UpdateCommand.Parameters(0).Value = Global.System.DBNull.Value + End If + If (Von.HasValue = true) Then + Me.Adapter.UpdateCommand.Parameters(1).Value = CType(Von.Value,Date) + Else + Me.Adapter.UpdateCommand.Parameters(1).Value = Global.System.DBNull.Value + End If + If (Bis.HasValue = true) Then + Me.Adapter.UpdateCommand.Parameters(2).Value = CType(Bis.Value,Date) + Else + Me.Adapter.UpdateCommand.Parameters(2).Value = Global.System.DBNull.Value + End If + If (Dauer Is Nothing) Then + Me.Adapter.UpdateCommand.Parameters(3).Value = Global.System.DBNull.Value + Else + Me.Adapter.UpdateCommand.Parameters(3).Value = CType(Dauer,String) + End If + If (Dauer_Minuten.HasValue = true) Then + Me.Adapter.UpdateCommand.Parameters(4).Value = CType(Dauer_Minuten.Value,Integer) + Else + Me.Adapter.UpdateCommand.Parameters(4).Value = Global.System.DBNull.Value + End If + If (Kennzeichen Is Nothing) Then + Me.Adapter.UpdateCommand.Parameters(5).Value = Global.System.DBNull.Value + Else + Me.Adapter.UpdateCommand.Parameters(5).Value = CType(Kennzeichen,String) + End If + Me.Adapter.UpdateCommand.Parameters(6).Value = CType(Original_ParkzeitID,Integer) + If (Original_Laufende_Nr.HasValue = true) Then + Me.Adapter.UpdateCommand.Parameters(7).Value = CType(0,Object) + Me.Adapter.UpdateCommand.Parameters(8).Value = CType(Original_Laufende_Nr.Value,Integer) + Else + Me.Adapter.UpdateCommand.Parameters(7).Value = CType(1,Object) + Me.Adapter.UpdateCommand.Parameters(8).Value = Global.System.DBNull.Value + End If + If (Original_Von.HasValue = true) Then + Me.Adapter.UpdateCommand.Parameters(9).Value = CType(0,Object) + Me.Adapter.UpdateCommand.Parameters(10).Value = CType(Original_Von.Value,Date) + Else + Me.Adapter.UpdateCommand.Parameters(9).Value = CType(1,Object) + Me.Adapter.UpdateCommand.Parameters(10).Value = Global.System.DBNull.Value + End If + If (Original_Bis.HasValue = true) Then + Me.Adapter.UpdateCommand.Parameters(11).Value = CType(0,Object) + Me.Adapter.UpdateCommand.Parameters(12).Value = CType(Original_Bis.Value,Date) + Else + Me.Adapter.UpdateCommand.Parameters(11).Value = CType(1,Object) + Me.Adapter.UpdateCommand.Parameters(12).Value = Global.System.DBNull.Value + End If + If (Original_Dauer Is Nothing) Then + Me.Adapter.UpdateCommand.Parameters(13).Value = CType(1,Object) + Me.Adapter.UpdateCommand.Parameters(14).Value = Global.System.DBNull.Value + Else + Me.Adapter.UpdateCommand.Parameters(13).Value = CType(0,Object) + Me.Adapter.UpdateCommand.Parameters(14).Value = CType(Original_Dauer,String) + End If + If (Original_Dauer_Minuten.HasValue = true) Then + Me.Adapter.UpdateCommand.Parameters(15).Value = CType(0,Object) + Me.Adapter.UpdateCommand.Parameters(16).Value = CType(Original_Dauer_Minuten.Value,Integer) + Else + Me.Adapter.UpdateCommand.Parameters(15).Value = CType(1,Object) + Me.Adapter.UpdateCommand.Parameters(16).Value = Global.System.DBNull.Value + End If + If (Original_Kennzeichen Is Nothing) Then + Me.Adapter.UpdateCommand.Parameters(17).Value = CType(1,Object) + Me.Adapter.UpdateCommand.Parameters(18).Value = Global.System.DBNull.Value + Else + Me.Adapter.UpdateCommand.Parameters(17).Value = CType(0,Object) + Me.Adapter.UpdateCommand.Parameters(18).Value = CType(Original_Kennzeichen,String) + End If + Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.UpdateCommand.Connection.State + If ((Me.Adapter.UpdateCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ + <> Global.System.Data.ConnectionState.Open) Then + Me.Adapter.UpdateCommand.Connection.Open + End If + Try + Dim returnValue As Integer = Me.Adapter.UpdateCommand.ExecuteNonQuery + Return returnValue + Finally + If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then + Me.Adapter.UpdateCommand.Connection.Close + End If + End Try + End Function + End Class + + ''' + '''TableAdapterManager is used to coordinate TableAdapters in the dataset to enable Hierarchical Update scenarios + ''' + _ + Partial Public Class TableAdapterManager + Inherits Global.System.ComponentModel.Component + + Private _updateOrder As UpdateOrderOption + + Private _parkzeitenTableAdapter As ParkzeitenTableAdapter + + Private _backupDataSetBeforeUpdate As Boolean + + Private _connection As Global.System.Data.IDbConnection + + _ + Public Property UpdateOrder() As UpdateOrderOption + Get + Return Me._updateOrder + End Get + Set + Me._updateOrder = value + End Set + End Property + + _ + Public Property ParkzeitenTableAdapter() As ParkzeitenTableAdapter + Get + Return Me._parkzeitenTableAdapter + End Get + Set + Me._parkzeitenTableAdapter = value + End Set + End Property + + _ + Public Property BackupDataSetBeforeUpdate() As Boolean + Get + Return Me._backupDataSetBeforeUpdate + End Get + Set + Me._backupDataSetBeforeUpdate = value + End Set + End Property + + _ + Public Property Connection() As Global.System.Data.IDbConnection + Get + If (Not (Me._connection) Is Nothing) Then + Return Me._connection + End If + If ((Not (Me._parkzeitenTableAdapter) Is Nothing) _ + AndAlso (Not (Me._parkzeitenTableAdapter.Connection) Is Nothing)) Then + Return Me._parkzeitenTableAdapter.Connection + End If + Return Nothing + End Get + Set + Me._connection = value + End Set + End Property + + _ + Public ReadOnly Property TableAdapterInstanceCount() As Integer + Get + Dim count As Integer = 0 + If (Not (Me._parkzeitenTableAdapter) Is Nothing) Then + count = (count + 1) + End If + Return count + End Get + End Property + + ''' + '''Update rows in top-down order. + ''' + _ + Private Function UpdateUpdatedRows(ByVal dataSet As ParkzeitDataSet, ByVal allChangedRows As Global.System.Collections.Generic.List(Of Global.System.Data.DataRow), ByVal allAddedRows As Global.System.Collections.Generic.List(Of Global.System.Data.DataRow)) As Integer + Dim result As Integer = 0 + If (Not (Me._parkzeitenTableAdapter) Is Nothing) Then + Dim updatedRows() As Global.System.Data.DataRow = dataSet.Parkzeiten.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.ModifiedCurrent) + updatedRows = Me.GetRealUpdatedRows(updatedRows, allAddedRows) + If ((Not (updatedRows) Is Nothing) _ + AndAlso (0 < updatedRows.Length)) Then + result = (result + Me._parkzeitenTableAdapter.Update(updatedRows)) + allChangedRows.AddRange(updatedRows) + End If + End If + Return result + End Function + + ''' + '''Insert rows in top-down order. + ''' + _ + Private Function UpdateInsertedRows(ByVal dataSet As ParkzeitDataSet, ByVal allAddedRows As Global.System.Collections.Generic.List(Of Global.System.Data.DataRow)) As Integer + Dim result As Integer = 0 + If (Not (Me._parkzeitenTableAdapter) Is Nothing) Then + Dim addedRows() As Global.System.Data.DataRow = dataSet.Parkzeiten.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.Added) + If ((Not (addedRows) Is Nothing) _ + AndAlso (0 < addedRows.Length)) Then + result = (result + Me._parkzeitenTableAdapter.Update(addedRows)) + allAddedRows.AddRange(addedRows) + End If + End If + Return result + End Function + + ''' + '''Delete rows in bottom-up order. + ''' + _ + Private Function UpdateDeletedRows(ByVal dataSet As ParkzeitDataSet, ByVal allChangedRows As Global.System.Collections.Generic.List(Of Global.System.Data.DataRow)) As Integer + Dim result As Integer = 0 + If (Not (Me._parkzeitenTableAdapter) Is Nothing) Then + Dim deletedRows() As Global.System.Data.DataRow = dataSet.Parkzeiten.Select(Nothing, Nothing, Global.System.Data.DataViewRowState.Deleted) + If ((Not (deletedRows) Is Nothing) _ + AndAlso (0 < deletedRows.Length)) Then + result = (result + Me._parkzeitenTableAdapter.Update(deletedRows)) + allChangedRows.AddRange(deletedRows) + End If + End If + Return result + End Function + + ''' + '''Remove inserted rows that become updated rows after calling TableAdapter.Update(inserted rows) first + ''' + _ + Private Function GetRealUpdatedRows(ByVal updatedRows() As Global.System.Data.DataRow, ByVal allAddedRows As Global.System.Collections.Generic.List(Of Global.System.Data.DataRow)) As Global.System.Data.DataRow() + If ((updatedRows Is Nothing) _ + OrElse (updatedRows.Length < 1)) Then + Return updatedRows + End If + If ((allAddedRows Is Nothing) _ + OrElse (allAddedRows.Count < 1)) Then + Return updatedRows + End If + Dim realUpdatedRows As Global.System.Collections.Generic.List(Of Global.System.Data.DataRow) = New Global.System.Collections.Generic.List(Of Global.System.Data.DataRow)() + Dim i As Integer = 0 + Do While (i < updatedRows.Length) + Dim row As Global.System.Data.DataRow = updatedRows(i) + If (allAddedRows.Contains(row) = false) Then + realUpdatedRows.Add(row) + End If + i = (i + 1) + Loop + Return realUpdatedRows.ToArray + End Function + + ''' + '''Update all changes to the dataset. + ''' + _ + Public Overridable Function UpdateAll(ByVal dataSet As ParkzeitDataSet) As Integer + If (dataSet Is Nothing) Then + Throw New Global.System.ArgumentNullException("dataSet") + End If + If (dataSet.HasChanges = false) Then + Return 0 + End If + If ((Not (Me._parkzeitenTableAdapter) Is Nothing) _ + AndAlso (Me.MatchTableAdapterConnection(Me._parkzeitenTableAdapter.Connection) = false)) Then + Throw New Global.System.ArgumentException("Für alle von einem TableAdapterManager verwalteten Instanzen von TableAdapter mus"& _ + "s die gleiche Verbindungszeichenfolge verwendet werden.") + End If + Dim workConnection As Global.System.Data.IDbConnection = Me.Connection + If (workConnection Is Nothing) Then + Throw New Global.System.ApplicationException("TableAdapterManager enthält keine Verbindungsinformationen. Legen Sie jede TableA"& _ + "dapterManager TableAdapter-Eigenschaft auf eine gültige TableAdapter-Instanz fes"& _ + "t.") + End If + Dim workConnOpened As Boolean = false + If ((workConnection.State And Global.System.Data.ConnectionState.Broken) _ + = Global.System.Data.ConnectionState.Broken) Then + workConnection.Close + End If + If (workConnection.State = Global.System.Data.ConnectionState.Closed) Then + workConnection.Open + workConnOpened = true + End If + Dim workTransaction As Global.System.Data.IDbTransaction = workConnection.BeginTransaction + If (workTransaction Is Nothing) Then + Throw New Global.System.ApplicationException("Die Transaktion kann nicht gestartet werden. Die aktuelle Datenverbindung unterst"& _ + "ützt keine Transaktionen, oder der aktuelle Zustand lässt den Start der Transakt"& _ + "ion nicht zu.") + End If + Dim allChangedRows As Global.System.Collections.Generic.List(Of Global.System.Data.DataRow) = New Global.System.Collections.Generic.List(Of Global.System.Data.DataRow)() + Dim allAddedRows As Global.System.Collections.Generic.List(Of Global.System.Data.DataRow) = New Global.System.Collections.Generic.List(Of Global.System.Data.DataRow)() + Dim adaptersWithAcceptChangesDuringUpdate As Global.System.Collections.Generic.List(Of Global.System.Data.Common.DataAdapter) = New Global.System.Collections.Generic.List(Of Global.System.Data.Common.DataAdapter)() + Dim revertConnections As Global.System.Collections.Generic.Dictionary(Of Object, Global.System.Data.IDbConnection) = New Global.System.Collections.Generic.Dictionary(Of Object, Global.System.Data.IDbConnection)() + Dim result As Integer = 0 + Dim backupDataSet As Global.System.Data.DataSet = Nothing + If Me.BackupDataSetBeforeUpdate Then + backupDataSet = New Global.System.Data.DataSet() + backupDataSet.Merge(dataSet) + End If + Try + '---- Prepare for update ----------- + ' + If (Not (Me._parkzeitenTableAdapter) Is Nothing) Then + revertConnections.Add(Me._parkzeitenTableAdapter, Me._parkzeitenTableAdapter.Connection) + Me._parkzeitenTableAdapter.Connection = CType(workConnection,Global.System.Data.OleDb.OleDbConnection) + Me._parkzeitenTableAdapter.Transaction = CType(workTransaction,Global.System.Data.OleDb.OleDbTransaction) + If Me._parkzeitenTableAdapter.Adapter.AcceptChangesDuringUpdate Then + Me._parkzeitenTableAdapter.Adapter.AcceptChangesDuringUpdate = false + adaptersWithAcceptChangesDuringUpdate.Add(Me._parkzeitenTableAdapter.Adapter) + End If + End If + ' + '---- Perform updates ----------- + ' + If (Me.UpdateOrder = UpdateOrderOption.UpdateInsertDelete) Then + result = (result + Me.UpdateUpdatedRows(dataSet, allChangedRows, allAddedRows)) + result = (result + Me.UpdateInsertedRows(dataSet, allAddedRows)) + Else + result = (result + Me.UpdateInsertedRows(dataSet, allAddedRows)) + result = (result + Me.UpdateUpdatedRows(dataSet, allChangedRows, allAddedRows)) + End If + result = (result + Me.UpdateDeletedRows(dataSet, allChangedRows)) + ' + '---- Commit updates ----------- + ' + workTransaction.Commit + If (0 < allAddedRows.Count) Then + Dim rows((allAddedRows.Count) - 1) As Global.System.Data.DataRow + allAddedRows.CopyTo(rows) + Dim i As Integer = 0 + Do While (i < rows.Length) + Dim row As Global.System.Data.DataRow = rows(i) + row.AcceptChanges + i = (i + 1) + Loop + End If + If (0 < allChangedRows.Count) Then + Dim rows((allChangedRows.Count) - 1) As Global.System.Data.DataRow + allChangedRows.CopyTo(rows) + Dim i As Integer = 0 + Do While (i < rows.Length) + Dim row As Global.System.Data.DataRow = rows(i) + row.AcceptChanges + i = (i + 1) + Loop + End If + Catch ex As Global.System.Exception + workTransaction.Rollback + '---- Restore the dataset ----------- + If Me.BackupDataSetBeforeUpdate Then + Global.System.Diagnostics.Debug.Assert((Not (backupDataSet) Is Nothing)) + dataSet.Clear + dataSet.Merge(backupDataSet) + Else + If (0 < allAddedRows.Count) Then + Dim rows((allAddedRows.Count) - 1) As Global.System.Data.DataRow + allAddedRows.CopyTo(rows) + Dim i As Integer = 0 + Do While (i < rows.Length) + Dim row As Global.System.Data.DataRow = rows(i) + row.AcceptChanges + row.SetAdded + i = (i + 1) + Loop + End If + End If + Throw ex + Finally + If workConnOpened Then + workConnection.Close + End If + If (Not (Me._parkzeitenTableAdapter) Is Nothing) Then + Me._parkzeitenTableAdapter.Connection = CType(revertConnections(Me._parkzeitenTableAdapter),Global.System.Data.OleDb.OleDbConnection) + Me._parkzeitenTableAdapter.Transaction = Nothing + End If + If (0 < adaptersWithAcceptChangesDuringUpdate.Count) Then + Dim adapters((adaptersWithAcceptChangesDuringUpdate.Count) - 1) As Global.System.Data.Common.DataAdapter + adaptersWithAcceptChangesDuringUpdate.CopyTo(adapters) + Dim i As Integer = 0 + Do While (i < adapters.Length) + Dim adapter As Global.System.Data.Common.DataAdapter = adapters(i) + adapter.AcceptChangesDuringUpdate = true + i = (i + 1) + Loop + End If + End Try + Return result + End Function + + _ + Protected Overridable Sub SortSelfReferenceRows(ByVal rows() As Global.System.Data.DataRow, ByVal relation As Global.System.Data.DataRelation, ByVal childFirst As Boolean) + Global.System.Array.Sort(Of Global.System.Data.DataRow)(rows, New SelfReferenceComparer(relation, childFirst)) + End Sub + + _ + Protected Overridable Function MatchTableAdapterConnection(ByVal inputConnection As Global.System.Data.IDbConnection) As Boolean + If (Not (Me._connection) Is Nothing) Then + Return true + End If + If ((Me.Connection Is Nothing) _ + OrElse (inputConnection Is Nothing)) Then + Return true + End If + If String.Equals(Me.Connection.ConnectionString, inputConnection.ConnectionString, Global.System.StringComparison.Ordinal) Then + Return true + End If + Return false + End Function + + ''' + '''Update Order Option + ''' + _ + Public Enum UpdateOrderOption + + InsertUpdateDelete = 0 + + UpdateInsertDelete = 1 + End Enum + + ''' + '''Used to sort self-referenced table's rows + ''' + _ + Private Class SelfReferenceComparer + Inherits Object + Implements Global.System.Collections.Generic.IComparer(Of Global.System.Data.DataRow) + + Private _relation As Global.System.Data.DataRelation + + Private _childFirst As Integer + + _ + Friend Sub New(ByVal relation As Global.System.Data.DataRelation, ByVal childFirst As Boolean) + MyBase.New + Me._relation = relation + If childFirst Then + Me._childFirst = -1 + Else + Me._childFirst = 1 + End If + End Sub + + _ + Private Function GetRoot(ByVal row As Global.System.Data.DataRow, ByRef distance As Integer) As Global.System.Data.DataRow + Global.System.Diagnostics.Debug.Assert((Not (row) Is Nothing)) + Dim root As Global.System.Data.DataRow = row + distance = 0 + + Dim traversedRows As Global.System.Collections.Generic.IDictionary(Of Global.System.Data.DataRow, Global.System.Data.DataRow) = New Global.System.Collections.Generic.Dictionary(Of Global.System.Data.DataRow, Global.System.Data.DataRow)() + traversedRows(row) = row + + Dim parent As Global.System.Data.DataRow = row.GetParentRow(Me._relation, Global.System.Data.DataRowVersion.[Default]) + + Do While ((Not (parent) Is Nothing) _ + AndAlso (traversedRows.ContainsKey(parent) = false)) + distance = (distance + 1) + root = parent + traversedRows(parent) = parent + parent = parent.GetParentRow(Me._relation, Global.System.Data.DataRowVersion.[Default]) + + Loop + + If (distance = 0) Then + traversedRows.Clear + traversedRows(row) = row + parent = row.GetParentRow(Me._relation, Global.System.Data.DataRowVersion.Original) + + Do While ((Not (parent) Is Nothing) _ + AndAlso (traversedRows.ContainsKey(parent) = false)) + distance = (distance + 1) + root = parent + traversedRows(parent) = parent + parent = parent.GetParentRow(Me._relation, Global.System.Data.DataRowVersion.Original) + + Loop + End If + + Return root + End Function + + _ + Public Function Compare(ByVal row1 As Global.System.Data.DataRow, ByVal row2 As Global.System.Data.DataRow) As Integer Implements Global.System.Collections.Generic.IComparer(Of Global.System.Data.DataRow).Compare + If Object.ReferenceEquals(row1, row2) Then + Return 0 + End If + If (row1 Is Nothing) Then + Return -1 + End If + If (row2 Is Nothing) Then + Return 1 + End If + + Dim distance1 As Integer = 0 + Dim root1 As Global.System.Data.DataRow = Me.GetRoot(row1, distance1) + + Dim distance2 As Integer = 0 + Dim root2 As Global.System.Data.DataRow = Me.GetRoot(row2, distance2) + + If Object.ReferenceEquals(root1, root2) Then + Return (Me._childFirst * distance1.CompareTo(distance2)) + Else + Global.System.Diagnostics.Debug.Assert(((Not (root1.Table) Is Nothing) _ + AndAlso (Not (root2.Table) Is Nothing))) + If (root1.Table.Rows.IndexOf(root1) < root2.Table.Rows.IndexOf(root2)) Then + Return -1 + Else + Return 1 + End If + End If + End Function + End Class + End Class +End Namespace diff --git a/Parkzeit/ParkzeitDataSet.vb b/Parkzeit/ParkzeitDataSet.vb new file mode 100644 index 0000000..b46024a --- /dev/null +++ b/Parkzeit/ParkzeitDataSet.vb @@ -0,0 +1,4 @@ + + +Partial Public Class ParkzeitDataSet +End Class diff --git a/Parkzeit/ParkzeitDataSet.xsc b/Parkzeit/ParkzeitDataSet.xsc new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/Parkzeit/ParkzeitDataSet.xsc @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Parkzeit/ParkzeitDataSet.xsd b/Parkzeit/ParkzeitDataSet.xsd new file mode 100644 index 0000000..2092946 --- /dev/null +++ b/Parkzeit/ParkzeitDataSet.xsd @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + DELETE FROM `Parkzeiten` WHERE ((`ParkzeitID` = ?) AND ((? = 1 AND `Laufende_Nr` IS NULL) OR (`Laufende_Nr` = ?)) AND ((? = 1 AND `Von` IS NULL) OR (`Von` = ?)) AND ((? = 1 AND `Bis` IS NULL) OR (`Bis` = ?)) AND ((? = 1 AND `Dauer` IS NULL) OR (`Dauer` = ?)) AND ((? = 1 AND `Dauer_Minuten` IS NULL) OR (`Dauer_Minuten` = ?)) AND ((? = 1 AND `Kennzeichen` IS NULL) OR (`Kennzeichen` = ?))) + + + + + + + + + + + + + + + + + + + + INSERT INTO `Parkzeiten` (`Laufende_Nr`, `Von`, `Bis`, `Dauer`, `Dauer_Minuten`, `Kennzeichen`) VALUES (?, ?, ?, ?, ?, ?) + + + + + + + + + + + + + SELECT ParkzeitID, Laufende_Nr, Von, Bis, Dauer, Dauer_Minuten, Kennzeichen FROM Parkzeiten + + + + + + UPDATE `Parkzeiten` SET `Laufende_Nr` = ?, `Von` = ?, `Bis` = ?, `Dauer` = ?, `Dauer_Minuten` = ?, `Kennzeichen` = ? WHERE ((`ParkzeitID` = ?) AND ((? = 1 AND `Laufende_Nr` IS NULL) OR (`Laufende_Nr` = ?)) AND ((? = 1 AND `Von` IS NULL) OR (`Von` = ?)) AND ((? = 1 AND `Bis` IS NULL) OR (`Bis` = ?)) AND ((? = 1 AND `Dauer` IS NULL) OR (`Dauer` = ?)) AND ((? = 1 AND `Dauer_Minuten` IS NULL) OR (`Dauer_Minuten` = ?)) AND ((? = 1 AND `Kennzeichen` IS NULL) OR (`Kennzeichen` = ?))) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Parkzeit/ParkzeitDataSet.xss b/Parkzeit/ParkzeitDataSet.xss new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/Parkzeit/ParkzeitDataSet.xss @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Parkzeit/Resources/Logo_Waberer.jpg b/Parkzeit/Resources/Logo_Waberer.jpg new file mode 100644 index 0000000..0901eec Binary files /dev/null and b/Parkzeit/Resources/Logo_Waberer.jpg differ diff --git a/Parkzeit/Resources/Parkschild.ico b/Parkzeit/Resources/Parkschild.ico new file mode 100644 index 0000000..5341948 Binary files /dev/null and b/Parkzeit/Resources/Parkschild.ico differ diff --git a/Parkzeit/Resources/Versionsinfo.txt b/Parkzeit/Resources/Versionsinfo.txt new file mode 100644 index 0000000..599b02c --- /dev/null +++ b/Parkzeit/Resources/Versionsinfo.txt @@ -0,0 +1,24 @@ +Version 1.2.1 19.03.2015 (Luxbauer Andreas) +- Umstellung auf SQLConnection + +Version 1.2.0 11.12.2014 (Luxbauer Andreas) +- Anbindung SQL Server +- Bugfix Programmstart + +Version 1.1.0 19.10.2013 +NEU: Trennung der Abrechnung nach LKW-Kennzeichen +-Ungarn (die ersten drei Stellen sind Buchstaben) +-Rumänien (die erste oder zweite Stelle ist ein Buchstabe) +-Sonstige (die ersten beiden Stellen sind Ziffern) +KORREKTUR: Spaltengröße bei Gesamtsumme erweitert (ansonsten erfolgte Zeilenumbruch) + +Version 1.0.0 30.07.2013 +Freigabe des Programms für den Echtbetrieb + +Version 0.9.0 28.07.2013 +Beta-Version für erste Tests + +Neues Programm nach Vereinbarung mit Siener Josef am 22.07.2013 +Zweck: Erfassung und Berechnung der Parkzeiten für Waberer's LKWs + + diff --git a/Parkzeit/Resources/parkzeit.ico b/Parkzeit/Resources/parkzeit.ico new file mode 100644 index 0000000..03fae60 Binary files /dev/null and b/Parkzeit/Resources/parkzeit.ico differ diff --git a/Parkzeit/SelectQuery.vb b/Parkzeit/SelectQuery.vb new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/Parkzeit/SelectQuery.vb @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Parkzeit/cDatenbank.vb b/Parkzeit/cDatenbank.vb new file mode 100644 index 0000000..cca3b08 --- /dev/null +++ b/Parkzeit/cDatenbank.vb @@ -0,0 +1,281 @@ +Imports System.Data +'Imports System.Data.OleDb +'Imports System.IOSystem.Data.SqlClient.System.Data.SqlClient.SqlConnection +Imports Parkzeit.cMeineFunktionen +'Imports System.Data.SqlClient +'Using oConn As System.Data.System.Data.SqlClient.System.Data.SqlClient.SqlConnection = New System.Data.System.Data.SqlClient.System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("tps_write").ConnectionString()) + +Public Class cDatenbank + Public Shared Function GetNewOpenConnection() As System.Data.SqlClient.SqlConnection + Dim conn As New System.Data.SqlClient.SqlConnection + conn.ConnectionString = My.Resources.connectionString_PROD + conn.Open() + Return conn + End Function +End Class + +Public Class cOptionen + + Property OptionID As Integer + Property Kosten_je_Stunde As Double +End Class + +Public Class cOptionenDAL + Public Function LesenOptionen() As cOptionen + 'falls ID mitgegeben, dann diese laden, ansonsten den anderen Wert suchen + Dim sql As String = "SELECT * FROM Optionen WHERE OptionID = 0" + Dim daten As cOptionen = Nothing + + Try + Using conn As System.Data.SqlClient.SqlConnection = cDatenbank.GetNewOpenConnection() + Using cmd As New System.Data.SqlClient.SqlCommand(sql, conn) + Dim dr = cmd.ExecuteReader() + If dr.HasRows Then + dr.Read() + daten = New cOptionen() + Try + daten.OptionID = 0 + daten.Kosten_je_Stunde = VarToDbl(dr.Item("Kosten_je_Stunde")) + Catch ex As Exception + MsgBox("Fehler beim Einlesen der Optionen" & vbCrLf & vbCrLf & ex.Message, MsgBoxStyle.Exclamation) + End Try + End If + dr.Close() + End Using + End Using + Return daten + Catch ex As Exception + MsgBox("Fehler beim Lesen der Optionen:" & vbCrLf & vbCrLf & ex.Message, vbExclamation, "Datenbankfehler") + Return Nothing + End Try + End Function + + Public Sub SpeichernOptionen(ByVal d As cOptionen) + Dim hAuswahl As String = "" + + 'Änderung + hAuswahl = String.Format( + "UPDATE Optionen SET Kosten_je_Stunde = @Kosten_je_Stunde WHERE OptionID = 0", _ + d.Kosten_je_Stunde) + Dim sql = hAuswahl + Using conn As System.Data.SqlClient.SqlConnection = cDatenbank.GetNewOpenConnection() + Using cmd As New System.Data.SqlClient.SqlCommand(sql, conn) + cmd.Parameters.AddWithValue("@Kosten_je_Stunde", d.Kosten_je_Stunde) + Try + cmd.ExecuteNonQuery() + Catch ex As Exception + MsgBox("Optionen können nicht gespeichert werden!" & vbCrLf & vbCrLf & ex.Message, vbExclamation, "Fehler beim Speichern") + End Try + End Using + End Using + End Sub + +End Class + +Public Class cParkzeit + Property ParkzeitID As Integer + Property Von As Date + Property Bis As Date + Property Dauer As String + Property Dauer_Minuten As Integer + Property Kennzeichen As String + Property Laufende_Nr As Integer +End Class + +Public Class cParkzeitDruck + 'alle notwendigen Druckfelder - müssen immer String sein ! + Property ParkzeitID As String + Property Von As String + Property Bis As String + Property Dauer As String + Property Dauer_Minuten As String + Property Kennzeichen As String + Property Laufende_Nr As String + Property Kosten As String +End Class + +Public Class cParkzeitenDAL + + Public Function AnzeigeTabelle(hSQL As String) As DataTable + While True 'Endlosschleife; wird verlassen durch Return oder Application.Exit() + Try + Dim myTable = New DataTable() + Using conn As System.Data.SqlClient.SqlConnection = cDatenbank.GetNewOpenConnection() + Using cmd As New System.Data.SqlClient.SqlCommand(hSQL, conn) + Dim dr = cmd.ExecuteReader() + myTable.Load(dr) + dr.Close() + End Using + End Using + Return myTable 'While Schleife wird hier verlassen + Catch ex As Exception + Dim antwort As MsgBoxResult = MsgBox(ex.Message, CType(MsgBoxStyle.RetryCancel + MsgBoxStyle.Exclamation, MsgBoxStyle), + "Problem in Function 'AnzeigeTabelle'") + If antwort <> MsgBoxResult.Retry Then + 'Programm wird beendet + MsgBox("Programm wird aufgrund eines kritischen Problems beendet.", vbInformation) + Environment.Exit(0) + End If + End Try + End While + + Return Nothing + End Function + + Public Function LesenParkzeit(hID As Integer, hSQL As String) As cParkzeit + 'falls ID mitgegeben, dann diese laden, ansonsten den anderen Wert suchen + Dim sql As String + If hID > 0 Then + sql = "SELECT * FROM Parkzeiten WHERE ParkzeitID = " & hID + Else + sql = hSQL + End If + + Dim daten As cParkzeit = Nothing + Try + Using conn As System.Data.SqlClient.SqlConnection = cDatenbank.GetNewOpenConnection() + Using cmd As New System.Data.SqlClient.SqlCommand(sql, conn) + Dim dr = cmd.ExecuteReader() + If dr.HasRows Then + dr.Read() + daten = New cParkzeit() + daten.ParkzeitID = VarToInt(dr.Item("ParkzeitID")) + daten.Von = CDate(dr.Item("Von")) + daten.Bis = CDate(dr.Item("Bis")) + daten.Dauer = VarToStr(dr.Item("Dauer")) + daten.Dauer_Minuten = VarToInt(dr.Item("Dauer_Minuten")) + daten.Kennzeichen = VarToStr(dr.Item("Kennzeichen")) + daten.Laufende_Nr = VarToInt(dr.Item("Laufende_Nr")) + End If + dr.Close() + End Using + End Using + Return daten + Catch ex As Exception + MsgBox("Fehler bei LesenParkzeit: " & ex.Message) + Return Nothing + End Try + End Function + + Public Sub SpeichernParkzeit(ByVal d As cParkzeit) + Dim hAuswahl As String + If d.ParkzeitID = 0 Then + 'Neuanlage + hAuswahl = "INSERT INTO Parkzeiten " & + "(Von, Bis, Dauer, Dauer_Minuten, Kennzeichen, Laufende_Nr) VALUES " & + "(@Von, @Bis, @Dauer, @Dauer_Minuten, @Kennzeichen, @Laufende_Nr)" + Else + 'Änderung + hAuswahl = String.Format( + "UPDATE Parkzeiten SET Von = @Von, Bis = @Bis, Dauer = @Dauer, Dauer_Minuten = @Dauer_Minuten, Kennzeichen = @Kennzeichen, Laufende_Nr = @Laufende_Nr " & + " WHERE ParkzeitID = @ParkzeitID", _ + d.Von, d.Bis, d.Dauer, d.Dauer_Minuten, d.Kennzeichen, d.Laufende_Nr, d.ParkzeitID) + End If + + + Dim sql = hAuswahl + Using conn As System.Data.SqlClient.SqlConnection = cDatenbank.GetNewOpenConnection() + Using cmd As New System.Data.SqlClient.SqlCommand(sql, conn) + cmd.Parameters.AddWithValue("@Von", SQLDatumZeitWithOutSemi(d.Von)) + cmd.Parameters.AddWithValue("@Bis", SQLDatumZeitWithOutSemi(d.Bis)) + cmd.Parameters.AddWithValue("@Dauer", d.Dauer) + cmd.Parameters.AddWithValue("@Dauer_Minuten", d.Dauer_Minuten) + cmd.Parameters.AddWithValue("@Kennzeichen", d.Kennzeichen) + cmd.Parameters.AddWithValue("@Laufende_Nr", d.Laufende_Nr) + If Not d.ParkzeitID = 0 Then cmd.Parameters.AddWithValue("@ParkzeitID", d.ParkzeitID) + + + Try + cmd.ExecuteNonQuery() + Catch ex As Exception + MsgBox("Datensatz kann nicht gespeichert werden!" & vbCrLf & vbCrLf & ex.Message, vbExclamation, "Fehler beim Speichern Parkzeit") + End Try + End Using + End Using + + End Sub + + Public Sub LöschenParkZeit(ByVal hID As Integer) + Dim sql As String = "DELETE FROM Parkzeiten WHERE ParkzeitID = " & hID + Using conn As System.Data.SqlClient.SqlConnection = cDatenbank.GetNewOpenConnection() + Using cmd As New System.Data.SqlClient.SqlCommand(sql, conn) + Try + cmd.ExecuteNonQuery() + Catch ex As Exception + MsgBox("Datensatz kann nicht gelöscht werden!" & vbCrLf & vbCrLf & ex.Message, vbExclamation, "Fehler beim Löschen") + End Try + End Using + End Using + End Sub + + Public Function LeseDatenFürExport(hSQL As String, hDatei As String) As Long + + Dim anz As Long + Dim textFile As IO.StreamWriter = IO.File.CreateText(hDatei) + + 'Spaltenüberschriften + Dim x As String = "Laufende_Nr;Einfahrt;Ausfahrt;Kennzeichen;Dauer;Dauer_Minuten" + textFile.WriteLine(x) + + Using conn As System.Data.SqlClient.SqlConnection = cDatenbank.GetNewOpenConnection() + + Using cmd As New System.Data.SqlClient.SqlCommand(hSQL, conn) + Dim dr = cmd.ExecuteReader() + If dr.HasRows Then + While dr.Read() + x = "" + x &= VarToInt(dr.Item("Laufende_Nr")).ToString & ";" + x &= Format(CDate(VarToDate(dr.Item("Von"))), "yyyy.MM.dd HH:mm") & ";" + x &= Format(CDate(VarToDate(dr.Item("Bis"))), "yyyy.MM.dd HH:mm") & ";" + x &= VarToStr(dr.Item("Kennzeichen")) & ";" + x &= VarToStr(dr.Item("Dauer")) & "h;" + x &= VarToInt(dr.Item("Dauer_Minuten")) + textFile.WriteLine(x) + anz += 1 + End While + End If + dr.Close() + End Using + End Using + + textFile.Close() + + Return anz 'Anzahl retour geben + End Function + + Public Function LeseParkzeitenFürDruck(hSQL As String, hKosten As Double) As List(Of cParkzeitDruck) + 'Dim sql As String + 'sql = "SELECT * FROM Bilanzen, Bilanzarten, Kunden WHERE (Kunden.Sachbear = 'STW' OR Kunden.Sachbear = 'GRO') AND Bilanzarten.BilanzartID = Bilanzen.BilanzartID AND Kunden.KundeID = Bilanzen.KundeID" + + 'MsgBox("SQL:" & vbCrLf & hSQL) + + Dim datenListe As List(Of cParkzeitDruck) = New List(Of cParkzeitDruck) + Dim datensatz As cParkzeitDruck + + Using conn As System.Data.SqlClient.SqlConnection = cDatenbank.GetNewOpenConnection() + + Using cmd As New System.Data.SqlClient.SqlCommand(hSQL, conn) + Dim dr = cmd.ExecuteReader() + If (dr.HasRows) Then + While dr.Read() + datensatz = New cParkzeitDruck() + datensatz.ParkzeitID = VarToInt(dr.Item("ParkzeitID")).ToString + datensatz.Von = Format(CDate(dr.Item("Von")), "dd.MM.yyyy HH:mm") + datensatz.Bis = Format(CDate(dr.Item("Bis")), "dd.MM.yyyy HH:mm") + datensatz.Dauer = VarToStr(dr.Item("Dauer")) + datensatz.Dauer_Minuten = VarToStr(dr.Item("Dauer_Minuten")) + datensatz.Kennzeichen = VarToStr(dr.Item("Kennzeichen")) + datensatz.Laufende_Nr = VarToInt(dr.Item("Laufende_Nr")).ToString + datensatz.Kosten = "" 'Berechnung pro Eintrag notwendig/sinnvoll? + datenListe.Add(datensatz) + End While + End If + dr.Close() + End Using + End Using + + + Return datenListe + End Function + +End Class diff --git a/Parkzeit/cGlobal.vb b/Parkzeit/cGlobal.vb new file mode 100644 index 0000000..5719bab --- /dev/null +++ b/Parkzeit/cGlobal.vb @@ -0,0 +1,14 @@ +'Imports System.Data.OleDb + +'Public Class cGlobal +' 'Public Shared ConnStr As String +' Public Shared AufrufenderProzess As AufrufenderProzess +' Public Shared Aktive_ID As Integer +' Public Shared Optionen As New cOptionen +' Public Shared AngemeldeterUser As String +'End Class + +'Public Enum AufrufenderProzess +' Programm1 = 1 +' Programm2 = 2 +'End Enum diff --git a/Parkzeit/cMeineFunktionen.vb b/Parkzeit/cMeineFunktionen.vb new file mode 100644 index 0000000..45d9706 --- /dev/null +++ b/Parkzeit/cMeineFunktionen.vb @@ -0,0 +1,167 @@ +Public Class cMeineFunktionen + 'Diese Klasse beinhaltet alle meine Funktionen, die in allen Projekten verwendet werden können + + Public Const LeerDatum As Date = #12/30/1899# 'wird als leerer Datumswert verwendet, da sonst Probleme bei Null/Date + + Public Shared Function SQLDatum(dat As Date) As String + 'Datum für SQLAbfrage umwandeln (31.01.1998 --> #1/31/1998#) + SQLDatum = "" + + If Not IsDate(dat) Then Exit Function + SQLDatum = "'" & DateAndTime.Day(dat) & "." & DateAndTime.Month(dat) & "." & DateAndTime.Year(dat) & " 00:00:00'" + 'SQLDatum = dat.ToString + End Function + + Public Shared Function SQLDatumWithOutSemi(dat As Date) As String + 'Datum für SQLAbfrage umwandeln (31.01.1998 --> #1/31/1998#) + SQLDatumWithOutSemi = "" + + If Not IsDate(dat) Then Exit Function + SQLDatumWithOutSemi = "" & DateAndTime.Day(dat) & "." & DateAndTime.Month(dat) & "." & DateAndTime.Year(dat) & " 00:00:00" + 'SQLDatum = dat.ToString + End Function + + Public Shared Function SQLDatumZeit(dat As Date) As String + 'Datum inklusive Zeit für SQLAbfrage umwandeln (31.01.1998 10:15 Uhr --> #1/31/1998 10:15:00#) + SQLDatumZeit = "" + + + If Not IsDate(dat) Then Exit Function + SQLDatumZeit = "'" & DateAndTime.Day(dat) & "." & DateAndTime.Month(dat) & "." & DateAndTime.Year(dat) & " " & + DateAndTime.Hour(dat) & ":" & DateAndTime.Minute(dat) & ":" & DateAndTime.Second(dat) & "'" + + + End Function + + + Public Shared Function SQLDatumZeitWithOutSemi(dat As Date) As String + 'Datum inklusive Zeit für SQLAbfrage umwandeln (31.01.1998 10:15 Uhr --> #1/31/1998 10:15:00#) + SQLDatumZeitWithOutSemi = "" + + + If Not IsDate(dat) Then Exit Function + SQLDatumZeitWithOutSemi = "" & DateAndTime.Day(dat) & "." & DateAndTime.Month(dat) & "." & DateAndTime.Year(dat) & " " & + DateAndTime.Hour(dat) & ":" & DateAndTime.Minute(dat) & ":" & DateAndTime.Second(dat) & "" + + + End Function + + Public Shared Function GetProgrammIcon() As Drawing.Icon + Return My.Resources.Parkschild + End Function + + Public Shared Function VarToInt(ByVal wert As Object) As Integer + Try + If wert Is Nothing OrElse wert Is DBNull.Value Then + Return 0 + Else + Return CInt(wert) + End If + Catch generatedExceptionName As Exception + Return 0 + End Try + End Function + + Public Shared Function VarToLng(ByVal wert As Object) As Long + Try + If wert Is Nothing OrElse wert Is DBNull.Value Then + Return 0 + Else + Return CLng(wert) + End If + Catch generatedExceptionName As Exception + Return 0 + End Try + End Function + + Public Shared Function VarToDbl(ByVal wert As Object) As Double + Try + If wert Is Nothing OrElse wert Is DBNull.Value Then + Return 0 + Else + Return CDbl(wert) + End If + Catch generatedExceptionName As Exception + Return 0 + End Try + End Function + + Public Shared Function VarToBool(ByVal wert As Object) As Boolean + Try + If wert Is Nothing OrElse wert Is DBNull.Value Then + Return False + Else + Return CBool(wert) + End If + Catch generatedExceptionName As Exception + Return False + End Try + End Function + + Public Shared Function VarToStr(ByVal wert As Object) As String + Try + If wert Is Nothing OrElse wert Is DBNull.Value Then + Return "" + Else + Return Trim(DirectCast(wert, String)) + End If + Catch generatedExceptionName As Exception + Return "" + End Try + End Function + + Public Shared Function VarToDate(ByVal wert As Object) As Nullable(Of DateTime) + Try + If wert Is Nothing OrElse wert Is DBNull.Value Then + Return LeerDatum 'Nothing + Else + Return DirectCast(wert, DateTime) + End If + Catch generatedExceptionName As Exception + Return Nothing + End Try + End Function + + Public Shared Function IstGleich(i As Integer, ParamArray list As Integer()) As Boolean + 'prüft, ob ein Wert in einer Liste enthalten ist - z.B. i = 5 or 7 or 11 or 29 + For x As Integer = 0 To list.Length - 1 + If list(x) = i Then + Return True + End If + On Error Resume Next + Next + Return False + End Function + + Public Shared Function Minuten_auf_Text(hMinuten As Long) As String + Dim hStunden As Long + Dim hMinus As Boolean + Dim hMin As Long + + Minuten_auf_Text = "" + hMin = hMinuten + + If hMin = 0 Then + Minuten_auf_Text = "0:00" + Exit Function + End If + + If hMin < 0 Then + hMinus = True + hMin = hMin * -1 + End If + + hStunden = CLng(Fix(hMin / 60)) + hMin = hMin - (hStunden * 60) + If hMinus Then Minuten_auf_Text = "-" 'Minus wird nur bei Stunden angezeigt + Minuten_auf_Text = Minuten_auf_Text & hStunden & ":" & Format(hMin, "00") + End Function + + Public Shared Function ZeitInMinuten(hDat As Date) As Long + ZeitInMinuten = 0 + If Not IsDate(hDat) Then Exit Function + ZeitInMinuten = Hour(hDat) * 60 + Minute(hDat) + End Function + + +End Class diff --git a/Parkzeit/frmAuswahl_Abrechnung.designer.vb b/Parkzeit/frmAuswahl_Abrechnung.designer.vb new file mode 100644 index 0000000..261d6f5 --- /dev/null +++ b/Parkzeit/frmAuswahl_Abrechnung.designer.vb @@ -0,0 +1,234 @@ + _ +Partial Class frmAuswahl_Abrechnung + Inherits System.Windows.Forms.Form + + 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Wird vom Windows Form-Designer benötigt. + Private components As System.ComponentModel.IContainer + + 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. + 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. + 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. + _ + Private Sub InitializeComponent() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmAuswahl_Abrechnung)) + Me.btnDruck = New System.Windows.Forms.Button() + Me.btnAbbruch = New System.Windows.Forms.Button() + Me.txtKosten = New System.Windows.Forms.TextBox() + Me.Label1 = New System.Windows.Forms.Label() + Me.dtpBis = New System.Windows.Forms.DateTimePicker() + Me.dtpVon = New System.Windows.Forms.DateTimePicker() + Me.Label4 = New System.Windows.Forms.Label() + Me.Label6 = New System.Windows.Forms.Label() + Me.btnCheck = New System.Windows.Forms.Button() + Me.btnExport = New System.Windows.Forms.Button() + Me.optAlle = New System.Windows.Forms.RadioButton() + Me.Label2 = New System.Windows.Forms.Label() + Me.optUngarn = New System.Windows.Forms.RadioButton() + Me.optRumänien = New System.Windows.Forms.RadioButton() + Me.optSonstige = New System.Windows.Forms.RadioButton() + Me.SuspendLayout() + ' + 'btnDruck + ' + Me.btnDruck.Location = New System.Drawing.Point(94, 285) + Me.btnDruck.Name = "btnDruck" + Me.btnDruck.Size = New System.Drawing.Size(80, 40) + Me.btnDruck.TabIndex = 7 + Me.btnDruck.Text = "Drucken" + Me.btnDruck.UseVisualStyleBackColor = True + ' + 'btnAbbruch + ' + Me.btnAbbruch.Location = New System.Drawing.Point(202, 285) + Me.btnAbbruch.Name = "btnAbbruch" + Me.btnAbbruch.Size = New System.Drawing.Size(80, 40) + Me.btnAbbruch.TabIndex = 8 + Me.btnAbbruch.Text = "Schließen" + Me.btnAbbruch.UseVisualStyleBackColor = True + ' + 'txtKosten + ' + Me.txtKosten.Location = New System.Drawing.Point(152, 74) + Me.txtKosten.MaxLength = 11 + Me.txtKosten.Name = "txtKosten" + Me.txtKosten.Size = New System.Drawing.Size(43, 20) + Me.txtKosten.TabIndex = 2 + Me.txtKosten.TextAlign = System.Windows.Forms.HorizontalAlignment.Right + ' + 'Label1 + ' + Me.Label1.AutoSize = True + Me.Label1.Location = New System.Drawing.Point(38, 77) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(108, 13) + Me.Label1.TabIndex = 5 + Me.Label1.Text = "Kosten in € je Stunde" + ' + 'dtpBis + ' + Me.dtpBis.Format = System.Windows.Forms.DateTimePickerFormat.[Short] + Me.dtpBis.Location = New System.Drawing.Point(246, 35) + Me.dtpBis.Name = "dtpBis" + Me.dtpBis.Size = New System.Drawing.Size(93, 20) + Me.dtpBis.TabIndex = 1 + ' + 'dtpVon + ' + Me.dtpVon.Format = System.Windows.Forms.DateTimePickerFormat.[Short] + Me.dtpVon.Location = New System.Drawing.Point(121, 35) + Me.dtpVon.Name = "dtpVon" + Me.dtpVon.Size = New System.Drawing.Size(93, 20) + Me.dtpVon.TabIndex = 0 + ' + 'Label4 + ' + Me.Label4.AutoSize = True + Me.Label4.Location = New System.Drawing.Point(220, 38) + Me.Label4.Name = "Label4" + Me.Label4.Size = New System.Drawing.Size(20, 13) + Me.Label4.TabIndex = 25 + Me.Label4.Text = "bis" + ' + 'Label6 + ' + Me.Label6.AutoSize = True + Me.Label6.Location = New System.Drawing.Point(38, 38) + Me.Label6.Name = "Label6" + Me.Label6.Size = New System.Drawing.Size(77, 13) + Me.Label6.TabIndex = 26 + Me.Label6.Text = "Datum Einfahrt" + ' + 'btnCheck + ' + Me.btnCheck.Location = New System.Drawing.Point(208, 68) + Me.btnCheck.Name = "btnCheck" + Me.btnCheck.Size = New System.Drawing.Size(80, 30) + Me.btnCheck.TabIndex = 3 + Me.btnCheck.TabStop = False + Me.btnCheck.Text = "Check" + Me.btnCheck.UseVisualStyleBackColor = True + ' + 'btnExport + ' + Me.btnExport.Location = New System.Drawing.Point(208, 104) + Me.btnExport.Name = "btnExport" + Me.btnExport.Size = New System.Drawing.Size(80, 30) + Me.btnExport.TabIndex = 6 + Me.btnExport.TabStop = False + Me.btnExport.Text = "Export" + Me.btnExport.UseVisualStyleBackColor = True + ' + 'optAlle + ' + Me.optAlle.AutoSize = True + Me.optAlle.Location = New System.Drawing.Point(78, 166) + Me.optAlle.Name = "optAlle" + Me.optAlle.Size = New System.Drawing.Size(73, 17) + Me.optAlle.TabIndex = 3 + Me.optAlle.TabStop = True + Me.optAlle.Text = "alle LKWs" + Me.optAlle.UseVisualStyleBackColor = True + ' + 'Label2 + ' + Me.Label2.AutoSize = True + Me.Label2.Location = New System.Drawing.Point(38, 150) + Me.Label2.Name = "Label2" + Me.Label2.Size = New System.Drawing.Size(75, 13) + Me.Label2.TabIndex = 5 + Me.Label2.Text = "Druckauswahl" + ' + 'optUngarn + ' + Me.optUngarn.AutoSize = True + Me.optUngarn.Location = New System.Drawing.Point(78, 189) + Me.optUngarn.Name = "optUngarn" + Me.optUngarn.Size = New System.Drawing.Size(60, 17) + Me.optUngarn.TabIndex = 4 + Me.optUngarn.TabStop = True + Me.optUngarn.Text = "Ungarn" + Me.optUngarn.UseVisualStyleBackColor = True + ' + 'optRumänien + ' + Me.optRumänien.AutoSize = True + Me.optRumänien.Location = New System.Drawing.Point(78, 212) + Me.optRumänien.Name = "optRumänien" + Me.optRumänien.Size = New System.Drawing.Size(73, 17) + Me.optRumänien.TabIndex = 5 + Me.optRumänien.TabStop = True + Me.optRumänien.Text = "Rumänien" + Me.optRumänien.UseVisualStyleBackColor = True + ' + 'optSonstige + ' + Me.optSonstige.AutoSize = True + Me.optSonstige.Location = New System.Drawing.Point(78, 235) + Me.optSonstige.Name = "optSonstige" + Me.optSonstige.Size = New System.Drawing.Size(96, 17) + Me.optSonstige.TabIndex = 6 + Me.optSonstige.TabStop = True + Me.optSonstige.Text = "sonstige LKWs" + Me.optSonstige.UseVisualStyleBackColor = True + ' + 'frmAuswahl_Abrechnung + ' + Me.AcceptButton = Me.btnDruck + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(376, 362) + Me.Controls.Add(Me.optSonstige) + Me.Controls.Add(Me.optRumänien) + Me.Controls.Add(Me.optUngarn) + Me.Controls.Add(Me.optAlle) + Me.Controls.Add(Me.btnExport) + Me.Controls.Add(Me.btnCheck) + Me.Controls.Add(Me.dtpBis) + Me.Controls.Add(Me.dtpVon) + Me.Controls.Add(Me.Label4) + Me.Controls.Add(Me.Label6) + Me.Controls.Add(Me.txtKosten) + Me.Controls.Add(Me.btnAbbruch) + Me.Controls.Add(Me.Label2) + Me.Controls.Add(Me.Label1) + Me.Controls.Add(Me.btnDruck) + Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog + Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) + Me.KeyPreview = True + Me.MaximizeBox = False + Me.MinimizeBox = False + Me.Name = "frmAuswahl_Abrechnung" + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent + Me.Text = "Druckauswahl Abrechnung" + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + Friend WithEvents btnDruck As System.Windows.Forms.Button + Friend WithEvents btnAbbruch As System.Windows.Forms.Button + Friend WithEvents txtKosten As System.Windows.Forms.TextBox + Friend WithEvents Label1 As System.Windows.Forms.Label + Friend WithEvents dtpBis As System.Windows.Forms.DateTimePicker + Friend WithEvents dtpVon As System.Windows.Forms.DateTimePicker + Friend WithEvents Label4 As System.Windows.Forms.Label + Friend WithEvents Label6 As System.Windows.Forms.Label + Friend WithEvents btnCheck As System.Windows.Forms.Button + Friend WithEvents btnExport As System.Windows.Forms.Button + Friend WithEvents optAlle As System.Windows.Forms.RadioButton + Friend WithEvents Label2 As System.Windows.Forms.Label + Friend WithEvents optUngarn As System.Windows.Forms.RadioButton + Friend WithEvents optRumänien As System.Windows.Forms.RadioButton + Friend WithEvents optSonstige As System.Windows.Forms.RadioButton +End Class diff --git a/Parkzeit/frmAuswahl_Abrechnung.resx b/Parkzeit/frmAuswahl_Abrechnung.resx new file mode 100644 index 0000000..8509690 --- /dev/null +++ b/Parkzeit/frmAuswahl_Abrechnung.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAICAAAAEAGACoDAAAFgAAACgAAAAgAAAAQAAAAAEAGAAAAAAAgAwAAMQOAADEDgAAAAAAAAAA + AABmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwB0SSb////3 + 9fR0SSZmMwCjjH3///////////////+YfWvBs6r///90SSajjH3///+tmo23p5z///+AXUJmMwDUy8X3 + 9fRmMwCYfWv39fT////m4N3///9mMwBmMwBmMwCYfWv////39fS3p5xmMwB0SSb////Bs6pmMwBmMwBm + MwCtmo3///+MbljLv7j39fRmMwBmMwDm4N3////////////Uy8VmMwDm4N3m4N2MbljBs6r///+Mblhm + MwBmMwC3p5z///+tmo3///+AXUJmMwD39fT///////////+AXUKMblj////////////39fS3p5xmMwCY + fWv///+Mblj////Bs6pmMwDu6+nUy8W3p5z///////+tmo1mMwBmMwDLv7j39fRmMwDd1tHLv7hmMwDU + y8X39fRmMwBmMwBmMwBmMwD39fTLv7hmMwDLv7j///90SSZmMwDUy8Xm4N3///+jjH1mMwDBs6r///+M + bliYfWv///+3p5xmMwBmMwDm4N3m4N1mMwCAXUL///+Mbli3p5z///////////////90SSbm4N3///// + ///////Lv7hmMwBmMwCAXUL///////+MblhmMwBmMwDUy8X////////m4N10SSZmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwD///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////Bs6rBs6rBs6rBs6r///////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////+AXUJmMwBmMwBmMwD///////////////////////////////////////////////////// + //////////////////////////////////////////////////////////+AXUJmMwBmMwBmMwD///// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////+AXUJmMwBmMwBmMwD///////////////////////////////////// + //////////////////////////////////////////////////////////////////////////+AXUJm + MwBmMwBmMwDBs6rBs6rBs6rBs6rBs6r///////////////////////////////////////////////// + //////////////////////////////////////////+AXUJmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwDUy8X///////////////////////////////////////////////////////////////////////// + //////////+AXUJmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwDd1tH///////////////////// + //////////////////////////////////////////////////////////+AXUJmMwBmMwCAXUL///// + //////+YfWtmMwBmMwBmMwC3p5z///////////////////////////////////////////////////// + //////////////////////////+AXUJmMwBmMwCAXUL////////////Lv7hmMwBmMwBmMwCtmo3///// + //////////////////////////////////////////////////////////////////////////+AXUJm + MwBmMwB0SSbBs6rBs6q3p5xmMwBmMwBmMwBmMwDBs6r///////////////////////////////////// + //////////////////////////////////////////+AXUJmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwCMblj39fT///////////////////////////////////////////////////////////////////// + //////////+AXUJmMwBmMwBmMwBmMwBmMwBmMwBmMwB0SSbBs6r///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + + \ No newline at end of file diff --git a/Parkzeit/frmAuswahl_Abrechnung.vb b/Parkzeit/frmAuswahl_Abrechnung.vb new file mode 100644 index 0000000..4c4cb12 --- /dev/null +++ b/Parkzeit/frmAuswahl_Abrechnung.vb @@ -0,0 +1,169 @@ +Imports Parkzeit.cMeineFunktionen +Imports System.Data.OleDb +Imports System.Data.SqlClient + +Public Class frmAuswahl_Abrechnung + + Private Sub frmAuswahl_Abrechnung_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown + 'Escape händisch abfangen und auf Abbruch-Taste legen + If e.KeyCode = Keys.Escape Then + btnAbbruch.PerformClick() + End If + End Sub + + Private Sub frmAuswahl_Abrechnung_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load + Me.CenterToParent() + + 'Vorschlagswerte setzen + dtpVon.Value = DateSerial(Now.Date.AddMonths(-1).Year, Now.Date.AddMonths(-1).Month, 1) + dtpBis.Value = dtpVon.Value.AddMonths(1).AddDays(-1) + + txtKosten.Text = Format(frmMain.Optionen.Kosten_je_Stunde, "#0.00") + + optAlle.Checked = True + End Sub + + Private Sub btnAbbruch_Click(sender As System.Object, e As System.EventArgs) Handles btnAbbruch.Click + 'Fenster schließen + Me.Close() + End Sub + + Private Sub txtFeld_GotFocus(sender As Object, e As System.EventArgs) Handles txtKosten.GotFocus + 'txtBilanzart.SelectAll() + CType(sender, TextBox).SelectAll() + End Sub + + 'Private Sub txtKosten_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtKosten.KeyPress + ' 'Es sind nur Zahleneingaben erlaubt + ' Dim asc As Integer = Convert.ToInt32(e.KeyChar) + ' Select Case asc + ' 'Folgende Tasten sind erlaubt + ' '8 = Rücktaste (Back) + ' '13 = Enter + ' '27 = Esc + ' '48 To 57 = 0 bis 9 + ' Case 8, 13, 27, 48 To 57 + ' Case Else + ' e.Handled = True + ' End Select + 'End Sub + + Private Sub btnDruck_Click(sender As System.Object, e As System.EventArgs) Handles btnDruck.Click, btnCheck.Click + Dim hSummeZeit As Integer + Dim hAnzahl As Integer + Dim hKosten As Double + + 'Logische Prüfungen vor dem Drucken + If dtpBis.Value < dtpVon.Value Then + MsgBox("Bis-Datum muß größer/gleich dem Von-Datum sein.", vbInformation) + dtpBis.Focus() + Exit Sub + End If + + If VarToDbl(txtKosten.Text) = 0 Then + MsgBox("Bitte einen gültigen Kostensatz eingeben.", vbInformation) + txtKosten.Focus() + Exit Sub + End If + + 'Zusammenbau der SQL-Abfrage + Dim hSQL As String = "SELECT * FROM Parkzeiten WHERE Von >= " & SQLDatum(dtpVon.Value) & " AND Von <= " & SQLDatum(dtpBis.Value.AddDays(1)) + + Dim hauswahl As String = "Auswahl: " + + + If optUngarn.Checked Then + hSQL += " AND (((Left(CAST(Kennzeichen AS varchar),1))>='A' And (Left(CAST(Kennzeichen AS varchar),1))<='Z') AND ((right(left(CAST(Kennzeichen AS varchar),2),1))>='A' And (right(left(CAST(Kennzeichen AS varchar),2),1))<='Z') " & + "AND ((right(left(CAST(Kennzeichen AS varchar),3),1))>='A' And (right(left(CAST(Kennzeichen AS varchar),3),1))<='Z'))" + 'hSQL += " AND Left(CAST(Kennzeichen AS varchar),1)>='A' " + hauswahl += "ungarische LKWs" + ElseIf optRumänien.Checked Then + hSQL += " AND (((Parkzeiten.Von)>=" & SQLDatum(dtpVon.Value) & " And (Parkzeiten.Von)<=" & SQLDatum(dtpBis.Value) & + ") AND ((Left(CAST(Kennzeichen AS varchar),1))>='A' And (Left(CAST(Kennzeichen AS varchar),1))<='Z') AND ((right(left(CAST(Kennzeichen AS varchar),2),1))>='0' And " & + "(right(left(CAST(Kennzeichen AS varchar),2),1))<='9')) OR (((Parkzeiten.Von)>=" & SQLDatum(dtpVon.Value) & " And (Parkzeiten.Von)<=" & + SQLDatum(dtpBis.Value) & ") AND ((Left(CAST(Kennzeichen AS varchar),1))>='0' And (Left(CAST(Kennzeichen AS varchar),1))<='9') AND " & + "((right(left(CAST(Kennzeichen AS varchar),2),1))>='A' And (right(left(CAST(Kennzeichen AS varchar),2),1))<='Z')) OR (((Parkzeiten.Von)>=" & SQLDatum(dtpVon.Value) & + " And (Parkzeiten.Von)<=" & SQLDatum(dtpBis.Value) & ") AND ((Left(CAST(Kennzeichen AS varchar),1))>='A' And (Left(CAST(Kennzeichen AS varchar),1))<='Z') " & + "AND ((right(left(CAST(Kennzeichen AS varchar),3),1))>='0' And (right(left(CAST(Kennzeichen AS varchar),3),1))<='9') AND ((right(left(CAST(Kennzeichen AS varchar),2),1))>='A' And " & + "(right(left(CAST(Kennzeichen AS varchar),2),1))<='Z')) OR (((Parkzeiten.Von)>=" & SQLDatum(dtpVon.Value) & " And (Parkzeiten.Von)<=" & + SQLDatum(dtpBis.Value) & ") AND ((Left(CAST(Kennzeichen AS varchar),1))>='0' And (Left(CAST(Kennzeichen AS varchar),1))<='9') AND " & + "((right(left(CAST(Kennzeichen AS varchar),3),1))>='A' And (right(left(CAST(Kennzeichen AS varchar),3),1))<='Z') AND ((right(left(CAST(Kennzeichen AS varchar),2),1))>='A' And " & + "(right(left(CAST(Kennzeichen AS varchar),2),1))<='Z'))" + hauswahl += "rumänische LKWs" + ElseIf optSonstige.Checked Then + hSQL += " AND (((Left(CAST(Kennzeichen AS varchar),1))>='0' And (Left(CAST(Kennzeichen AS varchar),1))<='9') AND ((right(left(CAST(Kennzeichen AS varchar),2),1))>='0' And (right(left(CAST(Kennzeichen AS varchar),2),1))<='9'))" + hauswahl += "sonstige LKWs" + Else + hauswahl += "alle" + End If + + hSQL += " ORDER BY Laufende_Nr" + + + hSummeZeit = 0 + hAnzahl = 0 + Using conn As SqlConnection = cDatenbank.GetNewOpenConnection() + Using cmd As New SqlCommand(hSQL, conn) + Dim dr = cmd.ExecuteReader() 'AL: ERR + If Not IsNothing(dr) Then + While dr.Read() + hSummeZeit += VarToInt(dr.Item("Dauer_Minuten")) + hAnzahl += 1 + End While + End If + End Using + End Using + + 'If hSummeZeit Mod 60 = 0 Then + 'hSummeZeit = CInt(Fix(hSummeZeit / 60)) 'umgerechnet auf Stunden + 'Else + 'hSummeZeit = CInt(Fix(hSummeZeit / 60) + 1) 'umgerechnet auf Stunden + Aufrundung auf nächste volle Stunde + 'End If + + hKosten = hSummeZeit / 60 * VarToDbl(txtKosten.Text.Trim) + + + Dim hGesamtdauer As String = Minuten_auf_Text(hSummeZeit) + Dim hGesamtkosten As String = Format(hKosten, "€ #,##0.00") + + 'Check gedrückt -> es wird nur eine Messagebox angezeigt + If sender Is btnCheck Then + + + MsgBox("Für diesen Zeitraum fallen folgende Werte an: " & vbCrLf & vbCrLf & + "Anzahl LKWs: " & hAnzahl & vbCrLf & + "Summe Stunden: " & hGesamtdauer & vbCrLf & + "Kosten: " & hGesamtkosten) + + Exit Sub + End If + + hauswahl += "; " & Format(dtpVon.Value, "dd.MM.yyyy") & " bis " & + Format(dtpBis.Value, "dd.MM.yyyy") & " / Kosten je Stunde: € " & Format(VarToDbl(txtKosten.Text), "#0.00") + + Dim Auswertung As New frmDruckansicht + Dim Parkzeiten = New cParkzeitenDAL + Auswertung.BefüllenAbrechnung("Auswertung Parkzeiten Waberer's LKWs", Parkzeiten.LeseParkzeitenFürDruck(hSQL, VarToDbl(txtKosten.Text)), hauswahl, hGesamtdauer, hGesamtkosten) + Auswertung.Show() + + End Sub + + Private Sub btnExport_Click(sender As System.Object, e As System.EventArgs) Handles btnExport.Click + Me.Cursor = Cursors.WaitCursor + btnAbbruch.Visible = False + btnCheck.Visible = False + + 'Zusammenbau der SQL-Abfrage + Dim hSQL As String = "SELECT * FROM Parkzeiten WHERE Von >= " & SQLDatum(dtpVon.Value) & " AND Von <= " & SQLDatum(dtpBis.Value.AddDays(1)) + hSQL += " ORDER BY Laufende_Nr" + Dim hDatei As String = Application.StartupPath & "\Parkzeiten_Abrechnung_per_" & Format(Now, "yyyy_MM_dd_HH_mm") & ".csv" + Dim hExport As New cParkzeitenDAL + Dim hanz As Long = hExport.LeseDatenFürExport(hSQL, hDatei) + + MsgBox("Es wurden " & hanz & " Sätze in die Datei '" & hDatei & "' exportiert.", vbInformation, "Export Parkzeiten") + + Me.Cursor = Cursors.Default + btnAbbruch.Visible = True + btnCheck.Visible = True + End Sub +End Class diff --git a/Parkzeit/frmDruckansicht.designer.vb b/Parkzeit/frmDruckansicht.designer.vb new file mode 100644 index 0000000..5c922b0 --- /dev/null +++ b/Parkzeit/frmDruckansicht.designer.vb @@ -0,0 +1,54 @@ + _ +Partial Class frmDruckansicht + Inherits System.Windows.Forms.Form + + 'Form overrides dispose to clean up the component list. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + _ + Private Sub InitializeComponent() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmDruckansicht)) + Me.ReportViewer1 = New Microsoft.Reporting.WinForms.ReportViewer() + Me.SuspendLayout() + ' + 'ReportViewer1 + ' + Me.ReportViewer1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.ReportViewer1.Location = New System.Drawing.Point(0, 0) + Me.ReportViewer1.Name = "ReportViewer1" + Me.ReportViewer1.ShowFindControls = False + Me.ReportViewer1.Size = New System.Drawing.Size(1185, 913) + Me.ReportViewer1.TabIndex = 0 + ' + 'frmDruckansicht + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(1184, 912) + Me.Controls.Add(Me.ReportViewer1) + Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) + Me.Name = "frmDruckansicht" + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen + Me.Text = "Auswertung" + Me.ResumeLayout(False) + + End Sub + Private WithEvents ReportViewer1 As Microsoft.Reporting.WinForms.ReportViewer +End Class diff --git a/Parkzeit/frmDruckansicht.resx b/Parkzeit/frmDruckansicht.resx new file mode 100644 index 0000000..8509690 --- /dev/null +++ b/Parkzeit/frmDruckansicht.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAICAAAAEAGACoDAAAFgAAACgAAAAgAAAAQAAAAAEAGAAAAAAAgAwAAMQOAADEDgAAAAAAAAAA + AABmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwB0SSb////3 + 9fR0SSZmMwCjjH3///////////////+YfWvBs6r///90SSajjH3///+tmo23p5z///+AXUJmMwDUy8X3 + 9fRmMwCYfWv39fT////m4N3///9mMwBmMwBmMwCYfWv////39fS3p5xmMwB0SSb////Bs6pmMwBmMwBm + MwCtmo3///+MbljLv7j39fRmMwBmMwDm4N3////////////Uy8VmMwDm4N3m4N2MbljBs6r///+Mblhm + MwBmMwC3p5z///+tmo3///+AXUJmMwD39fT///////////+AXUKMblj////////////39fS3p5xmMwCY + fWv///+Mblj////Bs6pmMwDu6+nUy8W3p5z///////+tmo1mMwBmMwDLv7j39fRmMwDd1tHLv7hmMwDU + y8X39fRmMwBmMwBmMwBmMwD39fTLv7hmMwDLv7j///90SSZmMwDUy8Xm4N3///+jjH1mMwDBs6r///+M + bliYfWv///+3p5xmMwBmMwDm4N3m4N1mMwCAXUL///+Mbli3p5z///////////////90SSbm4N3///// + ///////Lv7hmMwBmMwCAXUL///////+MblhmMwBmMwDUy8X////////m4N10SSZmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwD///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////Bs6rBs6rBs6rBs6r///////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////+AXUJmMwBmMwBmMwD///////////////////////////////////////////////////// + //////////////////////////////////////////////////////////+AXUJmMwBmMwBmMwD///// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////+AXUJmMwBmMwBmMwD///////////////////////////////////// + //////////////////////////////////////////////////////////////////////////+AXUJm + MwBmMwBmMwDBs6rBs6rBs6rBs6rBs6r///////////////////////////////////////////////// + //////////////////////////////////////////+AXUJmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwDUy8X///////////////////////////////////////////////////////////////////////// + //////////+AXUJmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwDd1tH///////////////////// + //////////////////////////////////////////////////////////+AXUJmMwBmMwCAXUL///// + //////+YfWtmMwBmMwBmMwC3p5z///////////////////////////////////////////////////// + //////////////////////////+AXUJmMwBmMwCAXUL////////////Lv7hmMwBmMwBmMwCtmo3///// + //////////////////////////////////////////////////////////////////////////+AXUJm + MwBmMwB0SSbBs6rBs6q3p5xmMwBmMwBmMwBmMwDBs6r///////////////////////////////////// + //////////////////////////////////////////+AXUJmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwCMblj39fT///////////////////////////////////////////////////////////////////// + //////////+AXUJmMwBmMwBmMwBmMwBmMwBmMwBmMwB0SSbBs6r///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + + \ No newline at end of file diff --git a/Parkzeit/frmDruckansicht.vb b/Parkzeit/frmDruckansicht.vb new file mode 100644 index 0000000..9085e6c --- /dev/null +++ b/Parkzeit/frmDruckansicht.vb @@ -0,0 +1,101 @@ +Imports System.IO +Imports Microsoft.Reporting.WinForms + +Public Class frmDruckansicht + + Public Sub BefüllenAbrechnung(ByVal titel As String, ByVal ds As IList(Of cParkzeitDruck), ByVal hAuswahl As String, _ + ByVal hGesamtdauer As String, ByVal hGesamtkosten As String) + Dim rdlcName As String = "Parkzeit.rptAbrechnung.rdlc" + Me.ReportViewer1.LocalReport.ReportEmbeddedResource = rdlcName + + Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("Titel", titel)) + Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("SelektionText", hAuswahl)) + Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("Firmenname", "VERAG Spedition AG")) + Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("Gesamtdauer", hGesamtdauer)) + Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("Gesamtkosten", hGesamtkosten)) + Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("KostenJeStunde", "0")) + 'Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("Anwender", SystemInformation.UserName.ToString)) + 'Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("SelektionText", "Selektion: angeforderte, aber nicht erhaltene Bilanzen; Sortierung nach Sachbearbeiter, Kundennr")) + 'Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("GruppierungNachBetreuer", boolToJaNein(True))) + Me.ReportViewer1.LocalReport.DataSources.Add(New ReportDataSource("DataSet1", ds)) + Me.ReportViewer1.SetDisplayMode(DisplayMode.PrintLayout) + Me.ReportViewer1.RefreshReport() + + End Sub + + 'Private Sub reportVorbereiten(ByVal gruppierungNachBetreuer As Boolean, ByRef reportPath As String) + ' Dim doc As XDocument = XDocument.Parse(My.Resources.rptBilanzenAuswertung) + + ' If Not gruppierungNachBetreuer Then + ' Const ns As String = "{http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition}" 'namespace + ' 'GroupExpression entfernen + ' For Each groupNode As XElement In doc.Descendants(ns & "Group") + ' If groupNode.HasAttributes AndAlso groupNode.Attributes("Name").Count = 1 AndAlso groupNode.Attributes("Name")(0).Value = "GroupBetreuer" Then + ' groupNode.Elements(ns & "GroupExpressions")(0).Elements(ns & "GroupExpression")(0).Value = "" + ' Exit For + ' End If + ' Next + + ' 'Inhalt der Gruppe entfernen + ' For Each groupNode As XElement In doc.Descendants(ns & "Rectangle") + ' If groupNode.HasAttributes AndAlso groupNode.Attributes("Name").Count = 1 AndAlso groupNode.Attributes("Name")(0).Value = "GroupBetreuerRectangle" Then + ' groupNode.Elements(ns & "ReportItems").Remove() + ' Exit For + ' End If + ' Next + + ' 'Höhe der Gruppe auf 0 setzen + ' Dim row As XElement = doc.Descendants(ns & "TablixRow").First + ' row.Elements(ns & "Height").First.Value = "0.01625in" + ' End If + + ' reportPath = Path.GetTempPath() & "BilanzenAuswertung.rdlc" + ' doc.Save(reportPath) + 'End Sub + + 'Public Sub BefüllenSerienbrief(ByVal ds As IList(Of cSerienbriefdruck), ByVal hBearbeiter As String, ByVal hOrt As String, ByVal hTyp As Integer) + ' 'Optionen laden + ' Dim myOptionen As New cOptionenDAL + ' myOptionen.OpenConnection(frmMain.connStr) + ' Dim optionen As cOptionen = myOptionen.LesenOptionen() + ' myOptionen.CloseConnection() + + + ' Dim rdlcName As String = "Bilanzen.SerienbriefAuswertung.rdlc" + ' Me.ReportViewer1.LocalReport.ReportEmbeddedResource = rdlcName + ' Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("Text_Schriftart", "Arial")) + ' Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("Text_Größe", optionen.Text_Größe & "pt")) + ' Dim fontWeight As String = "Default" + ' If (optionen.Auflistung_Fett) Then + ' fontWeight = "Bold" + ' End If + + ' Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("Auflistung_fett", fontWeight)) + ' Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("BriefpartnerUndDurchwahl", hBearbeiter)) + ' Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("GeschäftsstelleUndDatum", hOrt)) + ' 'Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("Kopf_Bilanz", "Kopf")) + ' 'Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("Fuss_Bilanz", "Fuß")) + ' Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("Kopf_Bilanz", "")) 'convertToHTML(hKopf))) + ' Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("Fuss_Bilanz", "")) 'convertToHTML(hFuß))) + ' Me.ReportViewer1.LocalReport.DataSources.Add(New ReportDataSource("SerienbriefDataSet", ds)) + ' Me.ReportViewer1.SetDisplayMode(DisplayMode.PrintLayout) + ' Me.ReportViewer1.RefreshReport() + ' Me.ReportViewer1.Focus() + + 'End Sub + + + + + Private Function boolToJaNein(ByVal wert As Boolean) As String + If wert Then + Return "ja" + Else + Return "nein" + End If + End Function + + Private Sub frmDruckansicht_Load(sender As Object, e As EventArgs) Handles MyBase.Load + + End Sub +End Class \ No newline at end of file diff --git a/Parkzeit/frmEintragParkzeit.Designer.vb b/Parkzeit/frmEintragParkzeit.Designer.vb new file mode 100644 index 0000000..77961bc --- /dev/null +++ b/Parkzeit/frmEintragParkzeit.Designer.vb @@ -0,0 +1,220 @@ + _ +Partial Class frmEintragParkzeit + Inherits System.Windows.Forms.Form + + 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Wird vom Windows Form-Designer benötigt. + Private components As System.ComponentModel.IContainer + + 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. + 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. + 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. + _ + Private Sub InitializeComponent() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmEintragParkzeit)) + Me.btnAbbruch = New System.Windows.Forms.Button() + Me.btnOK = New System.Windows.Forms.Button() + Me.dtpDatumVon = New System.Windows.Forms.DateTimePicker() + Me.Label20 = New System.Windows.Forms.Label() + Me.Label14 = New System.Windows.Forms.Label() + Me.txtKennzeichen = New System.Windows.Forms.TextBox() + Me.dtpUhrzeitVon = New System.Windows.Forms.DateTimePicker() + Me.Label3 = New System.Windows.Forms.Label() + Me.txtLaufende_Nr = New System.Windows.Forms.TextBox() + Me.dtpUhrzeitBis = New System.Windows.Forms.DateTimePicker() + Me.Label1 = New System.Windows.Forms.Label() + Me.dtpDatumBis = New System.Windows.Forms.DateTimePicker() + Me.Label2 = New System.Windows.Forms.Label() + Me.txtDauer = New System.Windows.Forms.TextBox() + Me.SuspendLayout() + ' + 'btnAbbruch + ' + Me.btnAbbruch.Location = New System.Drawing.Point(240, 162) + Me.btnAbbruch.Name = "btnAbbruch" + Me.btnAbbruch.Size = New System.Drawing.Size(80, 40) + Me.btnAbbruch.TabIndex = 7 + Me.btnAbbruch.Text = "Schließen" + Me.btnAbbruch.UseVisualStyleBackColor = True + ' + 'btnOK + ' + Me.btnOK.Location = New System.Drawing.Point(102, 162) + Me.btnOK.Name = "btnOK" + Me.btnOK.Size = New System.Drawing.Size(110, 40) + Me.btnOK.TabIndex = 6 + Me.btnOK.Text = "OK -> Nächster" + Me.btnOK.UseVisualStyleBackColor = True + ' + 'dtpDatumVon + ' + Me.dtpDatumVon.Format = System.Windows.Forms.DateTimePickerFormat.[Short] + Me.dtpDatumVon.Location = New System.Drawing.Point(154, 55) + Me.dtpDatumVon.Name = "dtpDatumVon" + Me.dtpDatumVon.Size = New System.Drawing.Size(93, 20) + Me.dtpDatumVon.TabIndex = 1 + ' + 'Label20 + ' + Me.Label20.AutoSize = True + Me.Label20.Location = New System.Drawing.Point(20, 118) + Me.Label20.Name = "Label20" + Me.Label20.Size = New System.Drawing.Size(96, 13) + Me.Label20.TabIndex = 56 + Me.Label20.Text = "LKW-Kennzeichen" + ' + 'Label14 + ' + Me.Label14.AutoSize = True + Me.Label14.Location = New System.Drawing.Point(20, 59) + Me.Label14.Name = "Label14" + Me.Label14.Size = New System.Drawing.Size(115, 13) + Me.Label14.TabIndex = 56 + Me.Label14.Text = "Datum/Uhrzeit Einfahrt" + ' + 'txtKennzeichen + ' + Me.txtKennzeichen.Location = New System.Drawing.Point(154, 115) + Me.txtKennzeichen.MaxLength = 100 + Me.txtKennzeichen.Name = "txtKennzeichen" + Me.txtKennzeichen.Size = New System.Drawing.Size(249, 20) + Me.txtKennzeichen.TabIndex = 5 + ' + 'dtpUhrzeitVon + ' + Me.dtpUhrzeitVon.CustomFormat = "HH:mm" + Me.dtpUhrzeitVon.Format = System.Windows.Forms.DateTimePickerFormat.Custom + Me.dtpUhrzeitVon.Location = New System.Drawing.Point(253, 55) + Me.dtpUhrzeitVon.MinDate = New Date(1800, 1, 1, 0, 0, 0, 0) + Me.dtpUhrzeitVon.Name = "dtpUhrzeitVon" + Me.dtpUhrzeitVon.ShowUpDown = True + Me.dtpUhrzeitVon.Size = New System.Drawing.Size(54, 20) + Me.dtpUhrzeitVon.TabIndex = 2 + Me.dtpUhrzeitVon.Value = New Date(2013, 1, 1, 0, 0, 0, 0) + ' + 'Label3 + ' + Me.Label3.AutoSize = True + Me.Label3.Location = New System.Drawing.Point(20, 20) + Me.Label3.Name = "Label3" + Me.Label3.Size = New System.Drawing.Size(177, 13) + Me.Label3.TabIndex = 56 + Me.Label3.Text = "lfd. Nummer (von Liste übernehmen)" + ' + 'txtLaufende_Nr + ' + Me.txtLaufende_Nr.Location = New System.Drawing.Point(203, 17) + Me.txtLaufende_Nr.MaxLength = 10 + Me.txtLaufende_Nr.Name = "txtLaufende_Nr" + Me.txtLaufende_Nr.Size = New System.Drawing.Size(42, 20) + Me.txtLaufende_Nr.TabIndex = 0 + ' + 'dtpUhrzeitBis + ' + Me.dtpUhrzeitBis.CustomFormat = "HH:mm" + Me.dtpUhrzeitBis.Format = System.Windows.Forms.DateTimePickerFormat.Custom + Me.dtpUhrzeitBis.Location = New System.Drawing.Point(253, 81) + Me.dtpUhrzeitBis.MinDate = New Date(1800, 1, 1, 0, 0, 0, 0) + Me.dtpUhrzeitBis.Name = "dtpUhrzeitBis" + Me.dtpUhrzeitBis.ShowUpDown = True + Me.dtpUhrzeitBis.Size = New System.Drawing.Size(54, 20) + Me.dtpUhrzeitBis.TabIndex = 4 + Me.dtpUhrzeitBis.Value = New Date(2013, 1, 1, 0, 0, 0, 0) + ' + 'Label1 + ' + Me.Label1.AutoSize = True + Me.Label1.Location = New System.Drawing.Point(20, 85) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(118, 13) + Me.Label1.TabIndex = 56 + Me.Label1.Text = "Datum/Uhrzeit Ausfahrt" + ' + 'dtpDatumBis + ' + Me.dtpDatumBis.Format = System.Windows.Forms.DateTimePickerFormat.[Short] + Me.dtpDatumBis.Location = New System.Drawing.Point(154, 81) + Me.dtpDatumBis.Name = "dtpDatumBis" + Me.dtpDatumBis.Size = New System.Drawing.Size(93, 20) + Me.dtpDatumBis.TabIndex = 3 + ' + 'Label2 + ' + Me.Label2.AutoSize = True + Me.Label2.Location = New System.Drawing.Point(313, 85) + Me.Label2.Name = "Label2" + Me.Label2.Size = New System.Drawing.Size(36, 13) + Me.Label2.TabIndex = 58 + Me.Label2.Text = "Dauer" + ' + 'txtDauer + ' + Me.txtDauer.BackColor = System.Drawing.SystemColors.Info + Me.txtDauer.ForeColor = System.Drawing.SystemColors.InfoText + Me.txtDauer.Location = New System.Drawing.Point(355, 82) + Me.txtDauer.MaxLength = 100 + Me.txtDauer.Name = "txtDauer" + Me.txtDauer.ReadOnly = True + Me.txtDauer.Size = New System.Drawing.Size(48, 20) + Me.txtDauer.TabIndex = 57 + Me.txtDauer.TabStop = False + Me.txtDauer.TextAlign = System.Windows.Forms.HorizontalAlignment.Center + ' + 'frmEintragParkzeit + ' + Me.AcceptButton = Me.btnOK + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(423, 228) + Me.Controls.Add(Me.Label2) + Me.Controls.Add(Me.txtDauer) + Me.Controls.Add(Me.btnAbbruch) + Me.Controls.Add(Me.btnOK) + Me.Controls.Add(Me.dtpDatumBis) + Me.Controls.Add(Me.Label1) + Me.Controls.Add(Me.dtpDatumVon) + Me.Controls.Add(Me.dtpUhrzeitBis) + Me.Controls.Add(Me.Label14) + Me.Controls.Add(Me.dtpUhrzeitVon) + Me.Controls.Add(Me.txtLaufende_Nr) + Me.Controls.Add(Me.Label3) + Me.Controls.Add(Me.txtKennzeichen) + Me.Controls.Add(Me.Label20) + Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog + Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) + Me.KeyPreview = True + Me.MaximizeBox = False + Me.MinimizeBox = False + Me.Name = "frmEintragParkzeit" + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent + Me.Text = "Eintrag Parkzeiten" + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + Friend WithEvents btnAbbruch As System.Windows.Forms.Button + Friend WithEvents btnOK As System.Windows.Forms.Button + Friend WithEvents dtpDatumVon As System.Windows.Forms.DateTimePicker + Friend WithEvents Label20 As System.Windows.Forms.Label + Friend WithEvents Label14 As System.Windows.Forms.Label + Friend WithEvents txtKennzeichen As System.Windows.Forms.TextBox + Friend WithEvents dtpUhrzeitVon As System.Windows.Forms.DateTimePicker + Friend WithEvents Label3 As System.Windows.Forms.Label + Friend WithEvents txtLaufende_Nr As System.Windows.Forms.TextBox + Friend WithEvents dtpUhrzeitBis As System.Windows.Forms.DateTimePicker + Friend WithEvents Label1 As System.Windows.Forms.Label + Friend WithEvents dtpDatumBis As System.Windows.Forms.DateTimePicker + Friend WithEvents Label2 As System.Windows.Forms.Label + Friend WithEvents txtDauer As System.Windows.Forms.TextBox +End Class diff --git a/Parkzeit/frmEintragParkzeit.resx b/Parkzeit/frmEintragParkzeit.resx new file mode 100644 index 0000000..8509690 --- /dev/null +++ b/Parkzeit/frmEintragParkzeit.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAICAAAAEAGACoDAAAFgAAACgAAAAgAAAAQAAAAAEAGAAAAAAAgAwAAMQOAADEDgAAAAAAAAAA + AABmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwB0SSb////3 + 9fR0SSZmMwCjjH3///////////////+YfWvBs6r///90SSajjH3///+tmo23p5z///+AXUJmMwDUy8X3 + 9fRmMwCYfWv39fT////m4N3///9mMwBmMwBmMwCYfWv////39fS3p5xmMwB0SSb////Bs6pmMwBmMwBm + MwCtmo3///+MbljLv7j39fRmMwBmMwDm4N3////////////Uy8VmMwDm4N3m4N2MbljBs6r///+Mblhm + MwBmMwC3p5z///+tmo3///+AXUJmMwD39fT///////////+AXUKMblj////////////39fS3p5xmMwCY + fWv///+Mblj////Bs6pmMwDu6+nUy8W3p5z///////+tmo1mMwBmMwDLv7j39fRmMwDd1tHLv7hmMwDU + y8X39fRmMwBmMwBmMwBmMwD39fTLv7hmMwDLv7j///90SSZmMwDUy8Xm4N3///+jjH1mMwDBs6r///+M + bliYfWv///+3p5xmMwBmMwDm4N3m4N1mMwCAXUL///+Mbli3p5z///////////////90SSbm4N3///// + ///////Lv7hmMwBmMwCAXUL///////+MblhmMwBmMwDUy8X////////m4N10SSZmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwD///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////Bs6rBs6rBs6rBs6r///////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////+AXUJmMwBmMwBmMwD///////////////////////////////////////////////////// + //////////////////////////////////////////////////////////+AXUJmMwBmMwBmMwD///// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////+AXUJmMwBmMwBmMwD///////////////////////////////////// + //////////////////////////////////////////////////////////////////////////+AXUJm + MwBmMwBmMwDBs6rBs6rBs6rBs6rBs6r///////////////////////////////////////////////// + //////////////////////////////////////////+AXUJmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwDUy8X///////////////////////////////////////////////////////////////////////// + //////////+AXUJmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwDd1tH///////////////////// + //////////////////////////////////////////////////////////+AXUJmMwBmMwCAXUL///// + //////+YfWtmMwBmMwBmMwC3p5z///////////////////////////////////////////////////// + //////////////////////////+AXUJmMwBmMwCAXUL////////////Lv7hmMwBmMwBmMwCtmo3///// + //////////////////////////////////////////////////////////////////////////+AXUJm + MwBmMwB0SSbBs6rBs6q3p5xmMwBmMwBmMwBmMwDBs6r///////////////////////////////////// + //////////////////////////////////////////+AXUJmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwCMblj39fT///////////////////////////////////////////////////////////////////// + //////////+AXUJmMwBmMwBmMwBmMwBmMwBmMwBmMwB0SSbBs6r///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + + \ No newline at end of file diff --git a/Parkzeit/frmEintragParkzeit.vb b/Parkzeit/frmEintragParkzeit.vb new file mode 100644 index 0000000..a9c43f6 --- /dev/null +++ b/Parkzeit/frmEintragParkzeit.vb @@ -0,0 +1,161 @@ +'Imports System.Windows.Forms +Imports Parkzeit.cMeineFunktionen + +Public Class frmEintragParkzeit + + Dim Titel_Msgbox As String = "Erfassen Parkzeiten" 'wird als Titel bei einer Msgbox verwendet + Dim Parkzeiten As New cParkzeitenDAL + Dim myParkzeit As New cParkzeit + Dim hÄnderung As Boolean = False + Dim Neuanlage As Boolean = False + Dim DatumVon As Date + Dim DatumBis As Date + Dim Dauer As String + Dim DauerMinuten As Long + Dim Berechnung_freigegeben As Boolean = False + + Private Sub frmEintragParkzeit_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown + 'Escape händisch abfangen und auf Abbruch-Taste legen + If e.KeyCode = Keys.Escape Then + btnAbbruch.PerformClick() + End If + End Sub + + Private Sub frmEintragParkzeit_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load + + Icon = cMeineFunktionen.GetProgrammIcon + + Me.CenterToParent() + + + If frmMain.Aktive_ID = 0 Then + 'es erfolgt eine Neuanlage + Neuanlage = True + + 'Vorschlagswerte setzen + dtpDatumVon.Value = DateSerial(Now.AddMonths(-1).Year, Now.AddMonths(-1).Month, 1) + dtpDatumBis.Value = dtpDatumVon.Value + txtLaufende_Nr.Text = "1" + + Else + Me.Text += " (Änderung)" + btnOK.Text = "Speichern" + 'ausgewählter Datensatz wird geladen + myParkzeit = Parkzeiten.LesenParkzeit(frmMain.Aktive_ID, "") + + 'Werte(zuweisen) + txtLaufende_Nr.Text = myParkzeit.Laufende_Nr.ToString + dtpDatumVon.Value = myParkzeit.Von.Date + dtpUhrzeitVon.Value = myParkzeit.Von + dtpDatumBis.Value = myParkzeit.Bis.Date + dtpUhrzeitBis.Value = myParkzeit.Bis + txtKennzeichen.Text = myParkzeit.Kennzeichen.Trim + txtDauer.Text = myParkzeit.Dauer + DauerMinuten = myParkzeit.Dauer_Minuten + End If + hÄnderung = False + + Berechnung_freigegeben = True + + End Sub + + + Private Sub btnAbbruch_Click(sender As System.Object, e As System.EventArgs) Handles btnAbbruch.Click + Me.Close() + End Sub + + + Private Sub txtFeld_GotFocus(sender As Object, e As System.EventArgs) Handles txtLaufende_Nr.GotFocus, txtKennzeichen.GotFocus + CType(sender, TextBox).SelectAll() + End Sub + + Private Sub btnOK_Click(sender As System.Object, e As System.EventArgs) Handles btnOK.Click + 'Falls keine Änderung oder Neuanlage, dann kann Fenster geschlossen werden + + 'Logische Prüfungen vor dem Speichern + If VarToInt(txtLaufende_Nr.Text) = 0 Then + MsgBox("Bitte eine gültige laufende Nummer eintragen.", , Titel_Msgbox) + txtLaufende_Nr.Focus() + Exit Sub + End If + + DatumVon = dtpDatumVon.Value + dtpUhrzeitVon.Value.TimeOfDay + DatumBis = dtpDatumBis.Value + dtpUhrzeitBis.Value.TimeOfDay + + If DatumBis <= DatumVon Then + MsgBox("Die Bis-Zeit ist kleiner/gleich der Von-Zeit!", , Titel_Msgbox) + dtpDatumVon.Focus() + Exit Sub + End If + + If txtKennzeichen.Text.Trim = "" Then + MsgBox("Bitte das LKW-Kennzeichen eintragen.", , Titel_Msgbox) + txtKennzeichen.Focus() + Exit Sub + End If + + 'Änderungen werden gespeichert + myParkzeit.Laufende_Nr = VarToInt(txtLaufende_Nr.Text) + myParkzeit.Von = DatumVon + myParkzeit.Bis = DatumBis + myParkzeit.Kennzeichen = txtKennzeichen.Text.Trim + myParkzeit.Dauer = txtDauer.Text + myParkzeit.Dauer_Minuten = VarToInt(DauerMinuten) + + Parkzeiten.SpeichernParkzeit(myParkzeit) + + 'bei Änderung Fenster verlassen, ansonsten können weitere Daten eingegeben werden + If Not Neuanlage Then + Me.Close() + Else + 'Jetzt Fenster für nächste Eingabe vorbereiten + frmMain.Tabelle_anzeigen() + + txtLaufende_Nr.Text = (myParkzeit.Laufende_Nr + 1).ToString + dtpUhrzeitVon.Value = Now.Date + dtpUhrzeitBis.Value = Now.Date + dtpDatumBis.Value = dtpDatumVon.Value.Date + txtKennzeichen.Text = "" + dtpDatumVon.Focus() + End If + End Sub + + + Private Sub dtpDatum_ValueChanged(sender As System.Object, e As System.EventArgs) Handles dtpDatumVon.ValueChanged, dtpDatumBis.ValueChanged, dtpUhrzeitVon.ValueChanged, dtpUhrzeitBis.ValueChanged + If Not Berechnung_freigegeben Then Exit Sub + + 'Dauer neu berechnen + DatumVon = dtpDatumVon.Value + dtpUhrzeitVon.Value.TimeOfDay + DatumBis = dtpDatumBis.Value + dtpUhrzeitBis.Value.TimeOfDay + Try + DauerMinuten = DateDiff(DateInterval.Minute, DatumVon, DatumBis) + If DauerMinuten < 0 Then DauerMinuten = 0 + Dauer = Minuten_auf_Text(DauerMinuten) + Catch ex As Exception + DauerMinuten = 0 + Dauer = "" + End Try + + txtDauer.Text = Dauer + txtDauer.Refresh() + End Sub + + Private Sub txtZahl_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtLaufende_Nr.KeyPress + 'Es sind nur Zahleneingaben erlaubt + Dim asc As Integer = Convert.ToInt32(e.KeyChar) + Select Case asc + 'Folgende Tasten sind erlaubt + '8 = Rücktaste (Back) + '13 = Enter + '27 = Esc + '48 To 57 = 0 bis 9 + Case 8, 13, 27, 48 To 57 + Case Else + e.Handled = True + End Select + End Sub + +End Class + + + diff --git a/Parkzeit/frmInfo.Designer.vb b/Parkzeit/frmInfo.Designer.vb new file mode 100644 index 0000000..7b2c506 --- /dev/null +++ b/Parkzeit/frmInfo.Designer.vb @@ -0,0 +1,226 @@ + _ +Partial Class frmInfo + Inherits System.Windows.Forms.Form + + 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + + 'Wird vom Windows Form-Designer benötigt. + Private components As System.ComponentModel.IContainer + + 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. + 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. + 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. + _ + Private Sub InitializeComponent() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmInfo)) + Me.Label1 = New System.Windows.Forms.Label() + Me.PictureBox1 = New System.Windows.Forms.PictureBox() + Me.btnSysteminfos = New System.Windows.Forms.Button() + Me.lblVersion = New System.Windows.Forms.Label() + Me.lblTitel = New System.Windows.Forms.Label() + Me.btnOKInfo = New System.Windows.Forms.Button() + Me.txtVersionsinfo = New System.Windows.Forms.TextBox() + Me.lblCopyright = New System.Windows.Forms.Label() + Me.lblText = New System.Windows.Forms.Label() + Me.Label2 = New System.Windows.Forms.Label() + Me.lblAndi = New System.Windows.Forms.Label() + Me.Label7 = New System.Windows.Forms.Label() + CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SuspendLayout() + ' + 'Label1 + ' + Me.Label1.AutoSize = True + Me.Label1.BackColor = System.Drawing.Color.Transparent + Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Label1.ForeColor = System.Drawing.Color.White + Me.Label1.Location = New System.Drawing.Point(76, 44) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(292, 17) + Me.Label1.TabIndex = 31 + Me.Label1.Text = "Erfassung der Parkzeiten für Waberer's LKW" + ' + 'PictureBox1 + ' + Me.PictureBox1.Image = CType(resources.GetObject("PictureBox1.Image"), System.Drawing.Image) + Me.PictureBox1.Location = New System.Drawing.Point(14, 16) + Me.PictureBox1.Name = "PictureBox1" + Me.PictureBox1.Size = New System.Drawing.Size(64, 64) + Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.PictureBox1.TabIndex = 30 + Me.PictureBox1.TabStop = False + ' + 'btnSysteminfos + ' + Me.btnSysteminfos.Location = New System.Drawing.Point(331, 358) + Me.btnSysteminfos.Name = "btnSysteminfos" + Me.btnSysteminfos.Size = New System.Drawing.Size(79, 24) + Me.btnSysteminfos.TabIndex = 29 + Me.btnSysteminfos.TabStop = False + Me.btnSysteminfos.Text = "Systeminfos" + Me.btnSysteminfos.UseVisualStyleBackColor = True + ' + 'lblVersion + ' + Me.lblVersion.AutoSize = True + Me.lblVersion.BackColor = System.Drawing.Color.Transparent + Me.lblVersion.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblVersion.ForeColor = System.Drawing.Color.White + Me.lblVersion.Location = New System.Drawing.Point(76, 70) + Me.lblVersion.Name = "lblVersion" + Me.lblVersion.Size = New System.Drawing.Size(115, 20) + Me.lblVersion.TabIndex = 28 + Me.lblVersion.Text = "Version 1.0.0.0" + ' + 'lblTitel + ' + Me.lblTitel.AutoSize = True + Me.lblTitel.BackColor = System.Drawing.Color.Transparent + Me.lblTitel.Font = New System.Drawing.Font("Microsoft Sans Serif", 20.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblTitel.ForeColor = System.Drawing.Color.White + Me.lblTitel.Location = New System.Drawing.Point(73, 13) + Me.lblTitel.Name = "lblTitel" + Me.lblTitel.Size = New System.Drawing.Size(153, 31) + Me.lblTitel.TabIndex = 27 + Me.lblTitel.Text = "Parkzeiten" + ' + 'btnOKInfo + ' + Me.btnOKInfo.Location = New System.Drawing.Point(416, 358) + Me.btnOKInfo.Name = "btnOKInfo" + Me.btnOKInfo.Size = New System.Drawing.Size(66, 24) + Me.btnOKInfo.TabIndex = 20 + Me.btnOKInfo.Text = "OK" + Me.btnOKInfo.UseVisualStyleBackColor = True + ' + 'txtVersionsinfo + ' + Me.txtVersionsinfo.BackColor = System.Drawing.Color.AliceBlue + Me.txtVersionsinfo.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.txtVersionsinfo.Location = New System.Drawing.Point(36, 179) + Me.txtVersionsinfo.Multiline = True + Me.txtVersionsinfo.Name = "txtVersionsinfo" + Me.txtVersionsinfo.ReadOnly = True + Me.txtVersionsinfo.ScrollBars = System.Windows.Forms.ScrollBars.Both + Me.txtVersionsinfo.Size = New System.Drawing.Size(446, 173) + Me.txtVersionsinfo.TabIndex = 26 + Me.txtVersionsinfo.TabStop = False + ' + 'lblCopyright + ' + Me.lblCopyright.AutoSize = True + Me.lblCopyright.BackColor = System.Drawing.Color.Transparent + Me.lblCopyright.Font = New System.Drawing.Font("Tahoma", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblCopyright.ForeColor = System.Drawing.Color.White + Me.lblCopyright.Location = New System.Drawing.Point(150, 133) + Me.lblCopyright.Name = "lblCopyright" + Me.lblCopyright.Size = New System.Drawing.Size(173, 14) + Me.lblCopyright.TabIndex = 25 + Me.lblCopyright.Text = "© 2013 Engelsberger Andreas" + ' + 'lblText + ' + Me.lblText.AutoSize = True + Me.lblText.BackColor = System.Drawing.Color.Transparent + Me.lblText.Font = New System.Drawing.Font("Tahoma", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblText.ForeColor = System.Drawing.Color.White + Me.lblText.Location = New System.Drawing.Point(33, 159) + Me.lblText.Name = "lblText" + Me.lblText.Size = New System.Drawing.Size(95, 14) + Me.lblText.TabIndex = 24 + Me.lblText.Text = "Versionshistorie:" + ' + 'Label2 + ' + Me.Label2.AutoSize = True + Me.Label2.BackColor = System.Drawing.Color.Transparent + Me.Label2.Font = New System.Drawing.Font("Tahoma", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Label2.ForeColor = System.Drawing.Color.White + Me.Label2.Location = New System.Drawing.Point(33, 133) + Me.Label2.Name = "Label2" + Me.Label2.Size = New System.Drawing.Size(59, 14) + Me.Label2.TabIndex = 22 + Me.Label2.Text = "Copyright" + ' + 'lblAndi + ' + Me.lblAndi.AutoSize = True + Me.lblAndi.BackColor = System.Drawing.Color.Transparent + Me.lblAndi.Cursor = System.Windows.Forms.Cursors.Hand + Me.lblAndi.Font = New System.Drawing.Font("Tahoma", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblAndi.ForeColor = System.Drawing.Color.White + Me.lblAndi.Location = New System.Drawing.Point(150, 109) + Me.lblAndi.Name = "lblAndi" + Me.lblAndi.Size = New System.Drawing.Size(126, 14) + Me.lblAndi.TabIndex = 23 + Me.lblAndi.Text = "Andreas Engelsberger" + ' + 'Label7 + ' + Me.Label7.AutoSize = True + Me.Label7.BackColor = System.Drawing.Color.Transparent + Me.Label7.Font = New System.Drawing.Font("Tahoma", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Label7.ForeColor = System.Drawing.Color.White + Me.Label7.Location = New System.Drawing.Point(33, 109) + Me.Label7.Name = "Label7" + Me.Label7.Size = New System.Drawing.Size(96, 14) + Me.Label7.TabIndex = 21 + Me.Label7.Text = "Programmierung" + ' + 'frmInfo + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.BackColor = System.Drawing.Color.SteelBlue + Me.ClientSize = New System.Drawing.Size(494, 394) + Me.Controls.Add(Me.Label1) + Me.Controls.Add(Me.PictureBox1) + Me.Controls.Add(Me.btnSysteminfos) + Me.Controls.Add(Me.lblVersion) + Me.Controls.Add(Me.lblTitel) + Me.Controls.Add(Me.btnOKInfo) + Me.Controls.Add(Me.txtVersionsinfo) + Me.Controls.Add(Me.lblCopyright) + Me.Controls.Add(Me.lblText) + Me.Controls.Add(Me.Label2) + Me.Controls.Add(Me.lblAndi) + Me.Controls.Add(Me.Label7) + Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog + Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) + Me.MaximizeBox = False + Me.MinimizeBox = False + Me.Name = "frmInfo" + Me.Padding = New System.Windows.Forms.Padding(9) + Me.ShowInTaskbar = False + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent + Me.Text = "Programminfo" + CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit() + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + Friend WithEvents Label1 As System.Windows.Forms.Label + Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox + Friend WithEvents btnSysteminfos As System.Windows.Forms.Button + Friend WithEvents lblVersion As System.Windows.Forms.Label + Friend WithEvents lblTitel As System.Windows.Forms.Label + Friend WithEvents btnOKInfo As System.Windows.Forms.Button + Friend WithEvents txtVersionsinfo As System.Windows.Forms.TextBox + Friend WithEvents lblCopyright As System.Windows.Forms.Label + Friend WithEvents lblText As System.Windows.Forms.Label + Friend WithEvents Label2 As System.Windows.Forms.Label + Friend WithEvents lblAndi As System.Windows.Forms.Label + Friend WithEvents Label7 As System.Windows.Forms.Label + +End Class diff --git a/Parkzeit/frmInfo.resx b/Parkzeit/frmInfo.resx new file mode 100644 index 0000000..24148af --- /dev/null +++ b/Parkzeit/frmInfo.resx @@ -0,0 +1,198 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wgAADsIBFShKgAAAAulJREFUeF7t28lrk0EcxvFma2JsQpdIlBxysI1kKUjF9dSYW6tQWihIFIUi+BcI + HqSHiHiyJ0HQmwt4LygIIiLuoAcVBJeLqIh4ERUEjd+f4OVlKvMWZt4hzgMfOjn0nc5D3ryZ5G2fj4+P + T4iksM6gQfTD2WzBB4Pe4jmu4gR2IwtnshNdy57hKAqIPDug+iNteIWDiDRRFvDXBQwhkrhQgLiNEqzH + lQLEQxRhNS4VIK4hA2txrQDRgbW4WMB3bIOVaBUQi8W6iUTiM2N5Y6Mll8t9zWazf36Xx2HJqRCH8WgV + kMlkus1m8zDjnK7FxcXK3Nzc5Pj4+Knh4eF38XhceewV/MQkjEe7gKmpqf2MQ6fb7cY6nU55bGzsSiqV + Uh5/BZdhPGEKOMB41aGI/kajcS7EM+ETNsBorBUgkRLK5fI9GWqahdFYLUDSbrdbvDjKOa6cK+A0jMZ6 + AfIsKJVK92WoQa4GRmO9AEm9Xj/JD+VcAU+QhLFEUkCtVmsnk0nlXAEvsRbGEkkBrVarnU6nlXMFvIG8 + rzCWSAoYHR09onk5fIo0jCWKF8FYtVq9JEMNtxCDsVgvYGlpaXBkZET2C8q5As7DaKwXMDExcZyNlXIe + Bdl/GI3VAubn55v5fP4LQ+U8Ad+wCUZjpQDO++TMzMxsoVCQLbVyDoUbML4l1i6ABexjrB0WHV9eXh6a + np6erFQqFwcGBpTH/odQ8602WgXIJYsS5JJ0XRdb35vFYvG9lMfjsB5jDYxHqwDLZKO0B1biYgFnYS2u + FXAHeViLSwXIt8hlWI0rBTzARliPCwXIviCyr8qjLOA1DiHSRFHACxyD3EITeUwX8AMf8QhnsBdGP+AI + G90CfmEBckvNLk3bUcN6JOBkwhSwGT2XMAVsRc/FFwDVgoN8AfAFoOfiC4BqwUG+APgC0HPxBUC14CBf + AHwB6Ln89wWE+ZcZa/fv2kwDdzXI5/VV9GTkDgwdPj4+Po6nr+83T4Lt8/4YiW4AAAAASUVORK5CYII= + + + + + AAABAAEAICAAAAEAGACoDAAAFgAAACgAAAAgAAAAQAAAAAEAGAAAAAAAgAwAAMQOAADEDgAAAAAAAAAA + AABmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwB0SSb////3 + 9fR0SSZmMwCjjH3///////////////+YfWvBs6r///90SSajjH3///+tmo23p5z///+AXUJmMwDUy8X3 + 9fRmMwCYfWv39fT////m4N3///9mMwBmMwBmMwCYfWv////39fS3p5xmMwB0SSb////Bs6pmMwBmMwBm + MwCtmo3///+MbljLv7j39fRmMwBmMwDm4N3////////////Uy8VmMwDm4N3m4N2MbljBs6r///+Mblhm + MwBmMwC3p5z///+tmo3///+AXUJmMwD39fT///////////+AXUKMblj////////////39fS3p5xmMwCY + fWv///+Mblj////Bs6pmMwDu6+nUy8W3p5z///////+tmo1mMwBmMwDLv7j39fRmMwDd1tHLv7hmMwDU + y8X39fRmMwBmMwBmMwBmMwD39fTLv7hmMwDLv7j///90SSZmMwDUy8Xm4N3///+jjH1mMwDBs6r///+M + bliYfWv///+3p5xmMwBmMwDm4N3m4N1mMwCAXUL///+Mbli3p5z///////////////90SSbm4N3///// + ///////Lv7hmMwBmMwCAXUL///////+MblhmMwBmMwDUy8X////////m4N10SSZmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwD///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////Bs6rBs6rBs6rBs6r///////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////+AXUJmMwBmMwBmMwD///////////////////////////////////////////////////// + //////////////////////////////////////////////////////////+AXUJmMwBmMwBmMwD///// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////+AXUJmMwBmMwBmMwD///////////////////////////////////// + //////////////////////////////////////////////////////////////////////////+AXUJm + MwBmMwBmMwDBs6rBs6rBs6rBs6rBs6r///////////////////////////////////////////////// + //////////////////////////////////////////+AXUJmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwDUy8X///////////////////////////////////////////////////////////////////////// + //////////+AXUJmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwDd1tH///////////////////// + //////////////////////////////////////////////////////////+AXUJmMwBmMwCAXUL///// + //////+YfWtmMwBmMwBmMwC3p5z///////////////////////////////////////////////////// + //////////////////////////+AXUJmMwBmMwCAXUL////////////Lv7hmMwBmMwBmMwCtmo3///// + //////////////////////////////////////////////////////////////////////////+AXUJm + MwBmMwB0SSbBs6rBs6q3p5xmMwBmMwBmMwBmMwDBs6r///////////////////////////////////// + //////////////////////////////////////////+AXUJmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwCMblj39fT///////////////////////////////////////////////////////////////////// + //////////+AXUJmMwBmMwBmMwBmMwBmMwBmMwBmMwB0SSbBs6r///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + + \ No newline at end of file diff --git a/Parkzeit/frmInfo.vb b/Parkzeit/frmInfo.vb new file mode 100644 index 0000000..ebe5f25 --- /dev/null +++ b/Parkzeit/frmInfo.vb @@ -0,0 +1,78 @@ +Imports Microsoft.VisualBasic.Devices +Imports System.Management + +Public Class frmInfo + + Private Sub frmInfo_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown + 'Fenster bei Escape schließen + If e.KeyValue = Keys.Escape Then Me.Close() + End Sub + + Private Sub frmInfo_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load + lblVersion.Text = "Version " & Application.ProductVersion + txtVersionsinfo.Text = Parkzeit.My.Resources.Versionsinfo.ToString + End Sub + + Private Sub btnOKInfo_Click(sender As System.Object, e As System.EventArgs) Handles btnOKInfo.Click + Me.Close() + End Sub + + Private Sub btnSysteminfos_Click(sender As System.Object, e As System.EventArgs) Handles btnSysteminfos.Click + lblText.Text = "Systeminfos" + + Dim ci As New ComputerInfo() + + txtVersionsinfo.Text = "DATENBANK" & vbCrLf + txtVersionsinfo.Text += "Connection: " & vbTab & frmMain.ConnStrInfo & vbCrLf & vbCrLf + + txtVersionsinfo.Text += "ANWENDER" & vbCrLf + txtVersionsinfo.Text += "Username: " & vbTab & SystemInformation.UserName.ToString & vbCrLf + + Dim query2 As New SelectQuery("Win32_ComputerSystem") + Dim mos2 As New ManagementObjectSearcher(query2) + + Dim query As New SelectQuery("Win32_Processor") + Dim mos As New ManagementObjectSearcher(query) + + For Each mo As ManagementObject In mos2.[Get]() + txtVersionsinfo.Text += "Domäne: " & vbTab & vbTab & mo("Domain").ToString() & vbCrLf + Next + + txtVersionsinfo.Text += vbCrLf & "COMPUTER" & vbCrLf + txtVersionsinfo.Text += "Computername: " & vbTab & SystemInformation.ComputerName.ToString & vbCrLf + For Each mo As ManagementObject In mos2.[Get]() + + txtVersionsinfo.Text += "Computermodell: " & vbTab & mo("Manufacturer").ToString & " " & mo("Model").ToString & vbCrLf + Next + For Each mo As ManagementObject In mos.[Get]() + txtVersionsinfo.Text += "Prozessor: " & vbTab & mo("Name").ToString() & vbCrLf + txtVersionsinfo.Text += "Prozessor-Speed: " & vbTab & mo("CurrentClockSpeed").ToString() & "MHz" & vbCrLf + Next + txtVersionsinfo.Text += "verwendeter RAM: " & vbTab & Format(((New ComputerInfo()).TotalPhysicalMemory / 1024 / 1024 / 1024), "#0.00") & " GB" & vbCrLf + txtVersionsinfo.Text += "Monitorauflösung: " & vbTab & SystemInformation.PrimaryMonitorSize.ToString & vbCrLf + + txtVersionsinfo.Text += vbCrLf & "SOFTWARE" & vbTab & vbCrLf + txtVersionsinfo.Text += "Betriebssystem: " & vbTab & ci.OSFullName & vbCrLf + txtVersionsinfo.Text += "Service Pack: " & vbTab & Environment.OSVersion.ServicePack & vbCrLf + txtVersionsinfo.Text += "Plattform: " & vbTab & ci.OSPlatform & vbCrLf + txtVersionsinfo.Text += ".net-Framework: " & vbTab & "Version " & Environment.Version.ToString & vbCrLf + + mos.Dispose() + mos2.Dispose() + + txtVersionsinfo.Focus() + txtVersionsinfo.Select(1, 0) + End Sub + + Private Sub lblVersion_Click(sender As System.Object, e As System.EventArgs) Handles lblVersion.Click + lblText.Text = "Versionshistorie" + txtVersionsinfo.Text = My.Resources.Versionsinfo.ToString + End Sub + + Private Sub lblAndi_Click(sender As System.Object, e As System.EventArgs) Handles lblAndi.Click + 'eMail-Programm wird gestartet werden + Dim hMail As String = "mailto:engelsberger@inext.at?subject=Parkzeit-Programm" + System.Diagnostics.Process.Start(hMail) + End Sub + +End Class \ No newline at end of file diff --git a/Parkzeit/frmMain.Designer.vb b/Parkzeit/frmMain.Designer.vb new file mode 100644 index 0000000..f499460 --- /dev/null +++ b/Parkzeit/frmMain.Designer.vb @@ -0,0 +1,290 @@ + _ +Partial Class frmMain + Inherits System.Windows.Forms.Form + + 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Wird vom Windows Form-Designer benötigt. + Private components As System.ComponentModel.IContainer + + 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. + 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. + 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. + _ + Private Sub InitializeComponent() + Me.components = New System.ComponentModel.Container() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmMain)) + Dim DataGridViewCellStyle1 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() + Dim DataGridViewCellStyle2 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() + Me.Panel1 = New System.Windows.Forms.Panel() + Me.lblAnzahl = New System.Windows.Forms.Label() + Me.picLogo = New System.Windows.Forms.PictureBox() + Me.Panel2 = New System.Windows.Forms.Panel() + Me.btnInfo = New System.Windows.Forms.Button() + Me.Label1 = New System.Windows.Forms.Label() + Me.btnAuswerten = New System.Windows.Forms.Button() + Me.btnErfassen = New System.Windows.Forms.Button() + Me.dtpBis = New System.Windows.Forms.DateTimePicker() + Me.dtpVon = New System.Windows.Forms.DateTimePicker() + Me.Label4 = New System.Windows.Forms.Label() + Me.Label14 = New System.Windows.Forms.Label() + Me.txtSuche = New System.Windows.Forms.TextBox() + Me.Label3 = New System.Windows.Forms.Label() + Me.lblSuche = New System.Windows.Forms.Label() + Me.gridParkzeiten = New System.Windows.Forms.DataGridView() + Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.mnuLöschen = New System.Windows.Forms.ToolStripMenuItem() + Me.Panel1.SuspendLayout() + CType(Me.picLogo, System.ComponentModel.ISupportInitialize).BeginInit() + Me.Panel2.SuspendLayout() + CType(Me.gridParkzeiten, System.ComponentModel.ISupportInitialize).BeginInit() + Me.ContextMenuStrip1.SuspendLayout() + Me.SuspendLayout() + ' + 'Panel1 + ' + Me.Panel1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.Panel1.BackColor = System.Drawing.Color.Azure + Me.Panel1.Controls.Add(Me.lblAnzahl) + Me.Panel1.Controls.Add(Me.picLogo) + Me.Panel1.Controls.Add(Me.Panel2) + Me.Panel1.Controls.Add(Me.btnAuswerten) + Me.Panel1.Controls.Add(Me.btnErfassen) + Me.Panel1.Controls.Add(Me.dtpBis) + Me.Panel1.Controls.Add(Me.dtpVon) + Me.Panel1.Controls.Add(Me.Label4) + Me.Panel1.Controls.Add(Me.Label14) + Me.Panel1.Controls.Add(Me.txtSuche) + Me.Panel1.Controls.Add(Me.Label3) + Me.Panel1.Controls.Add(Me.lblSuche) + Me.Panel1.Location = New System.Drawing.Point(0, 0) + Me.Panel1.Name = "Panel1" + Me.Panel1.Size = New System.Drawing.Size(680, 78) + Me.Panel1.TabIndex = 4 + ' + 'lblAnzahl + ' + Me.lblAnzahl.AutoSize = True + Me.lblAnzahl.ForeColor = System.Drawing.SystemColors.HotTrack + Me.lblAnzahl.Location = New System.Drawing.Point(189, 33) + Me.lblAnzahl.Name = "lblAnzahl" + Me.lblAnzahl.Size = New System.Drawing.Size(82, 13) + Me.lblAnzahl.TabIndex = 69 + Me.lblAnzahl.Text = "123 ausgewählt" + ' + 'picLogo + ' + Me.picLogo.Image = CType(resources.GetObject("picLogo.Image"), System.Drawing.Image) + Me.picLogo.InitialImage = Nothing + Me.picLogo.Location = New System.Drawing.Point(0, 3) + Me.picLogo.Name = "picLogo" + Me.picLogo.Size = New System.Drawing.Size(183, 72) + Me.picLogo.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom + Me.picLogo.TabIndex = 68 + Me.picLogo.TabStop = False + ' + 'Panel2 + ' + Me.Panel2.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.Panel2.Controls.Add(Me.btnInfo) + Me.Panel2.Controls.Add(Me.Label1) + Me.Panel2.Location = New System.Drawing.Point(627, 0) + Me.Panel2.Name = "Panel2" + Me.Panel2.Size = New System.Drawing.Size(53, 78) + Me.Panel2.TabIndex = 67 + ' + 'btnInfo + ' + Me.btnInfo.Location = New System.Drawing.Point(22, 3) + Me.btnInfo.Name = "btnInfo" + Me.btnInfo.Size = New System.Drawing.Size(28, 28) + Me.btnInfo.TabIndex = 68 + Me.btnInfo.TabStop = False + Me.btnInfo.Text = "?" + Me.btnInfo.UseVisualStyleBackColor = True + ' + 'Label1 + ' + Me.Label1.AutoSize = True + Me.Label1.Location = New System.Drawing.Point(0, 59) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(50, 13) + Me.Label1.TabIndex = 14 + Me.Label1.Text = "Auswahl:" + Me.Label1.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'btnAuswerten + ' + Me.btnAuswerten.Location = New System.Drawing.Point(469, 42) + Me.btnAuswerten.Name = "btnAuswerten" + Me.btnAuswerten.Size = New System.Drawing.Size(80, 30) + Me.btnAuswerten.TabIndex = 4 + Me.btnAuswerten.TabStop = False + Me.btnAuswerten.Text = "Auswerten" + Me.btnAuswerten.UseVisualStyleBackColor = True + ' + 'btnErfassen + ' + Me.btnErfassen.Location = New System.Drawing.Point(469, 8) + Me.btnErfassen.Name = "btnErfassen" + Me.btnErfassen.Size = New System.Drawing.Size(80, 30) + Me.btnErfassen.TabIndex = 3 + Me.btnErfassen.TabStop = False + Me.btnErfassen.Text = "Erfassen" + Me.btnErfassen.UseVisualStyleBackColor = True + ' + 'dtpBis + ' + Me.dtpBis.Format = System.Windows.Forms.DateTimePickerFormat.[Short] + Me.dtpBis.Location = New System.Drawing.Point(351, 31) + Me.dtpBis.Name = "dtpBis" + Me.dtpBis.Size = New System.Drawing.Size(98, 20) + Me.dtpBis.TabIndex = 1 + ' + 'dtpVon + ' + Me.dtpVon.Format = System.Windows.Forms.DateTimePickerFormat.[Short] + Me.dtpVon.Location = New System.Drawing.Point(351, 9) + Me.dtpVon.Name = "dtpVon" + Me.dtpVon.Size = New System.Drawing.Size(98, 20) + Me.dtpVon.TabIndex = 0 + ' + 'Label4 + ' + Me.Label4.AutoSize = True + Me.Label4.Location = New System.Drawing.Point(286, 33) + Me.Label4.Name = "Label4" + Me.Label4.Size = New System.Drawing.Size(59, 13) + Me.Label4.TabIndex = 60 + Me.Label4.Text = "Einfahrt bis" + ' + 'Label14 + ' + Me.Label14.AutoSize = True + Me.Label14.Location = New System.Drawing.Point(286, 11) + Me.Label14.Name = "Label14" + Me.Label14.Size = New System.Drawing.Size(64, 13) + Me.Label14.TabIndex = 59 + Me.Label14.Text = "Einfahrt von" + ' + 'txtSuche + ' + Me.txtSuche.Location = New System.Drawing.Point(351, 52) + Me.txtSuche.MaxLength = 30 + Me.txtSuche.Name = "txtSuche" + Me.txtSuche.Size = New System.Drawing.Size(98, 20) + Me.txtSuche.TabIndex = 2 + ' + 'Label3 + ' + Me.Label3.AutoSize = True + Me.Label3.Location = New System.Drawing.Point(189, 11) + Me.Label3.Name = "Label3" + Me.Label3.Size = New System.Drawing.Size(50, 13) + Me.Label3.TabIndex = 14 + Me.Label3.Text = "Auswahl:" + ' + 'lblSuche + ' + Me.lblSuche.AutoSize = True + Me.lblSuche.Location = New System.Drawing.Point(286, 55) + Me.lblSuche.Name = "lblSuche" + Me.lblSuche.Size = New System.Drawing.Size(38, 13) + Me.lblSuche.TabIndex = 14 + Me.lblSuche.Text = "Suche" + ' + 'gridParkzeiten + ' + Me.gridParkzeiten.AllowUserToAddRows = False + Me.gridParkzeiten.AllowUserToDeleteRows = False + Me.gridParkzeiten.AllowUserToResizeRows = False + Me.gridParkzeiten.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.gridParkzeiten.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight + DataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft + DataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.ActiveCaption + DataGridViewCellStyle1.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + DataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText + DataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight + DataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText + DataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] + Me.gridParkzeiten.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle1 + Me.gridParkzeiten.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize + Me.gridParkzeiten.Location = New System.Drawing.Point(0, 78) + Me.gridParkzeiten.MultiSelect = False + Me.gridParkzeiten.Name = "gridParkzeiten" + Me.gridParkzeiten.ReadOnly = True + Me.gridParkzeiten.RowHeadersVisible = False + DataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.WindowText + Me.gridParkzeiten.RowsDefaultCellStyle = DataGridViewCellStyle2 + Me.gridParkzeiten.RowTemplate.Height = 18 + Me.gridParkzeiten.RowTemplate.ReadOnly = True + Me.gridParkzeiten.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect + Me.gridParkzeiten.Size = New System.Drawing.Size(680, 580) + Me.gridParkzeiten.TabIndex = 5 + Me.gridParkzeiten.TabStop = False + ' + 'ContextMenuStrip1 + ' + Me.ContextMenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuLöschen}) + Me.ContextMenuStrip1.Name = "ContextMenuStrip1" + Me.ContextMenuStrip1.Size = New System.Drawing.Size(156, 26) + ' + 'mnuLöschen + ' + Me.mnuLöschen.Name = "mnuLöschen" + Me.mnuLöschen.Size = New System.Drawing.Size(155, 22) + Me.mnuLöschen.Text = "Eintrag löschen" + ' + 'frmMain + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(680, 658) + Me.Controls.Add(Me.Panel1) + Me.Controls.Add(Me.gridParkzeiten) + Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) + Me.Name = "frmMain" + Me.Text = "Erfassung LKW Liste Parkplatz" + Me.Panel1.ResumeLayout(False) + Me.Panel1.PerformLayout() + CType(Me.picLogo, System.ComponentModel.ISupportInitialize).EndInit() + Me.Panel2.ResumeLayout(False) + Me.Panel2.PerformLayout() + CType(Me.gridParkzeiten, System.ComponentModel.ISupportInitialize).EndInit() + Me.ContextMenuStrip1.ResumeLayout(False) + Me.ResumeLayout(False) + + End Sub + Friend WithEvents Panel1 As System.Windows.Forms.Panel + Friend WithEvents txtSuche As System.Windows.Forms.TextBox + Friend WithEvents lblSuche As System.Windows.Forms.Label + Friend WithEvents gridParkzeiten As System.Windows.Forms.DataGridView + Friend WithEvents dtpBis As System.Windows.Forms.DateTimePicker + Friend WithEvents dtpVon As System.Windows.Forms.DateTimePicker + Friend WithEvents Label4 As System.Windows.Forms.Label + Friend WithEvents Label14 As System.Windows.Forms.Label + Friend WithEvents btnErfassen As System.Windows.Forms.Button + Friend WithEvents Label3 As System.Windows.Forms.Label + Friend WithEvents btnAuswerten As System.Windows.Forms.Button + Friend WithEvents Panel2 As System.Windows.Forms.Panel + Friend WithEvents picLogo As System.Windows.Forms.PictureBox + Friend WithEvents lblAnzahl As System.Windows.Forms.Label + Friend WithEvents btnInfo As System.Windows.Forms.Button + Friend WithEvents ContextMenuStrip1 As System.Windows.Forms.ContextMenuStrip + Friend WithEvents mnuLöschen As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents Label1 As System.Windows.Forms.Label + +End Class diff --git a/Parkzeit/frmMain.resx b/Parkzeit/frmMain.resx new file mode 100644 index 0000000..dac2c2a --- /dev/null +++ b/Parkzeit/frmMain.resx @@ -0,0 +1,1282 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + y97vd7vzAwbpe/apP/2DPu/e9x+fux//2Q== + + + + 17, 17 + + + + AAABAAEAICAAAAEAGACoDAAAFgAAACgAAAAgAAAAQAAAAAEAGAAAAAAAgAwAAMQOAADEDgAAAAAAAAAA + AABmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwB0SSb////3 + 9fR0SSZmMwCjjH3///////////////+YfWvBs6r///90SSajjH3///+tmo23p5z///+AXUJmMwDUy8X3 + 9fRmMwCYfWv39fT////m4N3///9mMwBmMwBmMwCYfWv////39fS3p5xmMwB0SSb////Bs6pmMwBmMwBm + MwCtmo3///+MbljLv7j39fRmMwBmMwDm4N3////////////Uy8VmMwDm4N3m4N2MbljBs6r///+Mblhm + MwBmMwC3p5z///+tmo3///+AXUJmMwD39fT///////////+AXUKMblj////////////39fS3p5xmMwCY + fWv///+Mblj////Bs6pmMwDu6+nUy8W3p5z///////+tmo1mMwBmMwDLv7j39fRmMwDd1tHLv7hmMwDU + y8X39fRmMwBmMwBmMwBmMwD39fTLv7hmMwDLv7j///90SSZmMwDUy8Xm4N3///+jjH1mMwDBs6r///+M + bliYfWv///+3p5xmMwBmMwDm4N3m4N1mMwCAXUL///+Mbli3p5z///////////////90SSbm4N3///// + ///////Lv7hmMwBmMwCAXUL///////+MblhmMwBmMwDUy8X////////m4N10SSZmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwD///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////Bs6rBs6rBs6rBs6r///////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////+AXUJmMwBmMwBmMwD///////////////////////////////////////////////////// + //////////////////////////////////////////////////////////+AXUJmMwBmMwBmMwD///// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////+AXUJmMwBmMwBmMwD///////////////////////////////////// + //////////////////////////////////////////////////////////////////////////+AXUJm + MwBmMwBmMwDBs6rBs6rBs6rBs6rBs6r///////////////////////////////////////////////// + //////////////////////////////////////////+AXUJmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwDUy8X///////////////////////////////////////////////////////////////////////// + //////////+AXUJmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwDd1tH///////////////////// + //////////////////////////////////////////////////////////+AXUJmMwBmMwCAXUL///// + //////+YfWtmMwBmMwBmMwC3p5z///////////////////////////////////////////////////// + //////////////////////////+AXUJmMwBmMwCAXUL////////////Lv7hmMwBmMwBmMwCtmo3///// + //////////////////////////////////////////////////////////////////////////+AXUJm + MwBmMwB0SSbBs6rBs6q3p5xmMwBmMwBmMwBmMwDBs6r///////////////////////////////////// + //////////////////////////////////////////+AXUJmMwBmMwBmMwBmMwBmMwBmMwBmMwBmMwBm + MwCMblj39fT///////////////////////////////////////////////////////////////////// + //////////+AXUJmMwBmMwBmMwBmMwBmMwBmMwBmMwB0SSbBs6r///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + + \ No newline at end of file diff --git a/Parkzeit/frmMain.vb b/Parkzeit/frmMain.vb new file mode 100644 index 0000000..9647277 --- /dev/null +++ b/Parkzeit/frmMain.vb @@ -0,0 +1,253 @@ +Imports System.IO +Imports System.Windows.Forms +Imports Parkzeit.cMeineFunktionen +Imports System.Data.SqlClient +Imports System.ComponentModel + +Public Class frmMain + Public Shared ConnStr As String + Public Shared ConnStrInfo As String + Public Shared Aktive_ID As Integer + Public Shared Optionen As New cOptionen + Public Shared Ausgewählte_Zeile As Integer = 0 + Private Parkzeiten As New cParkzeitenDAL + Private locZeilen As Integer = -1 + Private Anzahl As Integer + Private Grid_aktiv As Boolean = False + Private Suche_freigegeben As Boolean = False + + Private Sub frmMain_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load + 'InitializeComponent() + Icon = GetProgrammIcon() + + ''aktuelle DB zuweisen + 'Dim pfadDatei As String = "C:\Projekte.NET\Verag\Parkzeit\Parkzeit.accdb" + ' If Not File.Exists(pfadDatei) Then + 'MsgBox("nicht gefunden: " & pfadDatei) + 'Sonderfall zum Debuggen + 'pfadDatei = Application.StartupPath & "\Parkzeit.accdb" + ' End If + + ' If Not File.Exists(pfadDatei) Then + 'MsgBox("Auf die Datenbank '" & pfadDatei & "' konnte nicht zugegriffen werden!" & vbCrLf & vbCrLf & _ + ' "Bitte verständigen Sie den zuständigen Administrator.", vbExclamation, "Fehler Datenbank") + ' Environment.Exit(0) + 'Me.Close() + ' End If + 'ConnStr = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & pfadDatei + 'ConnStr = "Provider=SQLOLEDB;Server=DEVELOPER\DEVSQL;Database=Parkzeit;uid=sa;Password=BmWr501956;" + 'Dim tmp As String + 'tmp = "Provider=SQLOLEDB;Server=DEVELOPER\DEVSQL;Database=Parkzeit;" + + ' ConnStrInfo = tmp & "uid=**;password=*********" + ' ConnStr = tmp & "uid=sa;password=BmWr501956" + 'Server=DEVELOPER\DEVSQL;database=Parkzeit;User ID=sa;Pwd=BmWr501956 + 'jetzt noch Optionen laden + Dim OptionenDAL As New cOptionenDAL + Optionen = OptionenDAL.LesenOptionen() + If IsNothing(Optionen) Then + MsgBox("Fehler beim Laden der Optionen. Standardwerte werden eventuell nicht richtig vorgegeben.", vbCritical) + Me.Close() + End If + + 'Position+Größe wird in ApplicationSettings vom Formular gespeichert + Try + Me.Size = My.Settings.frmMainSize + Me.Location = My.Settings.frmMainPosition + Catch ex As Exception + 'nix tun - Standardgröße wird somit automatisch gesetzt + End Try + + 'Vorschlagswerte vergeben + dtpVon.Value = DateSerial(Now.Date.AddMonths(-1).Year, Now.Date.AddMonths(-1).Month, 1) + dtpBis.Value = Now.Date.AddDays(1) + 'txtKosten.Text = Format(Optionen.Kosten_je_Stunde, "#0.00") + dtpVon.Refresh() + dtpBis.Refresh() + 'txtKosten.Refresh() + + Grid_aktiv = True + Tabelle_anzeigen() + + + ' Spalten_festlegen() 'AL: Hat Fehler beim Start ausgelöst, wenn keine Daten vorhanden. + + + Suche_freigegeben = True + + End Sub + + Private Sub frmMain_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed + My.Settings.frmMainSize = Me.Size + My.Settings.frmMainPosition = Me.Location + My.Settings.Save() + Application.Exit() + End Sub + + Public Sub Tabelle_anzeigen() + Dim msStart As Long = CLng((DateTime.Now - New DateTime(1970, 1, 1)).TotalMilliseconds) + 'Paint wieder reaktivieren + locZeilen = -1 + If Not Grid_aktiv Then Exit Sub + + + 'je nach Auswahl SQL anpassen + Dim hSQL As String = "SELECT * FROM Parkzeiten WHERE Von >= " & SQLDatum(dtpVon.Value) & + " AND Von <= " & SQLDatum(dtpBis.Value.AddDays(1)) + + If txtSuche.Text <> "" Then + hSQL += " AND Kennzeichen LIKE '%" & txtSuche.Text & "%'" + End If + + hSQL += " ORDER BY Laufende_Nr, Von" + + gridParkzeiten.DataSource = Parkzeiten.AnzeigeTabelle(hSQL) + + 'Tabelle Kommt/Geht bereinigen + If gridParkzeiten.RowCount = 0 Then + gridParkzeiten.DataSource = Nothing + Else + Spalten_festlegen() + 'AL: Sortierung nach Ausfahrt (Zeit) + gridParkzeiten.Sort(gridParkzeiten.Columns(3), ListSortDirection.Descending) + End If + + 'Anzeige der Anzahl gewählter/aller Datensätze + lblAnzahl.Text = Format(gridParkzeiten.RowCount, "#,##0") & " ausgewählt" + lblAnzahl.Refresh() + + Dim msEnd As Long = CLng((DateTime.Now - New DateTime(1970, 1, 1)).TotalMilliseconds) + Label1.Text = "" & (msEnd - msStart) & " ms" + + End Sub + + Private Sub Spalten_festlegen() + With gridParkzeiten + .Columns(0).Visible = False 'ID nicht anzeigen + + .Columns(1).Width = 50 + .Columns(1).HeaderText = "lfd.Nr" + .Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter + + .Columns(2).Width = 120 + .Columns(2).HeaderText = "Einfahrt" + .Columns(2).DefaultCellStyle.Format = "dd.MM.yyyy HH:mm" + + .Columns(3).Width = 120 + .Columns(3).HeaderText = "Ausfahrt" + .Columns(3).DefaultCellStyle.Format = "dd.MM.yyyy HH:mm" + + .Columns(4).Width = 80 + .Columns(4).HeaderText = "Dauer Std" + .Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter + + .Columns(5).Visible = False 'Dauer in Minuten wird nicht angezeigt + + .Columns(6).Width = 300 + .Columns(6).HeaderText = "LKW-Kennzeichen" + End With + + End Sub + + Private Sub btnInfo_Click(sender As System.Object, e As System.EventArgs) Handles btnInfo.Click + Dim f As New frmInfo + f.ShowDialog(Me) + End Sub + + Private Sub btnErfassen_Click(sender As System.Object, e As System.EventArgs) Handles btnErfassen.Click + Dim f As New frmEintragParkzeit + Aktive_ID = 0 'neue Einträge + f.ShowDialog(Me) + End Sub + + Private Sub btnAuswerten_Click(sender As System.Object, e As System.EventArgs) Handles btnAuswerten.Click + Dim f As New frmAuswahl_Abrechnung + f.ShowDialog(Me) + End Sub + + Private Sub dtpDatum_ValueChanged(sender As System.Object, e As System.EventArgs) Handles dtpVon.ValueChanged, dtpBis.ValueChanged + If Not Suche_freigegeben Then Exit Sub + + Tabelle_anzeigen() + End Sub + + Private Sub txtSuche_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtSuche.TextChanged + If Not Suche_freigegeben Then Exit Sub + + Tabelle_anzeigen() + End Sub + + Private Sub gridParkzeiten_CellMouseClick(sender As Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles gridParkzeiten.CellMouseClick + 'Bei Rechtsklick mit Maus die betroffene Zeile markieren + + If e.RowIndex < 0 Then Exit Sub 'Es wurde außerhalb einer gültigen Datenzeile geklickt + + If e.Button = Windows.Forms.MouseButtons.Right Then + gridParkzeiten.CurrentCell = gridParkzeiten.Rows(e.RowIndex).Cells(e.ColumnIndex) + ContextMenuStrip1.Show(Windows.Forms.Cursor.Position) + End If + End Sub + + + Private Sub gridParkzeiten_DoubleClick(sender As Object, e As System.EventArgs) Handles gridParkzeiten.DoubleClick + Try + + Aktive_ID = CInt(gridParkzeiten.Rows(gridParkzeiten.CurrentRow.Index).Cells("ParkzeitID").Value) + + Ausgewählte_Zeile = gridParkzeiten.CurrentRow.Index + Dim f As New frmEintragParkzeit + f.ShowDialog(Me) + + 'falls Änderung, dann die neuen Werte in Grid anzeigen + If Ausgewählte_Zeile >= 0 Then + Dim hParkzeit As cParkzeit = Parkzeiten.LesenParkzeit(Aktive_ID, "") + If Not IsNothing(hParkzeit) Then + gridParkzeiten.Rows(Ausgewählte_Zeile).Cells(1).Value = hParkzeit.Laufende_Nr + gridParkzeiten.Rows(Ausgewählte_Zeile).Cells(2).Value = hParkzeit.Von + gridParkzeiten.Rows(Ausgewählte_Zeile).Cells(3).Value = hParkzeit.Bis + gridParkzeiten.Rows(Ausgewählte_Zeile).Cells(4).Value = hParkzeit.Dauer + gridParkzeiten.Rows(Ausgewählte_Zeile).Cells(5).Value = hParkzeit.Dauer_Minuten + gridParkzeiten.Rows(Ausgewählte_Zeile).Cells(6).Value = hParkzeit.Kennzeichen + End If + End If + + Catch ex As Exception + + End Try + End Sub + + + Private Sub mnuLöschen_Click(sender As System.Object, e As System.EventArgs) Handles mnuLöschen.Click + Aktive_ID = CInt(gridParkzeiten.Rows(gridParkzeiten.CurrentRow.Index).Cells("ParkzeitID").Value) + + Dim antwort = MsgBox("Möchten Sie die ausgewählte Parkzeit wirklich löschen?", CType(vbQuestion + vbYesNo + vbDefaultButton2, MsgBoxStyle), "Bilanzeintrag löschen") + If antwort = vbNo Then Exit Sub + + Parkzeiten.LöschenParkZeit(Aktive_ID) + + Tabelle_anzeigen() + End Sub + + + Private Sub Button1_Click(sender As Object, e As EventArgs) + Dim conString As String + 'conString = "Server=BEVPC\SQLExpress;database=MSDNSolve;Integrated Security=true" + conString = "Server=DEVELOPER\DEVSQL;database=Parkzeit;User ID=sa;Pwd=BmWr501956;" 'Application Name=MyApp + Dim con As SqlConnection = Nothing + Try + con = New SqlConnection(conString) + con.Open() + MessageBox.Show("Offen") + + Catch ex As Exception + MessageBox.Show(ex.Message) + Finally + If con.State <> ConnectionState.Closed Then con.Close() + End Try + con.Dispose() + + ' myConnection.ConnectionString = "Server=DEVELOPER\DEVSQL;Database=Parkzeit;Uid=sa;Pwd=BmWr501956;" + + End Sub + +End Class diff --git a/Parkzeit/parkzeit.ico b/Parkzeit/parkzeit.ico new file mode 100644 index 0000000..03fae60 Binary files /dev/null and b/Parkzeit/parkzeit.ico differ diff --git a/Parkzeit/rptAbrechnung.rdlc b/Parkzeit/rptAbrechnung.rdlc new file mode 100644 index 0000000..6a26b26 --- /dev/null +++ b/Parkzeit/rptAbrechnung.rdlc @@ -0,0 +1,1029 @@ + + + + + + + + + 1.41227cm + + + 3.85999cm + + + 4.13723cm + + + 1.86959cm + + + 5.47136cm + + + 0.28194cm + + + + + 0.55001cm + + + + + true + true + + + + + =Fields!Laufende_Nr.Value + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Von.Value + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Bis.Value + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Dauer.Value + + + + Dauer + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Kennzeichen.Value + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + + + + + + + + + + 0.6cm + + + + + true + true + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + ="Gesamtsumme" + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!Gesamtdauer.Value + + + + + + + Textbox28 + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!Gesamtkosten.Value + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + + + + + + + Before + + + + DataSet1 + 0.09016cm + 0.07936cm + 1.15001cm + 17.03238cm + + + 8pt + + + + 0.48826in + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + lfd Nr + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Einfahrt + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Ausfahrt + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Dauer Std. + + + + + + + KundennummerHeader + 1.38215cm + 9.11868cm + 0.19968in + 0.77763in + 4 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!SelektionText.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + LKW-Kennzeichen + + + + + + + KundennummerHeader + 1.38215cm + 11.09386cm + 0.19968in + 1.30903in + 6 + + + 2pt + 2pt + 2pt + 2pt + + + + Embedded + Logo_Waberer2 + FitProportional + 0.15028cm + 14.54362cm + 1.05548cm + 2.56813cm + 7 + + + + + + 1.88934cm + 0.07937cm + 0cm + 17.03238cm + 8 + + + + + + + + + + + 0.74083cm + true + true + + + true + true + + + + + =Parameters!Firmenname.Value + + + + + + + Textbox16 + 0.17637cm + 5.35161cm + 0.49445cm + 5.40723cm + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + ="Seite " & Globals!PageNumber & " von " & Globals!TotalPages + + + + + + + Textbox16 + 0.14109cm + 11.20053cm + 0.49445cm + 5.91122cm + 1 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + ="Druck erstellt am " & format(Globals!ExecutionTime,"dd.MM.yyyy HH:mm") + + + + + + 2pt + 2pt + 2pt + 2pt + + + + 0.07054cm + 0.15875cm + 0cm + 16.953cm + 3 + + 0.5pt + + + + + + + + + 29.7cm + 21cm + 2cm + 1cm + 1.5cm + 1cm + 0.13cm +