Imports System.IO Imports System.Globalization Imports System.Xml Imports Renci.SshNet Imports System.Net Imports System.Text Imports System.ComponentModel Imports RoutineManager.cAsfinag Imports DocumentFormat.OpenXml.Drawing.Charts Imports DocumentFormat.OpenXml.VariantTypes Public Class frmAsfinag_NachrichtenVerabeitung Dim cntDatenEingelesen As Integer = 0 Dim dsNichtErkannt As Integer = 0 Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Dim allowClose = False ' Dim DY_PFAD = "C:\Users\DEVELOPER1\Desktop\test\TEST\" Dim ASFINAG_PFAD = "" '"C:\Users\DEVELOPER1\Desktop\test\TEST\Nachrichtendaten_Einarbeitung\" Dim VERARBEITUNGS_PFAD = "" '"C:\Users\DEVELOPER1\Desktop\test\TEST\Nachrichtendaten_Einarbeitung\" Dim ZIEL_PFAD = "" '"C:\Users\DEVELOPER1\Desktop\test\TEST\Nachrichtendaten_Ablage\" Dim ERROR_PFAD = "" '"C:\Users\DEVELOPER1\Desktop\test\TEST\Nachrichtendaten_ERROR\" Dim PARTNERSYSTEM = "ASFINAG" Dim SERVER_Path = "" Dim SERVER_Path_TEST = "" Dim FileType As String Dim Dateiname = "" Sub New(FileType) ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. Me.FileType = FileType End Sub Sub New(FileType, allowClose) 'autostart ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() FileType = FileType Me.allowClose = allowClose ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. End Sub Sub initPfade() Me.SERVER_Path = cAsfinag.Paramter.GET_PARAM_ByName("SERVER_Path_In", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) Me.SERVER_Path_TEST = cAsfinag.Paramter.GET_PARAM_ByName("SERVER_Path_In_Test", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) Me.ASFINAG_PFAD = cAsfinag.Paramter.GET_PARAM_ByName("BEREITSTELLUNGS_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) Me.VERARBEITUNGS_PFAD = cAsfinag.Paramter.GET_PARAM_ByName("VERARBEITUNGS_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) Me.ZIEL_PFAD = cAsfinag.Paramter.GET_PARAM_ByName("ZIEL_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) Me.ERROR_PFAD = cAsfinag.Paramter.GET_PARAM_ByName("ERROR_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) If Not IO.Directory.Exists(VERARBEITUNGS_PFAD) Then IO.Directory.CreateDirectory(VERARBEITUNGS_PFAD) If Not IO.Directory.Exists(ZIEL_PFAD) Then IO.Directory.CreateDirectory(ZIEL_PFAD) If Not IO.Directory.Exists(ERROR_PFAD) Then IO.Directory.CreateDirectory(ERROR_PFAD) 'Me.BOX_VERSION = NCTSTR_Worker.cDY_Paramter.GET_PARAM_ByName("BOX_VERSION", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) End Sub Private Sub frmDYNachrichtenVerarbeitung_Load(sender As Object, e As EventArgs) Handles Me.Load initPfade() If FileType <> "" Then Label2.Text &= " " & FileType.ToUpper For Each d In System.IO.Directory.GetFiles(VERARBEITUNGS_PFAD) Dim filename = frmStartOptions.cut_file(d) If filename.ToLower.Contains(FileType) Then ListBox3.Items.Add(filename) End If Me.Refresh() Next End If End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Me.Enabled = False Try Label9.Visible = True Dim cnt = getNachrichtenDatenFromFTP() Label9.Text = cnt & " Datensätze empfangen." Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace & vbNewLine & "Datei: " & Dateiname, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Me.Enabled = True End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Me.Enabled = False Try Label5.Visible = True DatenEinlesen() '<<<<------------ If dsNichtErkannt > 0 Then Label6.Text = dsNichtErkannt & " Datensätze nicht " & vbNewLine & "erkannt." Label6.Visible = True End If Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace & vbNewLine & "Datei: " & Dateiname, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Me.Enabled = True Label5.Text = cntDatenEingelesen & " Datensätze verarbeitet." End Sub Function getNachrichtenDatenFromFTP() As Integer Dim cnt = 0 Try Dim SERVERPath = "" If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then SERVERPath = Me.SERVER_Path '"\\ftps.verag.ag\FTP\MAVI\IN\" Else SERVERPath = Me.SERVER_Path_TEST '"\\ftps.verag.ag\FTP\MAVI\IN\" End If For Each f In IO.Directory.GetFiles(SERVER_Path) Dim fi As New IO.FileInfo(f) If fi.Name.ToLower.Contains(FileType) Then If Not fi.Name.StartsWith(".") Then Dim zielPfad = VERARBEITUNGS_PFAD & "\" & fi.Name While IO.File.Exists(zielPfad) zielPfad = VERARBEITUNGS_PFAD & "\" & Now.ToString("yyyyMMdd_HHmmss_") & fi.Name End While IO.File.Copy(f, zielPfad) If Not VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then If IO.File.Exists(zielPfad) Then IO.File.Delete(f) End If Dim filename = frmStartOptions.cut_file((New FileInfo(zielPfad)).Name) If filename.ToLower.Contains(FileType) Then ListBox3.Items.Add(filename) cnt += 1 End If End If End If Next Return cnt Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace & vbNewLine & "Datei: " & Dateiname, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Return cnt End Function Sub DatenEinlesen() VERAG_PROG_ALLGEMEIN.cAllgemein.ERR_OP_GLOBAL = VERAG_PROG_ALLGEMEIN.ERROR_OP.SHOW If ListBox3.Items.Count = 0 Then Label6.Text = "Keine Daten zum Einlesen vorhanden." Label6.Visible = True Exit Sub End If For Each d In System.IO.Directory.GetFiles(VERARBEITUNGS_PFAD) Try Dim correctFile As Boolean = False For Each i In ListBox3.Items Dim fileName As FileInfo = New FileInfo(d) If Equals(fileName.Name, i) Then correctFile = True Exit For End If Next Dim found = False Dateiname = d If IO.File.Exists(d) And correctFile Then Dim nr_id As Integer = -1 Dim fi As FileInfo = New FileInfo(d) If Not fi.Name.StartsWith(".") Then Dim alreadyMoved = False Dim objFileRead As StreamReader = New StreamReader(d) If objFileRead.Peek() = -1 Then MsgBox("Datei hat keinen Inhalt!", MsgBoxStyle.Information, MsgBoxStyle.DefaultButton2 = MsgBoxStyle.OkOnly) Exit Sub ElseIf FileType = "clf" Then If readAndSaveCLF(objFileRead, fi) Then addDGVEinarbeitung(fi.Name, "OK") found = True Else addDGVEinarbeitung(fi.Name, "Fehler") End If ElseIf FileType = "ttr" Then If readAndSaveTTR(objFileRead, fi) Then addDGVEinarbeitung(fi.Name, "OK") found = True Else addDGVEinarbeitung(fi.Name, "Fehler") End If End If End If If found Then If Not IO.Directory.Exists(ZIEL_PFAD & "\" & Now.Year & "\" & Now.ToString("MMdd") & "\") Then IO.Directory.CreateDirectory(ZIEL_PFAD & "\" & Now.Year & "\" & Now.ToString("MMdd") & "\") frmStartOptions.moveFile(d, ZIEL_PFAD & "\" & Now.Year & "\" & Now.ToString("MMdd") & "\", VERARBEITUNGS_PFAD) cntDatenEingelesen += 1 Else If Not found Then frmStartOptions.moveFile(d, ERROR_PFAD, VERARBEITUNGS_PFAD) ' nciht gefunden, oder durch ERROR nicht eingearbt,. dsNichtErkannt += 1 End If End If Me.Refresh() End If Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace & vbNewLine & "Datei: " & Dateiname, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Next End Sub Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click Me.Close() End Sub Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click Me.Close() End Sub Sub addDGVEinarbeitung(art, BezugsNr) dgvEinarbeitung.Rows.Add(art, BezugsNr) Try dgvEinarbeitung.FirstDisplayedScrollingRowIndex = dgvEinarbeitung.RowCount - 1 Catch ex As Exception End Try End Sub Public Function readAndSaveCLF(objFileRead As StreamReader, fi As FileInfo) As Boolean Dim booHeaderVorhanden = False Dim booPrüfziffernfehler = False Dim booInTransaktion = False Dim booTrailerVorhanden = False Dim lngPKLine As Long = 0 Dim lngRecordCount As Long Do While (objFileRead.Peek() > -1) Dim strZeile = objFileRead.ReadLine() lngRecordCount = lngRecordCount + 1 Select Case Mid(strZeile, 1, 2) Case "10" booHeaderVorhanden = True Dim ext = CInt(fi.Extension.Remove(0, 1)) Dim clfHeader As New cAsfinag.CLFHeader(fi.Name.ToString, ext) With clfHeader .PKFileName = fi.Name .recordType = Mid(strZeile, 1, 2) .fileVersion = Mid(strZeile, 3, 2) .indcator = Trim(Mid(strZeile, 9, 1)) .senderID = Trim(Mid(strZeile, 10, 6)) .receiverID = Trim(Mid(strZeile, 16, 6)) .fileCreationDate = DateSerial(Mid(strZeile, 22, 4), Mid(strZeile, 26, 2), Mid(strZeile, 28, 2)) .fileCreationTime = Now() '.fileCreationTime = DateSerial(Mid(strZeile, 22, 4), Mid(strZeile, 26, 2), Mid(strZeile, 28, 2)) & " " & TimeSerial(Mid(strZeile, 30, 2), Mid(strZeile, 32, 2), Mid(strZeile, 34, 2)) .ISOCountryCode = Trim(Mid(strZeile, 62, 3)) .SAVE() End With Case "20" ' Meldung bei nicht vorhandenen Haeder. If Not booHeaderVorhanden Then MsgBox("Datei kann wegen fehlenden Header nicht verarbeitet werden.") objFileRead.Close() Return False End If Dim clfBody As New cAsfinag.CLFBody(fi.Name, lngPKLine) With clfBody .PKFileName = fi.Name lngPKLine = lngPKLine + 1 .RecordType = Trim(Mid(strZeile, 1, 2)) .fileVersion = Trim(Mid(strZeile, 3, 2)) .fileNumber = Trim(Mid(strZeile, 5, 3)) .cardNumber = Trim(Mid(strZeile, 9, 22)) .validTo = Trim(Mid(strZeile, 31, 4)) .OBUID = Trim(Mid(strZeile, 35, 18)) .vehicleLicensePlate = Trim(Mid(strZeile, 53, 10)) .nationality = Trim(Mid(strZeile, 63, 3)) .vehicleCategory = Trim(Mid(strZeile, 66, 1)) .emissionCategory = Trim(Mid(strZeile, 67, 2)) .status = Trim(Mid(strZeile, 69, 2)) .contractDate = DateSerial(Mid(strZeile, 71, 4), Mid(strZeile, 75, 2), Mid(strZeile, 77, 2)) .SAVE() End With 'CardNumber prüfen. If (Right(clfBody.cardNumber, 1)) <> cAsfinag.fktMod10Prüfziffer(Left(clfBody.cardNumber, Len(clfBody.cardNumber) - 1)) Then booPrüfziffernfehler = True End If 'strSQL = "SELECT * FROM CLFArchiv WHERE (OBUID = N'" & Trim(Mid(strZeile, 37, 18)) & "')" 'rstCLFArchiv.Open strSQL, cnnASFINAG, adOpenStatic, adLockOptimistic, adCmdText 'With rstCLFArchiv ' If .EOF Then ' .AddNew ' !OBUID = Trim(Mid(strZeile, 37, 18)) ' End If ' !FileName = strPKFileName ' !RecordType = Trim(Mid(strZeile, 1, 2)) ' !RunNumber = Trim(Mid(strZeile, 3, 8)) ' !CardNumber = Trim(Mid(strZeile, 11, 22)) ' !ValidTo = Trim(Mid(strZeile, 33, 4)) ' !KfzKennzeichen = Trim(Mid(strZeile, 55, 10)) ' !Nationalität = Trim(Mid(strZeile, 65, 3)) ' !Kategorie = Trim(Mid(strZeile, 68, 1)) ' !Schadstoffklasse = Trim(Mid(strZeile, 69, 2)) ' !Status = Trim(Mid(strZeile, 71, 2)) ' !DatumVertragsabschluss = DateSerial(Mid(strZeile, 73, 4), Mid(strZeile, 77, 2), Mid(strZeile, 79, 2)) ' .Update ' .Close 'End With ' Meldung bei Prüfziffernfehler. If booPrüfziffernfehler Then MsgBox("Prüfziffernfehler in Zeile " & CStr(lngRecordCount) & vbCrLf & "Datei kann nicht verarbeitet werden. " & vbNewLine & " " & fi.Name.ToString) booInTransaktion = False Return False End If Case "90" ' Meldung bei nicht vorhandenen Haeder. If Not booHeaderVorhanden Then MsgBox("Datei kann wegen fehlenden Header nicht verarbeitet werden.") objFileRead.Close() Return False End If booTrailerVorhanden = True Dim clfTrailer As New cAsfinag.CLFTrailer(fi.Name) With clfTrailer .PKFileName = fi.Name .recordType = Trim(Mid(strZeile, 1, 2)) .fileVersion = Trim(Mid(strZeile, 3, 2)) .fileNumber = Trim(Mid(strZeile, 5, 4)) .recordCount = Trim(Mid(strZeile, 9, 7)) .SAVE() End With ' Prüfsumme Anzahl der Sätze im File ohne Header und Trailer. If clfTrailer.recordCount <> (lngRecordCount) Then MsgBox("Record Count: " & clfTrailer.recordCount & vbCrLf & "Prüfsumme: " & (lngRecordCount) & vbCrLf) objFileRead.Close() Return False End If ' Meldung bei Prüfsummenfehler. If booPrüfziffernfehler Then MsgBox("Datei kann wegen Prüfsummenfehler nicht verarbeitet werden.") objFileRead.Close() ' MsgBox strPrompt, , strPKFileName ' ' Zurücksetzen der Transaktion. 'cnnASFINAG.RollbackTrans ' booInTransaktion = False End If Case Else ' Andere RecordNumber überlesen. End Select Loop objFileRead.Close() Return True End Function Public Function readAndSaveTTR(objFileRead As StreamReader, fi As FileInfo) As Boolean Dim booHeaderVorhanden = False Dim booPrüfziffernfehler = False Dim booInTransaktion = False Dim booTrailerVorhanden = False Dim dblCheckSumQuantity As Double Dim curCheckSumAmount As Double Dim lngPKLine As Long = 0 Dim lngRecordCount As Long Do While (objFileRead.Peek() > -1) Dim strZeile = objFileRead.ReadLine() lngRecordCount = lngRecordCount + 1 Select Case Mid(strZeile, 1, 2) Case "10" booHeaderVorhanden = True Dim ext = CInt(fi.Extension.Remove(0, 1)) Dim ttrHeader As New cAsfinag.TTRHeader(fi.Name.ToString, ext) With ttrHeader .PKFileName = fi.Name .recordType = Trim(Mid(strZeile, 1, 2)) .fileVersion = Trim(Mid(strZeile, 3, 2)) .senderID = Trim(Mid(strZeile, 5, 6)) .receiverID = Trim(Mid(strZeile, 11, 6)) .fileCreationDate = DateSerial(Mid(strZeile, 17, 4), Mid(strZeile, 21, 2), Mid(strZeile, 23, 2)) .fileCreationTime = DateSerial(Mid(strZeile, 17, 4), Mid(strZeile, 21, 2), Mid(strZeile, 23, 2)) & " " & TimeSerial(Mid(strZeile, 25, 2), Mid(strZeile, 27, 2), 0) .fileNumber = Trim(Mid(strZeile, 29, 4)) .currencyCode = Trim(Mid(strZeile, 33, 3)) .description = IIf(Trim(Mid(strZeile, 36, 25)) = "", Nothing, Trim(Mid(strZeile, 36, 25))) .ISOCountryCode = Trim(Mid(strZeile, 61, 3)) .SAVE() End With Case "20" ' Meldung bei nicht vorhandenen Haeder. If Not booHeaderVorhanden Then MsgBox("Datei kann wegen fehlenden Header nicht verarbeitet werden.") objFileRead.Close() Return False End If Dim ttrBody As New cAsfinag.TTRBody(fi.Name, lngPKLine) With ttrBody .PKFileName = fi.Name .recordType = Trim(Mid(strZeile, 1, 2)) lngPKLine = lngPKLine + 1 .PKLine = lngPKLine .fileVersion = Trim(Mid(strZeile, 3, 2)) .siteId = IIf(Trim(Mid(strZeile, 7, 15)) = "", Nothing, Trim(Mid(strZeile, 7, 15))) .fileNumber = Trim(Mid(strZeile, 22, 4)) .fileCreationDate = DateSerial(Mid(strZeile, 26, 4), Mid(strZeile, 30, 2), Mid(strZeile, 32, 2)) .deliveryNoteNumber = IIf(Trim(Mid(strZeile, 35, 8)) = "", Nothing, Trim(Mid(strZeile, 35, 8))) .cardNumber = Trim(Mid(strZeile, 43, 22)) .deliveryDate = DateSerial(Mid(strZeile, 65, 4), Mid(strZeile, 69, 2), Mid(strZeile, 71, 2)) .deliveryTime = IIf(Trim(Mid(strZeile, 73, 4)) = "", Nothing, DateSerial(Mid(strZeile, 65, 4), Mid(strZeile, 69, 2), Mid(strZeile, 71, 2)) & " " & TimeSerial(Mid(strZeile, 73, 2), Mid(strZeile, 75, 2), 0)) .transactionType = Trim(Mid(strZeile, 77, 2)) .productCode = Trim(Mid(strZeile, 79, 4)) .km = IIf(Trim(Mid(strZeile, 83, 7)) = "", Nothing, Trim(Mid(strZeile, 83, 7))) .driverId = IIf(Trim(Mid(strZeile, 90, 4)) = "", Nothing, Trim(Mid(strZeile, 90, 4))) .productQuantity = Trim(Mid(strZeile, 94, 6)) / 100 .amountInclVAT = Trim(Mid(strZeile, 100, 10)) / 100 .VATrate = Trim(Mid(strZeile, 155, 4)) / 100 .VATamount = Trim(Mid(strZeile, 159, 10)) / 100 .OBUID = Trim(Mid(strZeile, 130, 25)) .receiptNumber = Trim(Mid(strZeile, 110, 20)) ' Bei den Checksummen wird unabhängig vom TransactionType immer der positive Betrag aufsummiert. dblCheckSumQuantity = dblCheckSumQuantity + ttrBody.productQuantity curCheckSumAmount = curCheckSumAmount + ttrBody.amountInclVAT ' Bei TransactionType 03 .......Credit-Transaktion (negativ) If ttrBody.transactionType = 3 Then ' Vorzeichenänderung ttrBody.km = 0 - ttrBody.km ttrBody.productQuantity = 0 - ttrBody.productQuantity ttrBody.amountInclVAT = 0 - ttrBody.amountInclVAT ttrBody.VATamount = 0 - ttrBody.VATamount End If ' CardNumber prüfen. If (Right(ttrBody.cardNumber, 1)) <> (fktMod10Prüfziffer(Left(ttrBody.cardNumber, Len(ttrBody.cardNumber) - 1))) Then booPrüfziffernfehler = True End If .SAVE() End With 'strSQL = "SELECT * FROM CLFArchiv WHERE (OBUID = N'" & Trim(Mid(strZeile, 37, 18)) & "')" 'rstCLFArchiv.Open strSQL, cnnASFINAG, adOpenStatic, adLockOptimistic, adCmdText 'With rstCLFArchiv ' If .EOF Then ' .AddNew ' !OBUID = Trim(Mid(strZeile, 37, 18)) ' End If ' !FileName = strPKFileName ' !RecordType = Trim(Mid(strZeile, 1, 2)) ' !RunNumber = Trim(Mid(strZeile, 3, 8)) ' !CardNumber = Trim(Mid(strZeile, 11, 22)) ' !ValidTo = Trim(Mid(strZeile, 33, 4)) ' !KfzKennzeichen = Trim(Mid(strZeile, 55, 10)) ' !Nationalität = Trim(Mid(strZeile, 65, 3)) ' !Kategorie = Trim(Mid(strZeile, 68, 1)) ' !Schadstoffklasse = Trim(Mid(strZeile, 69, 2)) ' !Status = Trim(Mid(strZeile, 71, 2)) ' !DatumVertragsabschluss = DateSerial(Mid(strZeile, 73, 4), Mid(strZeile, 77, 2), Mid(strZeile, 79, 2)) ' .Update ' .Close 'End With ' Meldung bei Prüfziffernfehler. If booPrüfziffernfehler Then MsgBox("Prüfziffernfehler in Zeile " & CStr(lngRecordCount) & vbCrLf & "Datei kann nicht verarbeitet werden. " & vbNewLine & " " & fi.Name.ToString) booInTransaktion = False objFileRead.Close() Return False End If Case "90" ' Meldung bei nicht vorhandenen Haeder. If Not booHeaderVorhanden Then MsgBox("Datei kann wegen fehlenden Header nicht verarbeitet werden.") objFileRead.Close() Return False End If booTrailerVorhanden = True Dim ttrTrailer As New cAsfinag.TTRTrailer(fi.Name) With ttrTrailer .PKFileName = fi.Name .recordType = Trim(Mid(strZeile, 1, 2)) .fileVersion = Trim(Mid(strZeile, 3, 2)) '.fileNumber = Trim(Mid(strZeile, 5, 4)) .recordCount = Trim(Mid(strZeile, 5, 9)) .checksumProductQuantity = Trim(Mid(strZeile, 14, 15)) / 100 .checksumAmounntInclVAT = Trim(Mid(strZeile, 29, 15)) / 100 .SAVE() Dim strPrompt If ttrTrailer.recordCount <> lngRecordCount Then strPrompt = strPrompt & "Record Count: " & ttrTrailer.recordCount & vbCrLf & "Prüfsumme: " & lngRecordCount & vbCrLf End If ' Prüfsumme Menge. If ttrTrailer.checksumProductQuantity <> dblCheckSumQuantity Then strPrompt = strPrompt & "Check Sum Quantity: " & ttrTrailer.checksumProductQuantity & vbCrLf & "Prüfsumme: " & dblCheckSumQuantity & vbCrLf End If ' Prüfsumme Betrag. If ttrTrailer.checksumAmounntInclVAT <> Math.Round(curCheckSumAmount, 2) Then strPrompt = strPrompt & "Check Sum Amount: " & ttrTrailer.checksumAmounntInclVAT & vbCrLf & "Prüfsumme: " & curCheckSumAmount & vbCrLf End If If strPrompt <> "" Then MsgBox(strPrompt) objFileRead.Close() Return False End If End With ' Prüfsumme Anzahl der Sätze im File ohne Header und Trailer. If ttrTrailer.recordCount <> (lngRecordCount) Then MsgBox("Record Count: " & ttrTrailer.recordCount & vbCrLf & "Prüfsumme: " & (lngRecordCount) & vbCrLf) objFileRead.Close() Return False End If ' Meldung bei Prüfsummenfehler. If booPrüfziffernfehler Then MsgBox("Datei kann wegen Prüfsummenfehler nicht verarbeitet werden.") objFileRead.Close() Return False ' MsgBox strPrompt, , strPKFileName ' ' Zurücksetzen der Transaktion. 'cnnASFINAG.RollbackTrans ' booInTransaktion = False End If Case Else ' Andere RecordNumber überlesen. End Select Loop objFileRead.Close() Return True End Function Private Sub dgvEinarbeitung_SelectionChanged(sender As Object, e As EventArgs) Handles dgvEinarbeitung.SelectionChanged dgvEinarbeitung.ClearSelection() End Sub Private Sub frmTCNachrichtenVerarbeitung_Shown(sender As Object, e As EventArgs) Handles Me.Shown If allowClose Then Me.Refresh() Button2.PerformClick() Button1.PerformClick() System.Threading.Thread.Sleep(2000) Me.Close() End If End Sub Private Sub pnl_Paint(sender As Object, e As PaintEventArgs) Handles pnl.Paint End Sub Public Shadows Function Right(ByVal sText As String, ByVal nLen As Integer) As String If nLen > sText.Length Then nLen = sText.Length Return (sText.Substring(sText.Length - nLen)) End Function Public Shadows Function Left(ByVal sText As String, ByVal nLen As Integer) As String If nLen > sText.Length Then nLen = sText.Length Return (sText.Substring(0, nLen)) End Function End Class