Index: TAOR-rework-bugfixing/TAOR rework/databases/Cache/CacheMapper.vb =================================================================== diff -u -r1605 -r1606 --- TAOR-rework-bugfixing/TAOR rework/databases/Cache/CacheMapper.vb (.../CacheMapper.vb) (revision 1605) +++ TAOR-rework-bugfixing/TAOR rework/databases/Cache/CacheMapper.vb (.../CacheMapper.vb) (revision 1606) @@ -2,526 +2,539 @@ Imports System.Data.Odbc Imports System.Text - Module CacheMapper - Private Const CONNECTIE_STRING As String = "DSN=Cache01Admin1; DRIVER={InterSystems ODBC}; SERVER=CACHE01;DATABASE=ADMIN1;UID=_SYSTEM;PWD=SYS" - Private _sqlConnection As OdbcConnection +Module CacheMapper + Private Const CONNECTIE_STRING As String = "DSN=Cache01Admin1; DRIVER={InterSystems ODBC}; SERVER=CACHE01;DATABASE=ADMIN1;UID=_SYSTEM;PWD=SYS" + Private _sqlConnection As OdbcConnection - ''' - ''' Hulpfunctie om de SQLCOnnectie met Caché te openen. - ''' - Private Sub ConnectToCache() - Try - If _sqlConnection Is Nothing Then - 'Connectie initialiseren. - _sqlConnection = New OdbcConnection(CONNECTIE_STRING) - End If - 'Controleer of connectie status al open is. - If Not _sqlConnection.State = ConnectionState.Open Then - 'ALs dit nog niet het geval is, open de connectie. - _sqlConnection.Open() - End If - Catch ex As Exception - Throw New Exception($"De Caché databank kan niet bereikt worden: {vbNewLine}{ex.Message}") - End Try - End Sub +#Region "Hulpfuncties" + ''' + ''' Hulpfunctie om de SQLCOnnectie met Caché te openen. + ''' + Private Sub ConnectToCache() + Try + If _sqlConnection Is Nothing Then + 'Connectie initialiseren. + _sqlConnection = New OdbcConnection(CONNECTIE_STRING) + End If + 'Controleer of connectie status al open is. + If Not _sqlConnection.State = ConnectionState.Open Then + 'ALs dit nog niet het geval is, open de connectie. + _sqlConnection.Open() + End If + Catch ex As Exception + Throw New Exception($"De Caché databank kan niet bereikt worden: {vbNewLine}{ex.Message}") + End Try + End Sub - Private dr As OdbcDataReader + ''' + ''' Uitvoeren van een query naar een data reader. + ''' + ''' De query + ''' De ODBC data reader + Private Function ExecuteIntoDataReader(query As String) As OdbcDataReader + Try + ConnectToCache() + Return New OdbcCommand(query, _sqlConnection).ExecuteReader() + Catch ex As Exception + Throw New Exception($"Kon datareader niet opvragen uit Caché datatabank.{vbNewLine}{ex.Message}") + End Try + End Function - Private Sub ExecuteIntoDataReader(query As String) - Try - ConnectToCache() - sluitDataReader() - Dim comm As OdbcCommand = New OdbcCommand(query, _sqlConnection) - dr = comm.ExecuteReader() - Catch ex As Exception - Throw New Exception($"Er is een fout opgetreden bij het opvragen van de DataReader uit de Caché databank.{vbNewLine}{ex.Message}") - End Try - End Sub + ''' + ''' Uitvoeren van een commando. + ''' + ''' De query + Private Sub ExecuteCommand(query As String) + Try + ConnectToCache() + Dim command = New OdbcCommand(query, _sqlConnection) + command.ExecuteNonQuery() + Catch ex As Exception + Throw New Exception($"Het commando uitvoeren op de Caché databank.{vbNewLine}{ex.Message}") + End Try + End Sub - Private Function ExecuteIntoDataReader2(query As String) As OdbcDataReader - Try - ConnectToCache() - Return New OdbcCommand(query, _sqlConnection).ExecuteReader() - Catch ex As Exception - Throw New Exception($"Kon datareader niet opvragen uit Caché 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(ByVal query As String) As List(Of String) + Try + 'Initialisatie van de lijst. + Dim data As New List(Of String) - Private Sub executeCommand(query As String) - Try - ConnectToCache() - Dim comm As OdbcCommand = New OdbcCommand(query, _sqlConnection) - comm.ExecuteNonQuery() - Catch ex As Exception - Throw New Exception("De caché databank kan niet bereikt worden " & vbNewLine & ex.Message) - End Try - End Sub + 'Opvragen van de data reader. + Dim dr = ExecuteIntoDataReader(query) - Private Function executeIntoListOfString(ByVal query As String) As List(Of String) - Try - ConnectToCache() - Dim comm As OdbcCommand = New OdbcCommand(query, _sqlConnection) + '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 - Dim data As New List(Of String) + '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 Caché databank {vbNewLine}{ex.Message}") + End Try + End Function +#End Region - dr = comm.ExecuteReader() +#Region "Data readers" + ''' + ''' Opvragen van de datareader voor een bepaald kolom type, een waarde en een optionele filter. + ''' + ''' Het type kolom + ''' De waarde + ''' Een optionele filter + ''' + Private Function GetDataReader(kolom As Kolommen, waarde As String, Optional filter As String = Nothing) As OdbcDataReader + LogBestandTextMapper.writeToFile("Caché", $"Opvragen van DataReader met kolom, waarde, filter?: '{EnumMapper.geefWaardeBijEnumValue(kolom)}' '{waarde}' '{filter}'") + Try + Dim kolomnaam As String = EnumMapper.geefCacheKolomNaamBijKolom(kolom) + Dim equalsOfLikeSleutelwoord As String - While (dr.Read()) - data.Add(dr.GetValue(0).ToString) - End While + If Not kolom = Kolommen.klantnaam Then + 'Geen naam, aka gewoon equals. + equalsOfLikeSleutelwoord = "=" + Else + 'Als het een naam is moeten we "like" als sleutelwoord gebruiken. + equalsOfLikeSleutelwoord = "like" + 'Kijken of veld de naam bevat door gebruik te maken van reguliere expressie. + waarde = "%" + waarde + "%" + End If - Return data - Catch ex As Exception - Throw New Exception("Er is een fout opgetreden bij het opvragen van data uit de Caché databank" & vbNewLine & ex.Message) - End Try - End Function + 'Als de filter is meegegeven wordt de tekst juist opgebouwd. Anders is deze leeg, zodat het niet in de query wordt ingevuld. + Dim filterTekst = String.Empty + If filter IsNot Nothing Then + 'De filter is gespecifieerd. + filterTekst = $"AND Onderdeel = '{filter}'" + End If - Private Function GetDataReader(kolom As Kolommen, waarde As String) As OdbcDataReader - LogBestandTextMapper.writeToFile("Caché", $"Opvragen van DataReader met kolom, waarde: {EnumMapper.geefWaardeBijEnumValue(kolom)} {waarde}") - Try - Dim kolomnaam As String = EnumMapper.geefCacheKolomNaamBijKolom(kolom) - Dim equalsOfLikeSleutelwoord As String + 'De query wordt opgebouwd met de data en de eventuele filter. + Dim query = $"select BatchID, ToeleveringID, Klant.naam, log.dossiercode, Kar, log.VerwerkingID, Onderdeel, max(StapNummer) as VisualStyleElement.Status, sum(IsRework) as Rework from APPS_Halux_Opvolging_ProductieStap_TAOR_dto.ProductieStapLogItem log join derde_klant.klant on klant.ID=$Piece(log.PartijID,'||',2) where {kolomnaam} {equalsOfLikeSleutelwoord} '{waarde}' {filterTekst} group by BatchID, ToeleveringID,Klant.naam,log.VerwerkingID, log.dossiercode,Onderdeel, Kar order by BatchID, ToeleveringID, Kar" - If Not kolom = Kolommen.klantnaam Then - 'Geen naam, aka gewoon equals. - equalsOfLikeSleutelwoord = "=" - Else - 'Als het een naam is moeten we "like" als sleutelwoord gebruiken. - equalsOfLikeSleutelwoord = "like" - 'Kijken of veld de naam bevat door gebruik te maken van reguliere expressie. - waarde = "%" + waarde + "%" - End If + 'Uitvoeren van query en datareader retourneren. + Dim dr = ExecuteIntoDataReader(query) + LogBestandTextMapper.writeToFile("Caché", $"Opvragen van DataReader met kolom, waarde, filter?: '{EnumMapper.geefWaardeBijEnumValue(kolom)}' '{waarde}' '{filter}'", True) + Return dr + Catch ex As Exception + Throw New Exception($"Fout bij opvragen van DataReader met kolom, waarde, filter?: '{EnumMapper.geefWaardeBijEnumValue(kolom)}' '{waarde}' '{filter}'") + End Try + End Function - Dim query = $"select BatchID, ToeleveringID, Klant.naam, log.dossiercode, Kar, log.VerwerkingID, Onderdeel, max(StapNummer) as Status, sum(IsRework) as Rework from APPS_Halux_Opvolging_ProductieStap_TAOR_dto.ProductieStapLogItem log join derde_klant.klant on klant.ID=$Piece(log.PartijID,'||',2) where {kolomnaam} {equalsOfLikeSleutelwoord} '{waarde}' group by BatchID, ToeleveringID,Klant.naam,log.VerwerkingID, log.dossiercode,Onderdeel, Kar order by BatchID, ToeleveringID, Kar" + ''' + ''' Opvragen van de data reader aan de hand van een barcode. + ''' + ''' + ''' + Private Function GetDataReaderBarcode(barcode As String, Optional filter As String = Nothing) As OdbcDataReader + LogBestandTextMapper.writeToFile("Caché", $"Opvragen van data reader met barcode, filter?: '{barcode}' '{filter}'") - LogBestandTextMapper.writeToFile("Caché", $"Opvragen van DataReader met kolom, waarde: {EnumMapper.geefWaardeBijEnumValue(kolom)} {waarde}", True) - 'Uitvoeren van query en datareader retourneren. - Return ExecuteIntoDataReader2(query) - Catch ex As Exception - Throw New Exception($"Fout bij opvragen van DataReader met kolom, waarde: {EnumMapper.geefWaardeBijEnumValue(kolom)} {waarde}") - End Try - End Function + 'Variable declaratie. + Dim batch, kar - Private Function GetDataReaderBarcode(waarde As String) As OdbcDataReader - LogBestandTextMapper.writeToFile("Caché", $"Opvragen van data reader met barcode: {waarde}") + 'Opvragen batch en kar. + Try + 'Opvragen van de datareader met als type barcode bij de hulpfunctie. + Dim barcodeDataReader = GetDataReader(Kolommen.barcode, barcode) - 'Variable declaratie. - Dim batch, kar + If Not barcodeDataReader.Read() Then + 'Als er geen rij is gevonden wordt de lege data reader geretourneert. + Return barcodeDataReader + Else + 'Opvragen en toewijzen van batch en kar. + batch = barcodeDataReader.GetValue(0).ToString + kar = barcodeDataReader.GetValue(4).ToString + End If - 'Opvragen batch en kar. - Try - 'Opvragen van de datareader met als type barcode bij de hulpfunctie. - Dim barcodeDataReader = GetDataReader(Kolommen.barcode, waarde) + Catch ex As Exception + Throw New Exception($"Er is een fout opgetreden bij het opvragen van de batch en kar voor het opvragen van de data reader uit de Caché databank {vbNewLine}{ex.Message}") + End Try - If Not barcodeDataReader.Read() Then - 'Als er geen rij is gevonden wordt de lege data reader geretourneert. - Return barcodeDataReader - Else - 'Opvragen en toewijzen van batch en kar. - batch = barcodeDataReader.GetValue(0).ToString - kar = barcodeDataReader.GetValue(4).ToString - End If + 'Data reader opvragen. + Try + 'Als de filter is meegegeven wordt de tekst juist opgebouwd. Anders is deze leeg, zodat het niet in de query wordt ingevuld. + Dim filterTekst = String.Empty + If filter IsNot Nothing Then + 'De filter is gespecifieerd. + filterTekst = $"AND Onderdeel = '{filter}'" + End If - Catch ex As Exception - Throw New Exception($"Er is een fout opgetreden bij het opvragen van de batch en kar voor het opvragen van de data reader uit de Caché databank {vbnewline}{ex.Message}") - End Try + 'De query wordt opgebouwd met de data en de eventuele filter. + Dim query = $"select BatchID, ToeleveringID, Klant.naam, log.dossiercode, ISNULL(Kar, '') as Kar, log.VerwerkingID, Onderdeel, max(StapNummer) as Status, sum(IsRework) as Rework from APPS_Halux_Opvolging_ProductieStap_TAOR_dto.ProductieStapLogItem log join derde_klant.klant on klant.ID=$Piece(log.PartijID,'||',2) where (BatchID='{batch}') AND Kar = '{kar}' AND Onderdeel = '{filterTekst}') group by BatchID, ToeleveringID,Klant.naam,log.VerwerkingID, log.dossiercode,Onderdeel, Kar order by BatchID, ToeleveringID, Kar" - 'Data reader opvragen. - Try - Dim query = $"select BatchID, ToeleveringID, Klant.naam, log.dossiercode, ISNULL(Kar, '') as Kar, log.VerwerkingID, Onderdeel, max(StapNummer) as Status, sum(IsRework) as Rework from APPS_Halux_Opvolging_ProductieStap_TAOR_dto.ProductieStapLogItem log join derde_klant.klant on klant.ID=$Piece(log.PartijID,'||',2) where (BatchID='{batch}') group by BatchID, ToeleveringID,Klant.naam,log.VerwerkingID, log.dossiercode,Onderdeel, Kar having ISNULL(Kar, '') like '{kar}' order by BatchID, ToeleveringID, Kar" + 'Uitvoeren van query en datareader retourneren. + Dim dr = ExecuteIntoDataReader(query) + LogBestandTextMapper.writeToFile("Caché", $"Opvragen van data reader met barcode: {barcode}", True) + Return dr + Catch ex As Exception + Throw New Exception($"Er is een fout opgetreden bij het vullen van de data reader van een bepaalde batch en kar uit de Caché databank {vbNewLine}{ex.Message}") + End Try + End Function - LogBestandTextMapper.writeToFile("Caché", $"Opvragen van data reader met barcode: {waarde}", True) + ''' + ''' Opvragen van de data reader aan de hand van een lijst van barcodes. + ''' + ''' De lijst van barcodes + ''' De datareader + Private Function GetDataReader(barcodes As List(Of String)) As OdbcDataReader + Try + LogBestandTextMapper.writeToFile("Caché", $"Opvragen van OdbcDataReader met barcodes: '{String.Join(", ", barcodes.ToArray())}'") - 'Uitvoeren van query en datareader retourneren. - Return ExecuteIntoDataReader2(query) - Catch ex As Exception - Throw New Exception($"Er is een fout opgetreden bij het vullen van de data reader van een bepaalde batch en kar uit de Caché databank {vbnewline}{ex.Message}") - End Try - End Function + 'Controleren dat er minstens 2 items in de lijst zitten. + If barcodes Is Nothing OrElse barcodes.Count <= 1 Then + Throw New Exception("De lijst met barcodes om de OdbcDataReader op te vragen mag niet leeg zijn (minstens 2 elementen).") + End If - Private Function getDataReader(kolom As Kolommen, waarde As String, filter As String) As OdbcDataReader - LogBestandTextMapper.writeToFile("Caché", "Opvragen van OdbcDataReader met kolom, waarde, filter: " & EnumMapper.geefWaardeBijEnumValue(kolom) & ", " & waarde & ", " & filter) + 'Stringbuilder initialiseren en reeds vullen met de eerste barcode. + Dim builder As New StringBuilder + builder.Append($"'{barcodes.Item(0)}'") - Dim kolomnaam As String = geefCacheKolomNaamBijKolom(kolom) - Dim keyword As String = " = " - Try - 'als het een naam is moeten we "like" gebruiken - If kolomnaam.Equals("naam") Then - keyword = " like " - waarde = "%" + waarde + "%" - End If + 'Lijst omzetten in juiste formaat voor query. + For Each barcode As String In barcodes.GetRange(1, barcodes.Count - 1) + 'Barcodes samenvoegen, gescheiden door een komma. + builder.Append($", '{barcode}'") + Next - Dim query As String = "select BatchID, ToeleveringID, Klant.naam, log.dossiercode, Kar, log.VerwerkingID, Onderdeel, max(StapNummer) as Status, sum(IsRework) as Rework from APPS_Halux_Opvolging_ProductieStap_TAOR_dto.ProductieStapLogItem log join derde_klant.klant on klant.ID=$Piece(log.PartijID,'||',2) where " & kolomnaam & keyword & "'" & waarde & "'" & " AND Onderdeel = " & "'" & filter & "'" & " group by BatchID, ToeleveringID,Klant.naam,log.VerwerkingID, log.dossiercode,Onderdeel, Kar order by BatchID, ToeleveringID, Kar" + 'Opbouwen van de query. + Dim query = "Select BatchID, ToeleveringID, Klant.naam, log.dossiercode, Kar, log.VerwerkingID, Onderdeel, max(StapNummer) as Status, sum(IsRework) as Rework from APPS_Halux_Opvolging_ProductieStap_TAOR_dto.ProductieStapLogItem log join derde_klant.klant on klant.ID=$Piece(log.PartijID,'||',2) " + query &= $"where log.VerwerkingID in ({builder.ToString()})" + query &= " group by BatchID, ToeleveringID,Klant.naam,log.VerwerkingID, log.dossiercode,Onderdeel, Kar order by BatchID, ToeleveringID, Kar" - ExecuteIntoDataReader(query) - Catch ex As Exception - Throw New Exception("Fout bij opvragen van OdbcDataReader met kolom, waarde, filter: " & EnumMapper.geefWaardeBijEnumValue(kolom) & ", " & waarde & ", " & filter & vbNewLine & ex.Message) - End Try - - LogBestandTextMapper.writeToFile("Caché", "Opvragen van OdbcDataReader met kolom, waarde, filter: " & EnumMapper.geefWaardeBijEnumValue(kolom) & ", " & waarde & ", " & filter, True) + 'Uitvoeren van query en datareader retourneren. + Dim dr = ExecuteIntoDataReader(query) + LogBestandTextMapper.writeToFile("Caché", $"Opvragen van OdbcDataReader met barcodes: '{String.Join(", ", barcodes.ToArray())}'", True) Return dr - End Function + Catch ex As Exception + Throw New Exception($"Fout bij opvragen van OdbcDataReader met barcodes: '{String.Join(", ", barcodes.ToArray())}' {vbNewLine}{ex.Message}") + End Try + End Function +#End Region - Private Function getDataReaderBarcode(waarde As String, filter As String) As OdbcDataReader - LogBestandTextMapper.writeToFile("Caché", "Opvragen van OdbcDataReader met waarde, filter: " & waarde & ", " & filter) - Dim query As String - Try - Dim dr As OdbcDataReader = GetDataReader(Kolommen.barcode, waarde) - 'als er geen entry is gevonden wordt de lege datareader gereturnt - If Not dr.HasRows Then - Return dr - End If + ''' + ''' Opvragen van details van een item aan de hand van de barcode. + ''' + ''' De barcode + ''' De datareader + Public Function GetDetails(barcode As String) As OdbcDataReader + LogBestandTextMapper.writeToFile("Caché", $"Opvragen van OdbcDataReader met details, van barcode: {barcode}") - dr.Read() + Dim query As String = $"select BatchID, ToeleveringID, Klant.naam, log.dossiercode, Kar, log.VerwerkingID, machineID, Onderdeel, tijdstipProductie as TijdstipProductie, StapNummer as Productiestap, Case when IsRework=1 THEN 'TRUE' END as rework from APPS_Halux_Opvolging_ProductieStap_TAOR_dto.ProductieStapLogItem log join derde_klant.klant on klant.ID=$Piece(log.PartijID,'||',2) where verwerkingID = '{barcode}' order by StapNummer" + Try + 'Uitvoeren van query en datareader retourneren. + Dim dr = ExecuteIntoDataReader(query) + LogBestandTextMapper.writeToFile("Caché", $"Opvragen van OdbcDataReader met details, van barcode: {barcode}", True) + Return dr + Catch ex As Exception + Throw New Exception($"Fout bij opvragen van OdbcDataReader met details, van barcode: '{barcode}'{vbNewLine}{ex.Message}") + End Try + End Function - Dim batch As String = dr.GetValue(0).ToString - Dim kar As String = dr.GetValue(4).ToString + ''' + ''' Opvragen van de datatable aan de hand van het type kolom en de waarde. + ''' + ''' + ''' + ''' + Public Function GeefDataTable(kolom As Kolommen, waarde As Object) As DataTable + 'Declaratie van de data reader. + Dim dataReader As OdbcDataReader - query = "select BatchID, ToeleveringID, Klant.naam, log.dossiercode, Kar, log.VerwerkingID, Onderdeel, max(StapNummer) as Status, sum(IsRework) as Rework from APPS_Halux_Opvolging_ProductieStap_TAOR_dto.ProductieStapLogItem log join derde_klant.klant on klant.ID=$Piece(log.PartijID,'||',2) where (" & geefCacheKolomNaamBijKolom(Kolommen.batch) & " = " & "'" & batch & "'" & " AND " & geefCacheKolomNaamBijKolom(Kolommen.sorteerkar) & " = " & "'" & kar & "'" & " AND Onderdeel = " & "'" & filter & "'" & ") group by BatchID, ToeleveringID,Klant.naam,log.VerwerkingID, log.dossiercode,Onderdeel, Kar order by BatchID, ToeleveringID, Kar" + 'Type kolom controleren. + If kolom = Kolommen.barcode Then + 'Als het een barcode is moeten we iets meer laten zien: alle items die in dezelfde batch en kar zitten. + dataReader = GetDataReaderBarcode(waarde) + ElseIf kolom = Kolommen.barcodesVoorraad Then + 'Barcodes van een voorraad worden met meerdere tegelijk opgevraagd. + dataReader = GetDataReader(TryCast(CObj(waarde), List(Of String))) + Else + 'Elke andere kolom buiten barcode en barcodesvoorraad. + dataReader = GetDataReader(kolom, waarde) + End If - ExecuteIntoDataReader(query) - Catch ex As Exception - Throw New Exception("Fout bij opvragen van OdbcDataReader met waarde, filter: " & waarde & ", " & filter & vbNewLine & ex.Message) - End Try + 'DataTable initialiseren en vullen met resultaat van de datareader. + Dim datatable = New DataTable() + datatable.Load(dataReader) + 'Connectie van datareader sluiten. + dataReader.Close() + 'Retourneren van de datatable + Return datatable + End Function - LogBestandTextMapper.writeToFile("Caché", "Opvragen van OdbcDataReader met waarde, filter: " & waarde & ", " & filter, True) - Return dr - End Function + ''' + ''' Opvragen van de datareader + ''' + ''' + ''' + ''' + ''' + Public Function GeefdataTable(kolom As Kolommen, waarde As String, filter As String) As DataTable + 'Declaratie van de data reader. + Dim dataReader As OdbcDataReader - Public Function getDetails(barcode As String) As OdbcDataReader - LogBestandTextMapper.writeToFile("Caché", "Opvragen van OdbcDataReader met details, van barcode: " & barcode) + 'Type kolom controleren. + If kolom = Kolommen.barcode Then + 'Als het een barcode is moeten we iets meer laten zien: items die in dezelfde batch en kar zitten. + dataReader = GetDataReaderBarcode(waarde, filter) + Else + dataReader = GetDataReader(kolom, waarde, filter) + End If - Dim query As String = "select BatchID, ToeleveringID, Klant.naam, log.dossiercode, Kar, log.VerwerkingID, machineID, Onderdeel, tijdstipProductie as TijdstipProductie, StapNummer as Productiestap, Case when IsRework=1 THEN 'TRUE' END as rework from APPS_Halux_Opvolging_ProductieStap_TAOR_dto.ProductieStapLogItem log join derde_klant.klant on klant.ID=$Piece(log.PartijID,'||',2) where " & "verwerkingID = " & "'" & barcode & "'" & " order by StapNummer" - Try - ExecuteIntoDataReader(query) - Catch ex As Exception - Throw New Exception("Fout bij opvragen van OdbcDataReader met details, van barcode: " & barcode & vbNewLine & ex.Message) - End Try - LogBestandTextMapper.writeToFile("Caché", "Opvragen van OdbcDataReader met details, van barcode: " & barcode, True) - Return dr - End Function + 'DataTable initialiseren en vullen met resultaat van de datareader. + Dim datatable = New DataTable() + datatable.Load(dataReader) + 'Connectie van datareader sluiten. + dataReader.Close() + 'Retourneren van de datatable + Return datatable + End Function - Public Function GeefDataTable(kolom As Kolommen, waarde As Object) As DataTable - Dim dataReader As OdbcDataReader + ''' + ''' Opvragen lijst van mogelijke onderdelen (rug, bodem, ...) + ''' + ''' Lijst van namen van onderdelen + Public Function GeefOnderdelen() As List(Of String) + LogBestandTextMapper.writeToFile("Caché", "Opvragen van onderdelen.") + Const query = "select DISTINCT Onderdeel from APPS_Halux_Opvolging_ProductieStap_TAOR_dto.ProductieStapLogItem" - If kolom = Kolommen.barcode Then - 'Als het een barcode is moeten we iets meer laten zien: entry's die in dezelfde batch en kar zitten als de barcode. - dataReader = GetDataReaderBarcode(waarde) - ElseIf kolom = Kolommen.barcodesVoorraad Then - 'Barcodes van een voorraad worden tegelijk verwerkt. - dataReader= geefDataReader(TryCast(CObj(waarde), List(Of String))) - Else - dataReader= GetDataReader(kolom, waarde) - End If + Dim onderdelen = ExecuteIntoListOfString(query) - 'DataTable initialiseren en vullen met resultaat van de datareader. - Dim datatable = new DataTable() - datatable.Load(datareader) - 'Connectie van datareader sluiten. - datareader.Close() - 'Retourneren van de datatable - return datatable - End Function + LogBestandTextMapper.writeToFile("Caché", "Opvragen van onderdelen", True) + Return onderdelen + End Function - Public Function geefdatareader(kolom As Kolommen, waarde As String, filter As String) As OdbcDataReader - 'als het een barcode is moeten we iets meer laten zien: entry's die in dezelfde batch en kar zitten als de barcode - If kolom = Kolommen.barcode Then - Return getDataReaderBarcode(waarde, filter) - Else - Return getDataReader(kolom, waarde, filter) - End If - End Function + ''' + ''' Velden van een rework updaten met informatie uit de databank. + ''' Dit gebeurt aan de hand van de barcode van de rework zelf of een optionele andere barcode. + ''' + ''' De rework om te laten updaten + ''' Optionele barcode van de originele rework + ''' + Public Function UpdateRework(rework As Rework, Optional barcodeOrigineel As String = Nothing) As Rework + LogBestandTextMapper.writeToFile("Caché", "Updaten van rework met informatie uit databank.") - Public Function geefOnderdelen() As List(Of String) - LogBestandTextMapper.writeToFile("Caché", "Opvragen van onderdelen") - Dim query As String = "select DISTINCT Onderdeel from APPS_Halux_Opvolging_ProductieStap_TAOR_dto.ProductieStapLogItem" + 'Controleren welke barcode gebruikt zal worden + Dim barcode As String + If String.IsNullOrEmpty(barcodeOrigineel) Then + 'Barcode van rework gebruiken. + barcode = rework.barcode + Else + 'Andere barcode gebruiken. + barcode = barcodeOrigineel + End If - Dim onderdelen As New List(Of String) - onderdelen = executeIntoListOfString(query) + 'Query opbouwen met barcode. + Dim query = $"select top 1 BatchID, DossierCode, DueOut, IsRework, Kar, MachineID, Onderdeel, PartijID, ProductID, SequentieNummer, StapNummer, TijdstipCreatie, TijdstipProductie, ToeleveringID, VerwerkingID, ReworkReden from APPS_Halux_Opvolging_ProductieStap_TAOR_dto.ProductieStapLogItem log join derde_klant.klant on klant.ID=$Piece(log.PartijID,'||',2) where verwerkingID = '{barcode}'" - LogBestandTextMapper.writeToFile("Caché", "Opvragen van onderdelen", True) - Return onderdelen - End Function + Try + 'Query uitvoeren en datareader bijhouden. + Dim dr = ExecuteIntoDataReader(query) - Public Function updateRework(rework As Rework.Rework, Optional barcodeOrigineel As String = "") As Rework.Rework - LogBestandTextMapper.writeToFile("Caché", "Updaten van rework met informatie uit databank") - - Dim barcode As String - If barcodeOrigineel.Equals("") Then - barcode = rework.barcode + 'Controleren of er resultaten zijn. + If dr.Read() Then + 'Er is een resultaat, de waarden uitlezen. + rework.batch = If(IsDBNull(dr.Item("BatchID")), Nothing, CStr(dr.Item("BatchID"))) + rework.dossierCode = If(IsDBNull(dr.Item("DossierCode")), Nothing, CStr(dr.Item("DossierCode"))) + rework.DueOut = If(IsDBNull(dr.Item("DueOut")), Nothing, CStr(dr.Item("DueOut"))) + rework.IsRework = "rework" + rework.kar = If(IsDBNull(dr.Item("Kar")), Nothing, CStr(dr.Item("Kar"))) + rework.MachineID = If(IsDBNull(dr.Item("MachineID")), Nothing, CStr(dr.Item("MachineID"))) + rework.OrigineelOnderdeel = If(IsDBNull(dr.Item("Onderdeel")), Nothing, CStr(dr.Item("Onderdeel"))) + rework.PartijID = If(IsDBNull(dr.Item("PartijID")), Nothing, CStr(dr.Item("PartijID"))) + rework.ProductID = If(IsDBNull(dr.Item("ProductID")), Nothing, CStr(dr.Item("ProductID"))) + rework.SequentieNummer = If(IsDBNull(dr.Item("SequentieNummer")), Nothing, CStr(dr.Item("SequentieNummer"))) + rework.StapNummer = If(IsDBNull(dr.Item("StapNummer")), Nothing, CStr(dr.Item("StapNummer"))) + rework.TijdstipCreatie = If(IsDBNull(dr.Item("TijdstipCreatie")), Nothing, CStr(dr.Item("TijdstipCreatie"))) + rework.TijdstipProductie = If(IsDBNull(dr.Item("TijdstipProductie")), Nothing, CStr(dr.Item("TijdstipProductie"))) + rework.ToeleveringID = If(IsDBNull(dr.Item("ToeleveringID")), Nothing, CStr(dr.Item("ToeleveringID"))) Else - barcode = barcodeOrigineel + 'Er is geen resultaat gevonden. + Throw New Exception($"Er is geen record in Caché gevonden voor barcode '{barcode}' om een rework te updaten") End If - Dim query As String = "select top 1 BatchID, DossierCode, DueOut, IsRework, Kar, MachineID, Onderdeel, PartijID, ProductID, SequentieNummer, StapNummer, TijdstipCreatie, TijdstipProductie, ToeleveringID, VerwerkingID, ReworkReden from APPS_Halux_Opvolging_ProductieStap_TAOR_dto.ProductieStapLogItem log join derde_klant.klant on klant.ID=$Piece(log.PartijID,'||',2) where " & "verwerkingID = " & "'" & barcode & "'" - Dim hasRead As Boolean = False - Try - ConnectToCache() - Dim command As OdbcCommand = New OdbcCommand(query, _sqlConnection) - dr = command.ExecuteReader - While dr.Read() - rework.batch = If(IsDBNull(dr.Item("BatchID")), Nothing, CStr(dr.Item("BatchID"))) - rework.dossierCode = If(IsDBNull(dr.Item("DossierCode")), Nothing, CStr(dr.Item("DossierCode"))) - rework.DueOut = If(IsDBNull(dr.Item("DueOut")), Nothing, CStr(dr.Item("DueOut"))) - rework.IsRework = "rework" - rework.kar = If(IsDBNull(dr.Item("Kar")), Nothing, CStr(dr.Item("Kar"))) - rework.MachineID = If(IsDBNull(dr.Item("MachineID")), Nothing, CStr(dr.Item("MachineID"))) - rework.OrigineelOnderdeel = If(IsDBNull(dr.Item("Onderdeel")), Nothing, CStr(dr.Item("Onderdeel"))) - rework.PartijID = If(IsDBNull(dr.Item("PartijID")), Nothing, CStr(dr.Item("PartijID"))) - rework.ProductID = If(IsDBNull(dr.Item("ProductID")), Nothing, CStr(dr.Item("ProductID"))) - rework.SequentieNummer = If(IsDBNull(dr.Item("SequentieNummer")), Nothing, CStr(dr.Item("SequentieNummer"))) - rework.StapNummer = If(IsDBNull(dr.Item("StapNummer")), Nothing, CStr(dr.Item("StapNummer"))) - rework.TijdstipCreatie = If(IsDBNull(dr.Item("TijdstipCreatie")), Nothing, CStr(dr.Item("TijdstipCreatie"))) - rework.TijdstipProductie = If(IsDBNull(dr.Item("TijdstipProductie")), Nothing, CStr(dr.Item("TijdstipProductie"))) - rework.ToeleveringID = If(IsDBNull(dr.Item("ToeleveringID")), Nothing, CStr(dr.Item("ToeleveringID"))) + Catch ex As Exception + Throw New Exception($"Er is een fout opgetreden bij het updaten van een rework met data uit database Caché {vbNewLine}{ex.Message}") + End Try + LogBestandTextMapper.writeToFile("Caché", "Updaten van rework met informatie uit databank.", True) + Return rework + End Function - hasRead = True - End While - If Not hasRead Then - Throw New Exception("Er is geen record in Caché gevonden voor barcode " & barcode & " om een rework te updaten") - End If - Catch ex As Exception - Throw New Exception("Er is een fout opgetreden bij het updaten van een rework met data uit database Caché " & vbNewLine & ex.Message) - End Try - LogBestandTextMapper.writeToFile("Caché", "Updaten van rework met informatie uit databank", True) - Return rework - End Function + Public Sub OpslaanReworkReden(ByRef rework As Rework) + LogBestandTextMapper.writeToFile("Caché", $"Opslaan rework reden met reden: {rework.reden}") - Public Sub opslaanReworkReden(ByRef rework As Rework.Rework) - LogBestandTextMapper.writeToFile("Caché", "Opslaan rework reden met reden: " & rework.reden) + 'Updaten van het stapnummer (op 0 zetten) + UpdateStapNummer(rework.barcode) + 'Opslaan van de reden. + SlaRedenOp(rework) - updateStapNummer(rework.barcode) + LogBestandTextMapper.writeToFile("Caché", $"Opslaan rework reden met reden: {rework.reden}", True) + End Sub - slaRedenOp(rework) + ''' + ''' Hulpfunctie voor het resetten van het stapnummer (op 0 plaatsen). + ''' + ''' Het verwerking Id + Private Sub UpdateStapNummer(verwerkingId As String) + LogBestandTextMapper.writeToFile("Caché", $"Updaten stapnummer met verwerkingId: {verwerkingId}") + Try + Dim query As String = $"UPDATE APPS_Halux_Opvolging_ProductieStap_TAOR_dto.ProductieStapLogItem SET StapNummer=-StapNummer WHERE VerwerkingID= '{verwerkingId}' and StapNummer>0" + 'Commando uitvoeren. + ExecuteCommand(query) + Catch ex As Exception + Throw New Exception($"Er is een fout opgetreden bij het updaten van het stapnummer bij het opslaan van een rework reden in de Caché databank {vbNewLine}{ex.Message}") + End Try + LogBestandTextMapper.writeToFile("Caché", $"Updaten stapnummer met verwerkingId: {verwerkingId}", True) + End Sub - LogBestandTextMapper.writeToFile("Caché", "Opslaan rework reden met reden: " & rework.reden, True) - End Sub + ''' + ''' Hulpfunctie voor het opslaan van de rework reden. + ''' + ''' + Private Sub SlaRedenOp(ByVal rework As Rework) + LogBestandTextMapper.writeToFile("Caché", $"Rework reden wegschrijven naar de databank, reden: {rework.reden}") - Private Sub updateStapNummer(ByVal verwerkingID As String) - LogBestandTextMapper.writeToFile("Caché", "Updaten stapnummer met verwerkingID: " & verwerkingID) - Try - Dim query As String = "UPDATE APPS_Halux_Opvolging_ProductieStap_TAOR_dto.ProductieStapLogItem SET StapNummer=-StapNummer WHERE VerwerkingID= '" & verwerkingID & "' and StapNummer>0" + 'Updaten van de data in de rework. + rework.aanpassenData() - executeCommand(query) - Catch ex As Exception - Throw New Exception("Er is een fout opgetreden bij het updaten van het stapnummer bij het opslaan van een rework reden in de Caché databank" & vbNewLine & ex.Message) - End Try - LogBestandTextMapper.writeToFile("Caché", "Updaten stapnummer met verwerkingID: " & verwerkingID, True) - End Sub + 'Huidige datum registreren. + Dim datum As String = Now.ToString("yyyy-MM-dd HH:mm:ss") + 'De query opbouwen. + Dim query As String = "insert into APPS_Halux_Opvolging_ProductieStap_TAOR_dto.ProductieStapLogItem (BatchID, DossierCode, DueOut, IsRework, Kar, MachineID, Onderdeel, PartijID, ProductID, SequentieNummer, StapNummer, TijdstipCreatie, TijdstipProductie, ToeleveringID, VerwerkingID, ReworkReden) values ('" & rework.batch & "', '" & rework.dossierCode & "', '" & rework.DueOut & "', '" & rework.IsRework & "', '" & rework.kar & "', '" & rework.MachineID & "', '" & rework.OrigineelOnderdeel & "', '" & rework.PartijID & "', '" & rework.ProductID & "', '" & rework.SequentieNummer & "', '" & rework.StapNummer & "', '" & datum & "', '" & datum & "' ,'" & rework.ToeleveringID & "', '" & rework.barcode & "', '" & rework.reden & "')" + Try + 'Voer het commando uit. + ExecuteCommand(query) + Catch ex As Exception + Throw New Exception($"Er is een fout opgetreden bij het wegschrijven van de rework met reden naar Caché {vbNewLine}{ex.Message}") + End Try + LogBestandTextMapper.writeToFile("Caché", $"Rework reden wegschrijven naar de databank, reden: {rework.reden}", True) + End Sub - Private Sub slaRedenOp(ByVal rework As Rework.Rework) - LogBestandTextMapper.writeToFile("Caché", "Rework reden wegschrijven naar de databank, reden: " & rework.reden) + ''' + ''' Opvragen nummer voor in de barcode voor test lade of special lade. + ''' + ''' Het nummer voor de barcode. + Public Function GeefBarcodeNummer() As Integer + 'Variablen declareren. + Dim query As String + Dim teller, maxteller, minTeller, nieuweTeller As Integer + 'Blijven herhalen indien nodig. + Dim retry = True - rework.aanpassenData() - Dim datum As String = Now.ToString("yyyy-MM-dd HH:mm:ss") - Dim query As String = "insert into APPS_Halux_Opvolging_ProductieStap_TAOR_dto.ProductieStapLogItem (BatchID, DossierCode, DueOut, IsRework, Kar, MachineID, Onderdeel, PartijID, ProductID, SequentieNummer, StapNummer, TijdstipCreatie, TijdstipProductie, ToeleveringID, VerwerkingID, ReworkReden) values ('" & rework.batch & "', '" & rework.dossierCode & "', '" & rework.DueOut & "', '" & rework.IsRework & "', '" & rework.kar & "', '" & rework.MachineID & "', '" & rework.OrigineelOnderdeel & "', '" & rework.PartijID & "', '" & rework.ProductID & "', '" & rework.SequentieNummer & "', '" & rework.StapNummer & "', '" & datum & "', '" & datum & "' ,'" & rework.ToeleveringID & "', '" & rework.barcode & "', '" & rework.reden & "')" + LogBestandTextMapper.writeToFile("Caché", $"- Opvragen van barcode nummer, retry: {retry}") + Do While retry + LogBestandTextMapper.writeToFile("Caché", "Opvragen van teller, minimum teller en maximum teller.") + 'Toewijzen query. + query = "select * from APPS_Halux_Opvolging_ProductieStap_TAOR_dto.Tellers where label='BARCODE'" Try - Dim addCommand As New OdbcCommand - addCommand.CommandText = query - addCommand.Connection = _sqlConnection - - ConnectToCache() - addCommand.ExecuteNonQuery() + 'Query uitvoeren en datareader bijhouden. + Dim dr = ExecuteIntoDataReader(query) + 'Velden opvragen uit datareader. + teller = CInt(dr.Item("Teller")) + maxteller = CInt(dr.Item("MaxTeller")) + minTeller = CInt(dr.Item("MinTeller")) Catch ex As Exception - Throw New Exception("Er is een fout opgetreden bij het wegschrijven van de rework met reden naar Caché " & vbNewLine & ex.Message) + Throw New Exception($"Er is een fout opgetreden bij het opvragen van de tellers voor een test lade barcode nummer.{vbNewLine}{ex.Message}") End Try - LogBestandTextMapper.writeToFile("Caché", "Rework reden wegschrijven naar de databank, reden: " & rework.reden, True) - End Sub - 'Opvragen barcode nummer voor test lade of special lade - Public Function geefBarcodeNummer() As Integer - Dim query As String = "" - Dim teller, maxteller, minTeller, nieuweTeller As Integer + 'Kijken of maximum waarde van de teller nog niet is overschreden. + If Not (teller > maxteller) Then + 'Zo ja, teller verhogen. + nieuweTeller = teller + 1 + Else + 'Maximum is overschreden, teller resetten. + nieuweTeller = minTeller + End If - Dim retry As Boolean = True + LogBestandTextMapper.writeToFile("Caché", "Opvragen van teller, minimum teller en maximum teller.", True) - LogBestandTextMapper.writeToFile("Caché", "- Opvragen van barcode nummer, retry: " & retry) - Do While retry - LogBestandTextMapper.writeToFile("Caché", "Opvragen van alle tellers") - query = "select * from APPS_Halux_Opvolging_ProductieStap_TAOR_dto.Tellers where label='BARCODE'" - Try - ExecuteIntoDataReader(query) + 'UPDATEN MET NIEUWE TELLER + 'Alleen uitvoeren als de verwerk optie aanstaat + If Not Configs.geefVerwerkStatus Then + 'Er wordt niet verwerkt, teller niet updaten en lus verbreken. + retry = False + Else + LogBestandTextMapper.writeToFile("Caché", $"Updaten van de teller met de nieuwe teller: {nieuweTeller}") - dr.Read() + 'Query opbouwen. + query = $"Update APPS_Halux_Opvolging_ProductieStap_TAOR_dto.Tellers set Teller={nieuweTeller} where label='BARCODE'" + 'Commando uitvoeren + ExecuteCommand(query) - teller = CInt(dr.Item("Teller")) - maxteller = CInt(dr.Item("MaxTeller")) - minTeller = CInt(dr.Item("MinTeller")) - Catch ex As Exception - Throw New Exception("Er is een fout opgetreden bij het opvragen van de tellers voor een test lade barcode nummer" & vbNewLine & ex.Message) - End Try + LogBestandTextMapper.writeToFile("Caché", $"Updaten van de teller met de nieuwe teller: {nieuweTeller}", True) - If teller > maxteller Then - nieuweTeller = minTeller - Else - nieuweTeller = teller + 1 - End If - - - 'alleen uitvoeren als de verwerk optie aanstaat - If Configs.geefVerwerkStatus Then - - LogBestandTextMapper.writeToFile("Caché", "Opvragen van alle tellers", True) - - LogBestandTextMapper.writeToFile("Caché", "Updaten van de teller met de nieuwe teller: " & nieuweTeller) - query = "Update APPS_Halux_Opvolging_ProductieStap_TAOR_dto.Tellers set Teller=" & nieuweTeller & " where label='BARCODE'" - executeCommand(query) - LogBestandTextMapper.writeToFile("Caché", "Updaten van de teller met de nieuwe teller: " & nieuweTeller, True) - - LogBestandTextMapper.writeToFile("Caché", "Opvragen van de geüpdate teller") - query = "select Teller from APPS_Halux_Opvolging_ProductieStap_TAOR_dto.Tellers where label='BARCODE'" - Try - ExecuteIntoDataReader(query) - - dr.Read() - - teller = dr.Item("Teller") - Catch ex As Exception - Throw New Exception("Er is een fout opgetreden bij het opvragen van de nieuwe teller voor test lade barcode nummer" & vbNewLine & ex.Message) - End Try - LogBestandTextMapper.writeToFile("Caché", "Opvragen van de geüpdate teller", True) - If nieuweTeller <> teller Then - If retry Then - retry = False - Else - Throw New Exception("Kan geen unieke barcode nummer opvragen") - End If - Else - retry = False - End If - - Else 'er wordt niet verwerkt - retry = False - End If - Loop - - LogBestandTextMapper.writeToFile("Caché", "- Opvragen van barcode nummer, retry: " & retry, True) - Return nieuweTeller - End Function - - 'Opvragen barcode nummer voor test lade - Public Function geefTestLadeTrayNummer() As Integer - Dim query As String = "" - Dim teller, maxteller, minTeller, nieuweTeller As Integer - - Dim retry As Boolean = True - - LogBestandTextMapper.writeToFile("Caché", "- Opvragen van tray nummer, retry: " & retry) - Do While retry - LogBestandTextMapper.writeToFile("Caché", "Opvragen van alle tellers") - query = "select * from APPS_Halux_Opvolging_ProductieStap_TAOR_dto.Tellers where label='TRAY'" + 'Ophalen geüpdate teller, reden hiervoor is dat de tellers op hetzelfde moment verhoogt kunnen worden. + LogBestandTextMapper.writeToFile("Caché", "Opvragen van de geüpdate teller") + query = "select Teller from APPS_Halux_Opvolging_ProductieStap_TAOR_dto.Tellers where label='BARCODE'" Try - ExecuteIntoDataReader(query) + 'Query uitvoeren en datareader bijhouden. + Dim dr = ExecuteIntoDataReader(query) + 'Teller uitlezen. dr.Read() - - teller = CInt(dr.Item("Teller")) - maxteller = CInt(dr.Item("MaxTeller")) - minTeller = CInt(dr.Item("MinTeller")) + teller = dr.Item("Teller") Catch ex As Exception - Throw New Exception("Er is een fout opgetreden bij het opvragen van de tellers voor test lade tray nummer") + Throw New Exception($"Er is een fout opgetreden bij het opvragen van de nieuwe teller voor test lade{vbNewLine}{ex.Message}") End Try - If teller > maxteller Then - nieuweTeller = minTeller - Else - nieuweTeller = teller + 1 - End If + LogBestandTextMapper.writeToFile("Caché", "Opvragen van de geüpdate teller", True) - 'alleen uitvoeren als de verwerk optie aanstaat - If Configs.geefVerwerkStatus Then - - LogBestandTextMapper.writeToFile("Caché", "Opvragen van alle tellers", True) - - LogBestandTextMapper.writeToFile("Caché", "Updaten van de teller met de nieuwe teller: " & nieuweTeller) - query = "Update APPS_Halux_Opvolging_ProductieStap_TAOR_dto.Tellers set Teller=" & nieuweTeller & " where label='TRAY'" - executeCommand(query) - LogBestandTextMapper.writeToFile("Caché", "Updaten van de teller met de nieuwe teller: " & nieuweTeller, True) - - LogBestandTextMapper.writeToFile("Caché", "Opvragen van de geüpdate teller") - query = "select Teller from APPS_Halux_Opvolging_ProductieStap_TAOR_dto.Tellers where label='TRAY'" - Try - ExecuteIntoDataReader(query) - - dr.Read() - - teller = dr.Item("Teller") - Catch ex As Exception - Throw New Exception("Er is een fout opgetreden bij het opvragen van de nieuwe teller voor test lade tray nummer") - End Try - LogBestandTextMapper.writeToFile("Caché", "Opvragen van de geüpdate teller", True) - If nieuweTeller <> teller Then - If retry Then - retry = False - Else - Throw New Exception("Kan geen unieke tray nummer opvragen") - End If - Else + 'De opgehaalde teller in de databank verschilt van de teller die is geproeerd weg te schrijven. + 'Dit betekent dat de teller reeds is overschreven. Daarom zal geprobeerd worden de teller opnieuw te bepalen. + If nieuweTeller <> teller Then + 'Kijken of dit niet al eens is gebeurt. Houdt een oneindige loop tegen. + If retry Then + 'Eerste keer dat dit voorkomt, updaten van variabele. retry = False + Else + 'Kon na herproberen nog steeds geen correcte teller ophalen. + Throw New Exception("Kan geen unieke barcode nummer opvragen") End If - - Else 'er wordt niet verwerkt + Else + 'Teller is correct, while-lus verbreken. retry = False End If - Loop + End If + Loop - LogBestandTextMapper.writeToFile("Caché", "- Opvragen van tray nummer, retry: " & retry, True) - Return nieuweTeller - End Function + LogBestandTextMapper.writeToFile("Caché", $"- Opvragen van barcode nummer, retry: {retry}", True) + Return nieuweTeller + End Function - 'Opslaan van gegenereerde onderdeel door eerst het origineel op te vragen en bepaalde velden aan te passen en dan te inserten - Public Sub opslaanGegenereerdeOnderdelen(origineelOnderdeel As ArdisData, nieuwOnderdeel As ArdisData, nieuwOnderdeelNaam As String) - LogBestandTextMapper.writeToFile("Cache", "Opslaan van gegenereerde onderdeel aan de hand van oud bestaand onderdeel, barcode bestaand onderdeel, barcode nieuw onderdeel: " & origineelOnderdeel.PartCalc & ", " & nieuwOnderdeel.PartCalc) + ''' + ''' Opslaan van gegenereerde onderdeel door eerst het origineel op te vragen, bepaalde velden aan te passen, en dan te inserten. + ''' + ''' Het originele onderdeel. + ''' Het nieuwe onderdeel. + ''' Naam voor het nieuwe onderdeel. + Public Sub OpslaanGegenereerdeOnderdelen(origineelOnderdeel As ArdisData, nieuwOnderdeel As ArdisData, nieuwOnderdeelNaam As String) + LogBestandTextMapper.writeToFile("Cache", $"Opslaan van gegenereerde onderdeel aan de hand van oud bestaand onderdeel. Barcode bestaand onderdeel, barcode nieuw onderdeel: '{origineelOnderdeel.PartCalc}' '{nieuwOnderdeel.PartCalc}'") - Dim query As String = "Insert into APPS_Halux_Opvolging_ProductieStap_TAOR_dto.ProductieStapLogItem (BatchID, DossierCode, DueOut, IsRework, Kar, MachineID, Onderdeel, PartijID, ProductID, SequentieNummer, StapNummer, TijdstipCreatie, TijdstipProductie, ToeleveringID, VerwerkingID) " - query &= "select top 1 BatchID, DossierCode, DueOut, ?, Kar, MachineID, ?, PartijID, ProductID, SequentieNummer, ?, ?, ?, ToeleveringID, ? from APPS_Halux_Opvolging_ProductieStap_TAOR_dto.ProductieStapLogItem where VerwerkingID=?" - Try - Dim addCommand As New OdbcCommand - addCommand.CommandText = query - addCommand.Connection = _sqlConnection + Dim query As String = "Insert into APPS_Halux_Opvolging_ProductieStap_TAOR_dto.ProductieStapLogItem (BatchID, DossierCode, DueOut, IsRework, Kar, MachineID, Onderdeel, PartijID, ProductID, SequentieNummer, StapNummer, TijdstipCreatie, TijdstipProductie, ToeleveringID, VerwerkingID) " + query &= "select top 1 BatchID, DossierCode, DueOut, ?, Kar, MachineID, ?, PartijID, ProductID, SequentieNummer, ?, ?, ?, ToeleveringID, ? from APPS_Halux_Opvolging_ProductieStap_TAOR_dto.ProductieStapLogItem where VerwerkingID=?" + Try + 'Commando initialiseren. + Dim addCommand As New OdbcCommand With { + .CommandText = query, + .Connection = _sqlConnection + } - addCommand.Parameters.AddWithValue("@isReworkNieuw", OdbcType.VarChar).Value = False - addCommand.Parameters.AddWithValue("@OnderdeelNieuw", OdbcType.VarChar).Value = nieuwOnderdeelNaam - addCommand.Parameters.AddWithValue("@StapNummerNieuw", OdbcType.VarChar).Value = 0 - addCommand.Parameters.AddWithValue("@TijdstipCreatieNieuw", OdbcType.VarChar).Value = Now.ToString("yyyy-MM-dd HH:mm:ss") - addCommand.Parameters.AddWithValue("@TijdstipProductieNieuw", OdbcType.VarChar).Value = Now.ToString("yyyy-MM-dd HH:mm:ss") - addCommand.Parameters.AddWithValue("@VerwerkingIDNieuw", OdbcType.VarChar).Value = nieuwOnderdeel.PartCalc - addCommand.Parameters.AddWithValue("@VerwerkingIDOrigineel", OdbcType.VarChar).Value = origineelOnderdeel.PartCalc + addCommand.Parameters.AddWithValue("@isReworkNieuw", OdbcType.VarChar).Value = False + addCommand.Parameters.AddWithValue("@OnderdeelNieuw", OdbcType.VarChar).Value = nieuwOnderdeelNaam + addCommand.Parameters.AddWithValue("@StapNummerNieuw", OdbcType.VarChar).Value = 0 + addCommand.Parameters.AddWithValue("@TijdstipCreatieNieuw", OdbcType.VarChar).Value = Now.ToString("yyyy-MM-dd HH:mm:ss") + addCommand.Parameters.AddWithValue("@TijdstipProductieNieuw", OdbcType.VarChar).Value = Now.ToString("yyyy-MM-dd HH:mm:ss") + addCommand.Parameters.AddWithValue("@VerwerkingIDNieuw", OdbcType.VarChar).Value = nieuwOnderdeel.PartCalc + addCommand.Parameters.AddWithValue("@VerwerkingIDOrigineel", OdbcType.VarChar).Value = origineelOnderdeel.PartCalc - ConnectToCache() - addCommand.ExecuteNonQuery() + 'Connecteren met Caché. + ConnectToCache() + 'Query uitvoeren. + addCommand.ExecuteNonQuery() - Catch ex As Exception - Throw New Exception("Er is een fout opgetreden bij het opslaan van de gegenereerde onderdelen in de caché databank" & vbNewLine & ex.Message) - End Try - LogBestandTextMapper.writeToFile("Cache", "Opslaan van gegenereerde onderdeel aan de hand van oud bestaand onderdeel, barcode bestaand onderdeel, barcode nieuw onderdeel: " & origineelOnderdeel.PartCalc & ", " & nieuwOnderdeel.PartCalc, True) - End Sub + Catch ex As Exception + Throw New Exception($"Er is een fout opgetreden bij het opslaan van de gegenereerde onderdelen in de caché databank {vbNewLine}{ex.Message}") + End Try + LogBestandTextMapper.writeToFile("Cache", $"Opslaan van gegenereerde onderdeel aan de hand van oud bestaand onderdeel. Barcode bestaand onderdeel, barcode nieuw onderdeel: '{origineelOnderdeel.PartCalc}' '{nieuwOnderdeel.PartCalc}'", True) + End Sub - 'Opvragen gegevens met barcodes voor voorraad aanvulling - Private Function geefDataReader(barcodes As List(Of String)) As OdbcDataReader - LogBestandTextMapper.writeToFile("Caché", "Opvragen van OdbcDataReader met barcodes: " & String.Join(", ", barcodes.ToArray())) - - If barcodes Is Nothing OrElse barcodes.Count <= 1 Then - Throw New Exception("De lijst met barcodes om de OdbcDataReader op te vragen mag niet leeg zijn (minstens 2 elementen)") - End If - - Try - Dim builder As New StringBuilder - builder.Append("'").Append(barcodes.Item(0)).Append("'") - 'list omzetten in juiste formaat voor query - For Each barcode As String In barcodes.GetRange(1, barcodes.Count - 1) - builder.Append(", '").Append(barcode).Append("'") - Next - - Dim query As String = "Select BatchID, ToeleveringID, Klant.naam, log.dossiercode, Kar, log.VerwerkingID, Onderdeel, max(StapNummer) as Status, sum(IsRework) as Rework from APPS_Halux_Opvolging_ProductieStap_TAOR_dto.ProductieStapLogItem log join derde_klant.klant on klant.ID=$Piece(log.PartijID,'||',2) " - query &= "where log.VerwerkingID in (" & builder.ToString & ")" - 'query &= "where log.VerwerkingID in (" & "'RKV01990US02363D0', 'RKV01990US02363D1'" & ")" - query &= " group by BatchID, ToeleveringID,Klant.naam,log.VerwerkingID, log.dossiercode,Onderdeel, Kar order by BatchID, ToeleveringID, Kar" - - ExecuteIntoDataReader(query) - Catch ex As Exception - Throw New Exception("Fout bij opvragen van OdbcDataReader met barcodes: " & String.Join(", ", barcodes.ToArray()) & vbNewLine & ex.Message) - End Try - LogBestandTextMapper.writeToFile("Caché", "Opvragen van OdbcDataReader met barcodes: " & String.Join(", ", barcodes.ToArray()), True) - Return dr - End Function - - End Module \ No newline at end of file +End Module \ No newline at end of file