Imports System.Data.SqlClient Public Module ArdisMapper Private ReadOnly SqlConnection As New SqlConnection With {.ConnectionString = "Server=Ardisserver\SQLEXPRESS; database=VH_Ardis_TST; user=VH_write; Pwd=SQLwr!t3"} Private _command As SqlCommand ''' ''' Hulpfunctie voor te connecteren met Ardis. ''' Private Sub ConnectToArdis() If Not SqlConnection.State = ConnectionState.Open Then Try SqlConnection.Open() Catch ex As Exception Throw New Exception($"De Ardis databank kan niet bereikt worden {vbNewLine}{ex.Message}") End Try End If End Sub ''' ''' Uitvoeren van een query naar een data reader. ''' ''' De query ''' De ODBC data reader Private Function ExecuteIntoDataReader(query As String) As SqlDataReader Try ConnectToArdis() Return New SqlCommand(query, SqlConnection).ExecuteReader() Catch ex As Exception Throw New Exception($"Kon datareader niet opvragen uit Ardis datatabank.{vbNewLine}{ex.Message}") End Try End Function ''' ''' Commando uitvoeren en eerste items per record retourneren als lijst van strings. ''' ''' De query ''' De eerste items van de records. Private Function ExecuteIntoListOfString(query As String) As List(Of String) Try 'Initialisatie van de lijst. Dim data As New List(Of String) 'Opvragen van de data reader. Dim dr = ExecuteIntoDataReader(query) 'Overlopen van de resultaten en toevoegen aan de lijst. While (dr.Read()) 'Eerste veld van een record toevoegen aan de lijst. data.Add(dr.GetValue(0).ToString) End While 'De lijst retourneren. Return data Catch ex As Exception Throw New Exception($"Er is een fout opgetreden bij het opvragen van een lijst van data uit de Ardis databank {vbNewLine}{ex.Message}") End Try End Function ''' ''' Hulpfunctie voor een query uit te voeren en het resultaat ''' ''' te converteren naar 'ArdisData'. ''' De gevulde ArdisData Private Function ExecuteIntoResultset(query As String) As ArdisData Dim ardisData As ArdisData = Nothing 'Data reader opvragen. Dim dr = ExecuteIntoDataReader(query) 'Datareader lezen, eerste record ophalen en retourneren als Ardis data. dr.Read() ardisData = New ArdisData With { .PartId = CStr(dr.Item("PartId")), .OrderId = CStr(dr.Item("OrderId")), .PartRef = CStr(dr.Item("PartRef")), .PartQty = CStr(dr.Item("PartQty")), .PartMat = CStr(dr.Item("PartMat")), .PartL = CStr(dr.Item("PartL")), .PartW = CStr(dr.Item("PartW")), .PartCalc = CStr(dr.Item("PartCalc")), .PartRemark = CStr(dr.Item("PartRemark")), .PartRemark2 = CStr(dr.Item("PartRemark2")), .PartRemark3 = CStr(dr.Item("PartRemark3")), .PartGroup = CStr(dr.Item("PartGroup")), .PartLevel = CStr(dr.Item("PartLevel")), .PartExt01 = CStr(dr.Item("PartExt01")), .PartExt02 = CStr(dr.Item("PartExt02")), .PartExt03 = CStr(dr.Item("PartExt03")), .PartExt04 = CStr(dr.Item("PartExt04")), .PartExt05 = If(IsDBNull(dr.Item("PartExt05")), Nothing, CStr(dr.Item("PartExt05"))), .PartExt06 = CStr(dr.Item("PartExt06")), .PartExt07 = CStr(dr.Item("PartExt07")), .PartExt08 = CStr(dr.Item("PartExt08")), .PartExt09 = CStr(dr.Item("PartExt09")), .PartD = CStr(dr.Item("PartD")), .PartProd = CStr(dr.Item("PartProd")), .GroupCode = If(IsDBNull(dr.Item("GroupCode")), Nothing, CStr(dr.Item("GroupCode"))), .Status = CStr(dr.Item("Status")), .Inserted = CStr(dr.Item("Inserted")), .LastChanged = CStr(dr.Item("LastChanged")), .PartQtyCut = If(IsDBNull(dr.Item("PartQtyCut")), Nothing, CStr(dr.Item("PartQtyCut"))), .PartExt10 = If(IsDBNull(dr.Item("PartExt10")), Nothing, CStr(dr.Item("PartExt10"))), .PartExt11 = If(IsDBNull(dr.Item("PartExt11")), Nothing, CStr(dr.Item("PartExt11"))) } Return ardisData End Function ''' ''' Ophalen van ArdisData aan de hand van een barcodeId. ''' ''' Het barcodeId ''' De ArdisData Public Function OphalenData(barcodeId As String) As ArdisData Try LogBestandTextMapper.writeToFile("Ardis", $"Opvragen van Ardisdata met barcode '{barcodeId}'") 'Opbouwen query. Const lijstKolommen = "PartId, OrderId, PartRef, PartQty, PartMat, PartL, PartW, PartCalc, PartRemark, PartRemark2, PartRemark3, PartGroup, PartLevel, PartExt01, PartExt02, PartExt03, PartExt04, PartExt05, PartExt06, PartExt07, PartExt08, PartExt09, PartD, PartProd, GroupCode, Status, Inserted, LastChanged, PartQtyCut, PartExt10, PartExt11" Dim query As String = $"Select top 1 {lijstKolommen} From [VH_Ardis_TST].[dbo].[Parts] where PartCalc='{barcodeId}'" 'Query uitvoeren en resultaat retourneren. Dim resultaat = ExecuteIntoResultset(query) LogBestandTextMapper.writeToFile("Ardis", $"Opvragen van Ardisdata met barcode '{barcodeId}'", True) Return resultaat Catch ex As Exception Throw New Exception($"Kon ArdisData niet ophalen uit Ardis met barcode '{barcodeId}'{vbNewLine}{ex.Message}") End Try End Function ''' ''' Opvragen van barcodes aan de hand van parameters. ''' ''' De PartGroup ''' De PartExt02 ''' De PartL ''' L of R ''' Lijst van barcodes Public Function GeefBarcodes(ByVal partgroup As String, ByVal partExt02 As String, ByVal partL As String, ByVal linksOfRechts As String) As List(Of String) Try LogBestandTextMapper.writeToFile("Ardis", $"Opvragen van barcodes met info Partgroup, PartExt02, LinksOfRechts: {partgroup}{partExt02}{linksOfRechts}") 'Query opbouwen. Dim query As String = $"select distinct PartCalc from [VH_Ardis_TST].[dbo].[Parts] where partgroup='{partgroup}' and partext02='{partExt02}' and partl='{partL}' and partext01 like 'ZIJ-{linksOfRechts}%'" 'Query uitvoeren en resultaat retourneren. Dim result = ExecuteIntoListOfString(query) LogBestandTextMapper.writeToFile("Ardis", $"Opvragen van barcodes met info Partgroup, PartExt02, LinksOfRechts: {partgroup}{partExt02}{linksOfRechts}", True) Return result Catch ex As Exception Throw New Exception($"Kon barcodes niet ophalen uit Ardis met Partgroup, PartExt02, LinksOfRechts: {partgroup}{partExt02}{linksOfRechts}{vbNewLine}{ex.Message}") End Try End Function ''' ''' Opvragen van barcodes aan de hand van parameters voor gegenereerde plankjes. ''' ''' De PartGroup ''' De PartExt02 ''' De PartL ''' Lijst van barcodes Public Function GeefBarcodesGegenereerdePlankjes(partgroup As String, partExt02 As String, partL As String) As List(Of String) Try LogBestandTextMapper.writeToFile("Ardis", $"Opvragen van barcodes gegenereerde plankjes met info Partgroup, PartExt02, PartL: '{partgroup}' '{partExt02}' '{partL}'") 'Query opbouwen. Dim query = $"select top 2 PartCalc from [VH_Ardis_TST].[dbo].[Parts] where partgroup='{partgroup}' and partext02='{partExt02}' and partl='{partL}' and partext01 like '%ZIJ-%' and (partext09 ='A' or partext09='B') order by partid desc" 'Query uitvoeren en resultaat retourneren. Dim result = ExecuteIntoListOfString(query) LogBestandTextMapper.writeToFile("Ardis", $"Opvragen van barcodes gegenereerde plankjes met info Partgroup, PartExt02, PartL: '{partgroup}' '{partExt02}' '{partL}'", True) Return result Catch ex As Exception Throw New Exception($"Kon barcodes voor gegenereerde plankjes niet ophalen uit Ardis met Partgroup, PartExt02, LinksOfRechts: '{partgroup}' '{partExt02}' '{partL}' {vbNewLine}{ex.Message}") End Try End Function ''' ''' Opvragen van de originele barcodes bij gegenereerde plankjes. ''' ''' De PartGroup ''' De PartExt02 ''' De PartL ''' Lijst van barcodes Public Function GeefBarcodeOrigineleBijGegenereerdePlankjes(ByVal partgroup As String, ByVal partExt02 As String, ByVal partL As String) As List(Of String) Try LogBestandTextMapper.writeToFile("Ardis", $"Opvragen van barcodes originele plankjes met info Partgroup, PartExt02, PartL: '{partgroup}' '{partExt02}' '{partL}'") 'Query opbouwen. Dim query = $"select top 4 PartCalc from [VH_Ardis_TST].[dbo].[Parts] where partgroup='{partgroup}' and partext02='{partExt02}' and partl='{partL}' and partext01 like '%ZIJ-%' and (partext09 ='A' or partext09='B') order by partid desc" 'Query uitvoeren en resultaat retourneren. Dim result = ExecuteIntoListOfString(query) LogBestandTextMapper.writeToFile("Ardis", $"Opvragen van barcodes originele plankjes met info Partgroup, PartExt02, PartL: '{partgroup}' '{partExt02}' '{partL}'", True) Return result Catch ex As Exception Throw New Exception($"Kon barcodes voor originele plankjes niet ophalen uit Ardis met Partgroup, PartExt02, LinksOfRechts: '{partgroup}' '{partExt02}' '{partL}' {vbNewLine}{ex.Message}") End Try End Function ''' ''' Opvragen van de datatable aan de hand van de PartCalc. ''' ''' De PartCalc ''' De data table Public Function GeefDataTable(partCalc As String) As DataTable Try LogBestandTextMapper.writeToFile("Ardis", $"Opvragen van data table met partCalc: '{partCalc}'") 'Query opbouwen. Dim query As String = $"select SUBSTRING(PartGroup, 0, 6) as BatchID, 'ToeleveringID' as ToeleveringID, substring(substring(PartExt03, CHARINDEX('/',PartExt03)+1, len(partext03)), CHARINDEX('/',substring(PartExt03, CHARINDEX('/',PartExt03)+1, len(partext03)))+1, CHARINDEX('/', substring(substring(PartExt03, CHARINDEX('/',PartExt03)+1, len(partext03)), CHARINDEX('/',substring(PartExt03, CHARINDEX('/',PartExt03)+1, len(partext03)))+1, len(partext03)))-1) as Naam, PartRemark as DossierCode, substring(substring(PartExt02, CHARINDEX('/',PartExt02)+1, len(partext02)), CHARINDEX('/',substring(PartExt02, CHARINDEX('/',PartExt02)+1, len(partext02)))+1,len(partext02)) as Kar, PartCalc as VerwerkingID, case PartRef when 'ZijkantPlaat' then 'Zijkant' else Partref end as Onderdeel, -1 as Status, 0 as Rework FROM [VH_Ardis_TST].[dbo].[Parts] where Partcalc ='{partCalc}' and PartRemark3='NoRework'" 'Datareader opvragen en bijhouden. Dim dataReader = ExecuteIntoDataReader(query) 'DataTable initialiseren en vullen met resultaat van de datareader. Dim datatable = New DataTable() datatable.Load(dataReader) 'Connectie van datareader sluiten. dataReader.Close() 'Log LogBestandTextMapper.writeToFile("Ardis", $"Opvragen van data table met partCalc: '{partCalc}'", True) 'Retourneren van de datatable Return datatable Catch ex As Exception Throw New Exception($"Er is een fout opgetreden bij het ophalen van de data table uit de Ardis databank {vbNewLine}{ex.Message}") End Try End Function End Module