Imports System.Xml Imports System.Xml.Serialization Imports System.IO Imports System.IO.Compression Public Class clscamt054 Public data As New DataTable Dim m_filename As String Property Filename As String Get Return m_filename End Get Set(value As String) m_filename = value End Set End Property Dim i As Integer = 0 Dim valdt As DateTime Dim bookdt As DateTime Dim betrag As Double Dim taxen As Double Dim referenz As String Dim camtdata As New DataSet Dim camtdatatemp As New DataSet Dim ZData As New DataTable Dim Total As Double Dim AnzahlBuchungen As Integer Dim ID As String Dim CreateDateTime As DateTime Dim iban As String Dim NtryRef As String Public CAMT_RUN_ID As Integer = 0 Dim CAMT_FILE_ID As Integer Public fehler As Integer = 0 Public Function CheckFiles(ByVal ifilename As String) Dim Pfad As String = System.IO.Path.GetDirectoryName(ifilename) Dim files() As String = IO.Directory.GetFiles(Pfad) Return files.Count End Function Public Sub Init_Datatable() ZData.Rows.Clear() ZData.Columns.Clear() ZData.Columns.Add("Referenz") ZData.Columns.Add("Valuta") ZData.Columns.Add("Buchungsdatum") ZData.Columns.Add("Betrag") ZData.Columns.Add("Taxen") ZData.Columns.Add("Filename") ZData.Columns.Add("Total") ZData.Columns.Add("ID") ZData.Columns.Add("CreateDateTime") ZData.Columns.Add("IBAN") ZData.Columns.Add("NTryRef") End Sub Public Sub Alles_XML_Dateien(ByVal iFilename As String) Try Init_Datatable() Dim Pfad As String = System.IO.Path.GetDirectoryName(iFilename) Dim files() As String = IO.Directory.GetFiles(Pfad) Dim i As Integer = 0 For Each file As String In files Einzelne_XML_Datei(file) Next Catch EX As Exception Globals.EVH.Fire_Insert_Entry("Alle_XML_Dateien:Fehler: " + EX.Message) fehler = fehler + 1 End Try End Sub Public Sub Insert_Camt_Run(ByVal ifilename As String) Try Dim db As New clsDB db.Insert_New_Entry_autokey("Camt_Run", "nreintrag", False) Dim dr As DataRow = db.dsDaten.Tables(0).Rows(0) dr.Item(1) = Now dr.Item(2) = True dr.Item(3) = Now dr.Item(4) = Now dr.Item(5) = Globals.ActUser Dim fi As New FileInfo(ifilename) dr.Item(7) = fi.Name ' db.dsDaten.Tables(0).AcceptChanges() db.Update_Data() db.Save_CAMT_File_RUN(db.dsDaten.Tables(0).Rows(0).Item(0), ifilename) Me.CAMT_RUN_ID = db.dsDaten.Tables(0).Rows(0).Item(0) Globals.EVH.Fire_Insert_Entry("CAMT_RUN: " + CAMT_RUN_ID.ToString) Catch ex As Exception Globals.EVH.Fire_Insert_Entry("Insert_Camt_Run:Fehler: " + ex.Message) fehler = fehler = 1 End Try End Sub Public Sub ZIP_Verarbeitung(ByVal iFilename As String) Try Globals.EVH.Fire_Insert_Entry("ZIP-Datei öffenen und Entpacken:") Dim zipPath As String = iFilename Dim extractPath As String = My.Settings.TempPath Dim tmpdir As String = DateTime.Now.ToString("ddMMyyyy") extractPath = extractPath + "\" + tmpdir If Not System.IO.Directory.Exists(extractPath) Then System.IO.Directory.CreateDirectory(extractPath) End If Globals.EVH.Fire_Insert_Entry("Pfad: " + extractPath) ZipFile.ExtractToDirectory(zipPath, extractPath) Insert_Camt_Run(iFilename) Init_Datatable() Dim Pfad As String = extractPath Dim files() As String = IO.Directory.GetFiles(Pfad) Dim i As Integer = 0 For Each file As String In files Einzelne_XML_Datei(file) Next Dim directoryName As String = extractPath For Each deleteFile In Directory.GetFiles(directoryName, "*.xml", SearchOption.TopDirectoryOnly) File.Delete(deleteFile) Next System.IO.Directory.Delete(extractPath) Catch ex As Exception Globals.EVH.Fire_Insert_Entry("Insert_Camt_Run: " + ex.Message) fehler = fehler = 1 End Try End Sub Dim referent As String Dim tbetrag As String Dim tbuchungen As String Dim foundvalue As String Public Sub Einzelne_XML_Datei(ByVal iFilename As String) Try Dim db As New clsDB Try db.Insert_New_Entry_autokey("Camt_File", "nreintrag", False) Me.CAMT_FILE_ID = db.dsDaten.Tables(0).Rows(0).Item(0) Catch ex As Exception MsgBox(ex.Message) End Try Dim doc As New XmlDocument doc.Load(iFilename) 'Globals.EVH.Fire_Insert_Entry("ZIP_Verarbeitung:Fehler: " + iFilename) Dim ElementList As XmlNodeList ElementList = doc.GetElementsByTagName("Ntfctn") CreateDateTime = GetTagValue(ElementList(0), "Ntfctn", "CreDtTm") Dim ib As String = GetTagValue(ElementList(0), "Ntfctn", "Id") ElementList = doc.GetElementsByTagName("Acct") ib = GetTagValue(ElementList(0), "Id", "IBAN") ElementList = doc.GetElementsByTagName("Ntry") bookdt = GetTagValue(ElementList(0), "BookgDt", "Dt") valdt = GetTagValue(ElementList(0), "ValDt", "Dt") tbetrag = GetTagValue(ElementList(0), "Ntry", "Amt") ElementList = doc.GetElementsByTagName("NtryDtls") tbuchungen = GetTagValue(ElementList(0), "Btch", "NbOfTxs") tbetrag = GetTagValue(ElementList(0), "Btch", "TtlAmt") ElementList = doc.GetElementsByTagName("TxDtls") For Each element As XmlNode In ElementList Dim ref As String = GetTagValue(element, "CdtrRefInf", "Ref") Dim amt As String = GetTagValue(element, "TxAmt", "Amt") If amt = "" Then amt = GetTagValue(element, "TxDtls", "Amt") Dim db1 As New clsDB db1.Insert_New_Entry_autokey("CAMT_Record", "nreintrag", False) Dim r As DataRow = db1.dsDaten.Tables(0).Rows(0) r.Item(1) = CAMT_FILE_ID r.Item(2) = ref r.Item(3) = valdt r.Item(4) = bookdt r.Item(5) = amt r.Item(6) = 0 r.Item(11) = False db1.Update_Data() db1.Dispose() Next Dim dr As DataRow = db.dsDaten.Tables(0).Rows(0) dr.Item(1) = CAMT_RUN_ID Dim fi As New FileInfo(iFilename) dr.Item(2) = fi.Name dr.Item(4) = CreateDateTime dr.Item(5) = ib Try dr.Item(6) = NtryRef Catch ex As Exception dr.Item(6) = "" End Try 'dr.Item(6) = NtryRef Try dr.Item(7) = tbuchungen Catch dr.Item(7) = 0 End Try Try dr.Item(8) = ID Catch dr.Item(8) = "" End Try Try dr.Item(9) = Total Catch ex As Exception dr.Item(9) = 0 End Try 'dr.Item(9) = Total dr.Item(10) = True 'db.dsDaten.Tables(0).AcceptChanges() db.Update_Data() db.Save_CAMT_File(db.dsDaten.Tables(0).Rows(0).Item(0), iFilename) Catch ex As Exception End Try End Sub Public Function GetTagValue(ByVal node As XmlNode, parentelement As String, element As String, Optional xDefault As String = "") As String foundvalue = "" Get_Tag_Value(node, parentelement, element) Return foundvalue End Function Public Function Get_Tag_Value(ByVal node As XmlNode, parentelement As String, element As String) As String If foundvalue <> "" Then Exit Function If node.Name = element And node.ParentNode.Name = parentelement Then foundvalue = node.InnerText For Each n As XmlNode In node.ChildNodes Get_Tag_Value(n, parentelement, element) Next End Function Public Sub yEinzelne_XML_Datei(ByVal iFilename As String) 'Try ' Globals.EVH.Fire_Insert_Entry("ZIP_Verarbeitung:Fehler: " + iFilename) ' 'Dim doc As New XmlDocument ' 'doc.Load(iFilename) ' 'Dim xdocument As Document ' 'xdocument.BkToCstmrDbtCdtNtfctn = doc.GetElementsByTagName("BkToCstmrDbtCdtNtfctn") ' Dim serializer As New XmlSerializer(GetType(Document)) ' Dim reader As New IO.StreamReader(iFilename) ' Dim xdocument As Document = serializer.Deserialize(reader) ' Dim a As List(Of AccountNotification7) = xdocument.BkToCstmrDbtCdtNtfctn.Ntfctn.ToList ' Dim db As New clsDB ' Try ' db.Insert_New_Entry_autokey("Camt_File", "nreintrag", False) ' Me.CAMT_FILE_ID = db.dsDaten.Tables(0).Rows(0).Item(0) ' Catch ex As Exception ' MsgBox(ex.Message) ' End Try ' For Each accountinformation As AccountNotification7 In a ' ID = accountinformation.Id ' CreateDateTime = accountinformation.CreDtTm ' iban = accountinformation.Acct.Id.Item ' For Each r4 As ReportEntry4 In accountinformation.Ntry ' NtryRef = r4.NtryRef ' valdt = r4.ValDt.Item ' bookdt = r4.BookgDt.Item ' For Each ed As EntryDetails3 In r4.NtryDtls ' AnzahlBuchungen = ed.Btch.NbOfTxs ' Total = ed.Btch.TtlAmt.Value ' For Each td As EntryTransaction4 In ed.TxDtls ' referenz = "" ' 'valdt = Nothing ' 'bookdt = Nothing ' betrag = 0 ' taxen = 0 ' betrag = td.Amt.Value.ToString ' referenz = td.RmtInf.Strd(0).CdtrRefInf.Ref ' 'MsgBox(td.Amt.Value.ToString) ' Try ' taxen = (td.Chrgs.TtlChrgsAndTaxAmt.Value) ' Catch ' taxen = 0 ' End Try ' Dim db1 As New clsDB ' db1.Insert_New_Entry_autokey("CAMT_Record", "nreintrag", False) ' Dim r As DataRow = db1.dsDaten.Tables(0).Rows(0) ' r.Item(1) = CAMT_FILE_ID ' r.Item(2) = referenz ' r.Item(3) = valdt ' r.Item(4) = bookdt ' r.Item(5) = betrag ' r.Item(6) = taxen ' r.Item(11) = False ' 'db1.dsDaten.AcceptChanges() ' 'db1.dsDaten.Tables(0).AcceptChanges() ' db1.Update_Data() ' db1.Dispose() ' Next ' Next ' Next ' Next ' reader.Close() ' reader.Dispose() ' Dim dr As DataRow = db.dsDaten.Tables(0).Rows(0) ' dr.Item(1) = CAMT_RUN_ID ' Dim fi As New FileInfo(iFilename) ' dr.Item(2) = fi.Name ' dr.Item(4) = CreateDateTime ' dr.Item(5) = iban ' dr.Item(6) = NtryRef ' dr.Item(7) = AnzahlBuchungen ' dr.Item(8) = ID ' dr.Item(9) = Total ' dr.Item(10) = True ' 'db.dsDaten.Tables(0).AcceptChanges() ' db.Update_Data() ' db.Save_CAMT_File(db.dsDaten.Tables(0).Rows(0).Item(0), iFilename) 'Catch EX As Exception ' Globals.EVH.Fire_Insert_Entry("Einzelne_XML_Datei: fehler: " + EX.Message) ' fehler = fehler + 1 'End Try End Sub Public Function Daten_Verbuchen() Try Dim db1 As New clsDB Dim sql As String sql = "SELECT dbo.CAMT_Record.Referenz, dbo.CAMT_Record.Valuta, dbo.CAMT_Record.Buchungsdatum, dbo.CAMT_Record.Betrag, dbo.CAMT_Record.Taxen, dbo.CAMT_Record.verbucht, dbo.CAMT_Record.nreintrag " sql = sql + " From dbo.CAMT_Run INNER JOIN" sql = sql + " dbo.CAMT_File ON dbo.CAMT_Run.NrEIntrag = dbo.CAMT_File.CAMT_RunNr INNER JOIN" sql = sql + " dbo.CAMT_Record ON dbo.CAMT_File.Nreintrag = dbo.CAMT_Record.CAMT_FileNr" sql = sql + " WHERE (dbo.CAMT_Record.aktiv = 1) AND (dbo.CAMT_File.aktiv = 1) AND (dbo.CAMT_Run.aktiv = 1) AND (dbo.CAMT_Record.verbucht = 0) AND (dbo.CAMT_Run.NrEIntrag = " + Me.CAMT_RUN_ID.ToString + ")" db1.Get_Tabledata("Camt_Record", "", sql) For Each r As DataRow In db1.dsDaten.Tables(0).Rows If CAMT_Verbuchen(r) = True Then db1.Exec_SQL("Update camt_record set mutiert_am=getdate(), mutierer=" + Globals.ActUser.ToString + ",Verbucht=1 where nreintrag=" + r.Item("nreintrag").ToString) Next Catch EX As Exception Globals.EVH.Fire_Insert_Entry("Daten_Verbuchen:Fehler: " + EX.Message) fehler = fehler + 1 End Try End Function Private Function Verbuchen(ByRef dr As DataRow) As Boolean Dim db1 As New clsDB Dim fakturanr As String fakturanr = dr.Item("Referenz").Substring(7, 10) If fakturanr.Substring(4, 1) = "9" Then 'Anzahlung_Verbuchen' Else db1.Get_Tabledata("RG", "", "Select * from faktura where nrfaktura='" + fakturanr + "' and aktiv=1 and status=0") If db1.dsDaten.Tables(0).Rows.Count < 1 Then Globals.EVH.Fire_Insert_Entry("Keine Rechnung mit der Nummer: " + fakturanr + " vorhanden.") fehler = fehler + 1 Return False Exit Function End If If db1.dsDaten.Tables(0).Rows.Count < 1 Then Globals.EVH.Fire_Insert_Entry("Rechnung mit der Nummer: " + fakturanr + " wurde bereits storniert.") fehler = fehler = fehler + 1 Return False Exit Function End If Dim db2 As New clsDB db2.Get_Tabledata("Zahlung", "", "Select * from zahlung where nrfaktura='" + fakturanr + "' and status<>9 and aktiv=1") If db2.dsDaten.Tables(0).Rows.Count > 0 Then Globals.EVH.Fire_Insert_Entry("Zahlung wurde bereits verbucht: " + fakturanr + " - " + db1.dsDaten.Tables(0).Rows(0).Item("patientzeile")) fehler = fehler + 1 Return False Exit Function End If Dim db3 As New clsDB db3.Get_Tabledata("Debitor", "", "Select * from Debitor where nrfaktura='" + fakturanr + "' and aktiv=1 ") If db3.dsDaten.Tables(0).Rows.Count < 1 Then Globals.EVH.Fire_Insert_Entry("Für die Zahlung ist kein Debitor vorhanden: " + fakturanr) fehler = fehler + 1 Return False Exit Function End If 'Debitor buchen If db3.dsDaten.Tables(0).Rows(0).Item("Betrag") = 0 Then db1.dsDaten.Tables(0).Rows(0).Item("Status") = 0 db1.dsDaten.Tables(0).Rows(0).Item("statusdatum") = Now Else db1.dsDaten.Tables(0).Rows(0).Item("Status") = 0 db1.dsDaten.Tables(0).Rows(0).Item("statusdatum") = Now End If db1.Update_Data() db3.dsDaten.Tables(0).Rows(0).Item("Betrag") = db3.dsDaten.Tables(0).Rows(0).Item("Betrag") - dr.Item("Betrag") db3.Update_Data() Dim db4 As New clsDB Dim dr1 As DataRow dr1 = db2.dsDaten.Tables(0).NewRow dr1.Item("nrzahlung") = db4.Get_DBKey("Zahlung") dr1.Item("nrfaktura") = fakturanr dr1.Item("betrag") = dr.Item("Betrag") dr1.Item("Vorauszahlung") = False dr1.Item("nrkonto") = db4.Get_Option(2003) dr1.Item("Mandant") = Globals.Mandant dr1.Item("nrdebitor") = db1.dsDaten.Tables(0).Rows(0).Item("nrdebitor") dr1.Item("valuta") = dr.Item("DatumGutschrift") dr1.Item("nrbehandlung") = db1.dsDaten.Tables(0).Rows(0).Item("nrbehandlung") dr1.Item("status") = 0 dr1.Item("Statusdatum") = Now dr1.Item("erstellt_am") = Now dr1.Item("mutiert_am") = Now dr1.Item("mutierer") = Globals.ActUser dr1.Item("aktiv") = True db2.dsDaten.Tables(0).Rows.Add(dr1) db2.Update_Data() db2.Dispose() Globals.EVH.Fire_Insert_Entry("Zahlung verbucht: " + fakturanr + " / " + dr.Item("Betrag").ToString) Dim db5 As New clsDB db5.Insert_ZJournal(fakturanr, dr1.Item("nrdebitor"), db5.Get_Datavalue("Select dbo.get_name(" + dr1.Item("nrdebitor").ToString + ")"), dr1.Item("Betrag"), db5.Get_Datavalue("Select Konto from konto where nrkonto=" + dr1.Item("nrkonto").ToString), "", "") db5.Dispose() Return True End If End Function Private Function CAMT_Verbuchen(ByRef dr As DataRow) As Boolean Dim db1 As New clsDB Dim fakturanr As String fakturanr = dr.Item("Referenz").Substring(6, 10) If fakturanr.Substring(4, 1) = "9" Then 'Anzahlung_Verbuchen' Else db1.Get_Tabledata("RG", "", "Select * from faktura where nrfaktura='" + fakturanr + "' and aktiv=1 and status=0") If db1.dsDaten.Tables(0).Rows.Count < 1 Then Globals.EVH.Fire_Insert_Entry("Keine Rechnung mit der Nummer: " + fakturanr + " vorhanden.") fehler = fehler + 1 Return False Exit Function End If If db1.dsDaten.Tables(0).Rows.Count < 1 Then Globals.EVH.Fire_Insert_Entry("Rechnung mit der Nummer: " + fakturanr + " wurde bereits storniert.") fehler = fehler = fehler + 1 Return False Exit Function End If Dim db2 As New clsDB db2.Get_Tabledata("Zahlung", "", "Select * from zahlung where nrfaktura='" + fakturanr + "' and status<>9 and aktiv=1") If db2.dsDaten.Tables(0).Rows.Count > 0 Then Globals.EVH.Fire_Insert_Entry("Zahlung wurde bereits verbucht: " + fakturanr + " - " + db1.dsDaten.Tables(0).Rows(0).Item("patientzeile")) fehler = fehler + 1 Return False Exit Function End If Dim db3 As New clsDB db3.Get_Tabledata("Debitor", "", "Select * from Debitor where nrfaktura='" + fakturanr + "' and aktiv=1 ") If db3.dsDaten.Tables(0).Rows.Count < 1 Then Globals.EVH.Fire_Insert_Entry("Für die Zahlung ist kein Debitor vorhanden: " + fakturanr) fehler = fehler + 1 Return False Exit Function End If 'Debitor buchen If db3.dsDaten.Tables(0).Rows(0).Item("Betrag") = 0 Then db1.dsDaten.Tables(0).Rows(0).Item("Status") = 0 db1.dsDaten.Tables(0).Rows(0).Item("statusdatum") = Now Else db1.dsDaten.Tables(0).Rows(0).Item("Status") = 0 db1.dsDaten.Tables(0).Rows(0).Item("statusdatum") = Now End If db1.Update_Data() db3.dsDaten.Tables(0).Rows(0).Item("Betrag") = db3.dsDaten.Tables(0).Rows(0).Item("Betrag") - dr.Item("Betrag") db3.Update_Data() Dim db4 As New clsDB Dim dr1 As DataRow dr1 = db2.dsDaten.Tables(0).NewRow dr1.Item("nrzahlung") = db4.Get_DBKey("Zahlung") dr1.Item("nrfaktura") = fakturanr dr1.Item("betrag") = dr.Item("Betrag") dr1.Item("Vorauszahlung") = False dr1.Item("nrkonto") = db4.Get_Option(2003) dr1.Item("Mandant") = Globals.Mandant dr1.Item("nrdebitor") = db1.dsDaten.Tables(0).Rows(0).Item("nrdebitor") dr1.Item("valuta") = dr.Item("Valuta") dr1.Item("nrbehandlung") = db1.dsDaten.Tables(0).Rows(0).Item("nrbehandlung") dr1.Item("status") = 0 dr1.Item("Statusdatum") = Now dr1.Item("erstellt_am") = Now dr1.Item("mutiert_am") = Now dr1.Item("mutierer") = Globals.ActUser dr1.Item("aktiv") = True db2.dsDaten.Tables(0).Rows.Add(dr1) db2.Update_Data() db2.Dispose() Globals.EVH.Fire_Insert_Entry("Zahlung verbucht: " + fakturanr + " / " + dr.Item("Betrag").ToString) Dim db5 As New clsDB db5.Insert_ZJournal(fakturanr, dr1.Item("nrdebitor"), db5.Get_Datavalue("Select dbo.get_name(" + dr1.Item("nrdebitor").ToString + ")"), dr1.Item("Betrag"), db5.Get_Datavalue("Select Konto from konto where nrkonto=" + dr1.Item("nrkonto").ToString), "", "") db5.Dispose() Return True End If End Function Public Class RG Dim mreferenz As String Property Referent As String Get Return mreferenz End Get Set(value As String) mreferenz = value End Set End Property Dim mfakturanr As String Property Frakturanr As String Get Return mfakturanr End Get Set(value As String) mfakturanr = value.Substring(7, 10) End Set End Property End Class Public Sub Verarbeiten() 'camtdata.ReadXml(Filename) For Each ntryr As DataRow In camtdata.Tables("ntry").Rows Get_Buchungsdatum(ntryr.Item(ntryr.Item("Ntry_Id"))) Get_Reference(ntryr.Item(ntryr.Item("Ntry_Id"))) Get_Valuta(ntryr.Item(ntryr.Item("Ntry_Id"))) Get_Betrag(ntryr.Item(ntryr.Item("Ntry_Id"))) Get_Taxen(ntryr.Item(ntryr.Item("Ntry_Id"))) Dim r As DataRow = ZData.NewRow r.Item(0) = referenz r.Item(1) = valdt r.Item(2) = bookdt r.Item(3) = betrag r.Item(4) = taxen ZData.Rows.Add(r) Next Exit Sub For Each r As DataRow In camtdata.Tables("ntry").Rows For Each rr As DataRow In camtdata.Tables("valdt").Rows If rr.Item("Ntry_Id") = r.Item("Ntry_Id") Then Try valdt = rr.Item("Dt") Catch End Try End If Next For Each rr As DataRow In camtdata.Tables("Bookgdt").Rows If rr.Item("Ntry_Id") = r.Item("Ntry_Id") Then Try bookdt = rr.Item("Dt") Catch End Try End If Next For Each rr As DataRow In camtdata.Tables("amt").Rows Try If rr.Item("Ntry_Id") = r.Item("Ntry_Id") Then Try betrag = rr.Item("Amt_Text") Catch End Try End If Catch End Try Next For Each rr As DataRow In camtdata.Tables("CdtrRefInf").Rows If rr.Item("strd_Id") = r.Item("Ntry_Id") Then Try referenz = rr.Item("Ref") Catch End Try End If Next Next End Sub Private Function Get_Reference(ByVal id As String) As String Try For Each rr As DataRow In camtdata.Tables("CdtrRefInf").Rows If rr.Item("strd_Id") = id Then Try Return rr.Item("Ref") Exit For Catch End Try End If Next Catch ex As Exception Return "" End Try End Function Private Function Get_Valuta(ByVal id As String) As DateTime Try For Each rr As DataRow In camtdata.Tables("valdt").Rows If rr.Item("Ntry_Id") = id Then Try Return rr.Item("Dt") Exit For Catch End Try End If Next Catch ex As Exception Return "01.01.2000'" End Try End Function Private Function Get_Buchungsdatum(ByVal id As String) As DateTime Try For Each rr As DataRow In camtdata.Tables("Bookgdt").Rows If rr.Item("Ntry_Id") = id Then Try Return rr.Item("Dt") Exit For Catch End Try End If Next Catch ex As Exception Return "01.01.2000'" End Try End Function Private Function Get_Betrag(ByVal id As String) For Each rr As DataRow In camtdata.Tables("amt").Rows Try If rr.Item("Ntry_Id") = id Then Try betrag = rr.Item("Amt_Text") Catch End Try End If Catch End Try Next End Function Private Function Get_Taxen(ByVal ID As String) For Each rr As DataRow In camtdata.Tables("rcrd").Rows Try If rr.Item("Ntry_Id") = ID Then Try taxen = rr.Item("Amt Ccy") Catch End Try End If Catch End Try Next End Function End Class