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