'Robin De Bock Created:03/08/2018 Changed:13/08/2018 Imports System.Data.SqlClient Module WinStoreMapper Private ReadOnly SqlConnection As New SqlConnection With {.ConnectionString = My.Settings.WinStoreConnectieString} Private Sub ConnectToWinStore() If Not SqlConnection.State = ConnectionState.Open Then Try SqlConnection.Open() Catch ex As Exception Throw New Exception("De WinStore databank kan niet bereikt worden " & vbNewLine & ex.Message) End Try End If End Sub Private Function ExecuteIntoDataReader(query As String) As SqlDataReader ConnectToWinStore() Try Dim comm As SqlCommand = New SqlCommand(query, sqlConnection) Dim reader As SqlDataReader = comm.ExecuteReader() Return reader Catch ex As Exception Throw New Exception("Er is een fout opgetreden bij het opvragen van de DataReader uit de WinStore databank" & vbNewLine & ex.Message) End Try End Function Private Function ExecuteIntoListOfString(Query As String) As List(Of String) Dim result As New List(Of String) Dim dr As SqlDataReader = Nothing Try ConnectToWinStore() Dim comm As SqlCommand = New SqlCommand(Query, sqlConnection) dr = comm.ExecuteReader While dr.Read result.Add(dr(0)) End While Catch ex As Exception Throw New Exception("Kon lijst niet opvragen uit WinStore" & vbNewLine & ex.Message) Finally If Not (dr Is Nothing OrElse dr.IsClosed) Then dr.Close() End If End Try Return result End Function Private Function ExecuteIntoListOfListOfString(Query As String) As List(Of List(Of String)) Dim result As New List(Of List(Of String)) Dim dr As SqlDataReader = Nothing Try ConnectToWinStore() Dim comm As SqlCommand = New SqlCommand(Query, sqlConnection) dr = comm.ExecuteReader Dim lijst As New List(Of String) While dr.Read lijst.Add(dr(0)) lijst.Add(dr(1)) lijst.Add(dr(2)) result.Add(lijst) End While Catch ex As Exception Throw New Exception("Kon lijst niet opvragen uit WinStore" & vbNewLine & ex.Message) Finally If Not (dr Is Nothing OrElse dr.IsClosed) Then dr.Close() End If End Try Return result End Function Public Function GeefVoorraadInfoZonderRestStukken(voorraadPlaats As VoorraadPlaats) As SqlDataReader Dim query As String = "with tabelOverzichtAanwezig(Code, Aantal, Materiaal) as ( select Codice, Qta, CodiceMateriale FROM [HALUX].[dbo].[tPacchi] where CodiceMateriale <> '' and (select idmagazzino from [HALUX].[dbo].[tPostazioni] where IdPostazione = id) = " & voorraadPlaats & " ) , tabelCodesEnMaterialen(Code, Materiaal) as ( select Codice, CodiceMateriale FROM [HALUX].[dbo].[tAnaPannelli] ) , tabelOnderdelenNietGemeenschappelijk(Code, Materiaal) as ( select Code, Materiaal from tabelCodesEnMaterialen where Code not in (select code from tabelOverzichtAanwezig) ) select Code, sum(aantal)as Aantal, Materiaal from tabelOverzichtAanwezig group by Materiaal, Code union select code, '0', materiaal from tabelOnderdelenNietGemeenschappelijk" Try Return ExecuteIntoDataReader(query) Catch ex As Exception Throw New Exception("Kon info voorraad, voor plaats: '" & EnumMapper.geefWaardeBijEnumValue(voorraadPlaats) & "' zonder rest stukken niet opvragen uit WinStore" & vbNewLine & ex.Message) End Try End Function Public Function GeefVoorraadInfoZonderRestStukkenStock() As List(Of StockItem) Dim query As String = "with tabelStockTelling(Id, Code, Aantal, Materiaal, Plaats) as ( select id,Codice,Qta,CodiceMateriale,(select idmagazzino from [HALUX].[dbo].[tPostazioni] where IdPostazione = id) FROM [HALUX].[dbo].[tPacchi] ) select Id,Code, Aantal, Materiaal from tabelStockTelling where plaats = " & VoorraadPlaats.Extern & " and Materiaal <> '' order by plaats" Try Dim stockItems As New List(Of StockItem) Dim dr As SqlDataReader = ExecuteIntoDataReader(query) While dr.Read Dim stockItem As New StockItem stockItem.Id = dr(0) stockItem.Code = dr(1) stockItem.Aantal = dr(2) stockItem.Materiaal = dr(3) stockItems.Add(stockItem) End While dr.Close() Return stockItems Catch ex As Exception Throw New Exception("Kon info voorraad stock zonder rest stukken niet opvragen uit WinStore" & vbNewLine & ex.Message) End Try End Function Public Function GeefVoorraadMateriaalNamen() As List(Of String) Dim query As String = "SELECT distinct [CodiceMateriale] FROM [HALUX].[dbo].[tAnaPannelli]" Try Return ExecuteIntoListOfString(query) Catch ex As Exception Throw New Exception("Kon info voorraad materialen niet opvragen uit WinStore" & vbNewLine & ex.Message) End Try End Function Public Function GeefVoorraadInfoZonderRestStukkenAlsLijst(voorraadPlaats As VoorraadPlaats) As List(Of List(Of String)) Dim query As String = "with tabelOverzichtAanwezig(Code, Aantal, Materiaal) as ( select Codice, Qta, CodiceMateriale FROM [HALUX].[dbo].[tPacchi] where CodiceMateriale <> '' and (select idmagazzino from [HALUX].[dbo].[tPostazioni] where IdPostazione = id) = " & voorraadPlaats & " ) , tabelCodesEnMaterialen(Code, Materiaal) as ( select Codice, CodiceMateriale FROM [HALUX].[dbo].[tAnaPannelli] ) , tabelOnderdelenNietGemeenschappelijk(Code, Materiaal) as ( select Code, Materiaal from tabelCodesEnMaterialen where Code not in (select code from tabelOverzichtAanwezig) ) select Code, sum(aantal)as Aantal, Materiaal from tabelOverzichtAanwezig group by Materiaal, Code union select code, '0', materiaal from tabelOnderdelenNietGemeenschappelijk" Try Return ExecuteIntoListOfListOfString(query) Catch ex As Exception Throw New Exception("Kon info voorraad, voor plaats: '" & EnumMapper.geefWaardeBijEnumValue(voorraadPlaats) & "' zonder rest stukken niet opvragen uit WinStore" & vbNewLine & ex.Message) End Try End Function End Module