Option Explicit On
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports System.IO
'''Funktionen für die Journalisierung der einzelnen
'''Verarbeitungsschritte
Public Class clsJournal
#Region "Deklarationen"
'''Interne Variable für das Property JournalNr
Dim m_Journalnr As Integer
'''Property für die JournalNr
Property JournalNr() As Integer
Get
Return m_Journalnr
End Get
Set(ByVal Value As Integer)
m_Journalnr = Value
End Set
End Property
'''Variable für die Datenbankklasse clsImport_Job
Dim Journal As New edokadb.clsImport_Job()
'''Variable für die Datenbankklasse clsimport_eintrag
Dim Journaleintrag As New edokadb.clsImport_Eintrag()
'''Interne Variable für das halten einer Datentabelle
Dim tmptbl As New DataTable()
#End Region
#Region "öffentliche Methoden"
'''Öffnet ein neuer Journaleintrag in der Tabelle Import_Job
'''Für jede Indexdatei wird in der Verarbeitung ein neues Journal mit den
'''entsprechenden Einträgen erstellt
'''Verarbeiten
Public Function Open_Journal() As Boolean
Try
Journal.cpMainConnectionProvider = Globals.conn_journale
Journal.daStart_TS = New SqlDateTime(CType(Now, DateTime))
Journal.iFeherhaft = New SqlInt32(CType(0, Int32))
Journal.iJournal_Ausgeliefert = New SqlInt32(CType(0, Int32))
Try
Globals.conn_journale.OpenConnection()
Catch
End Try
Journal.Insert()
Try
Globals.conn_journale.CloseConnection(True)
Catch
End Try
Me.JournalNr = Journal.iImport_JobNr.Value
Journal.Dispose()
Catch
Try
Globals.conn_journale.CloseConnection(True)
Catch ex As Exception
End Try
End Try
End Function
'''Schliessen des aktuell geöffneten Verarbeitungsjournales
'''Beim Abschluss eines Jobs wird der aktuelle Timestamp in der Tabelle
'''Import_Job nachgeführt
'''Verarbeiten
Public Function Close_Journal() As Boolean
Journal.cpMainConnectionProvider = Globals.conn_journale
Journal.iImport_JobNr = New SqlInt32(CType(Me.JournalNr, Int32))
Journal.SelectOne()
If Fehler <> 0 Then
Journal.iFeherhaft = New SqlInt32(CType(1, Integer))
End If
Journal.daEnde_TS = New SqlDateTime(CType(Now, DateTime))
Globals.conn_journale.OpenConnection()
Journal.Update()
Globals.conn_journale.CloseConnection(True)
End Function
'''Journaleintrag löschen
'''Löscht den Journaleintrag aus der Variabel JournalNr
Public Sub Delete_Entry()
Journal.cpMainConnectionProvider = Globals.conn_journale
Journal.iImport_JobNr = New SqlInt32(CType(Me.JournalNr, Int32))
Journal.SelectOne()
Journal.daEnde_TS = New SqlDateTime(CType(Now, DateTime))
Globals.conn_journale.OpenConnection()
Journal.Delete()
Globals.conn_journale.CloseConnection(True)
End Sub
'''Einfügen eines neuen Journaldatensatzes
'''Recordnummer der Indexdaten bzw. "" für allgemeine
'''Journaleinträte
'''Partnernr oder "" für allgemeine
'''Einträge
'''Dateityp der zu importierenden Datei bzw. ""
'''für allgemeine Einträge
'''Index-Dateiname oder Dateiname der zu importierenden
'''Datei
'''Status Nr
'''Bezeichnung zur Statusnr
'''Dokumentid des EDOKA-Dokumentes nach dem Import
'''oder ""
'''Fremdschlüssel zur Tabelle FA_APPL
'''edkb08.edokadb.clsFA_APPL
Public Sub Insert_Journal(ByVal RecNo As String, ByVal Partnernr As String, ByVal dateityp As String, ByVal dateiname As String,
ByVal Status As String, ByVal Statustext As String, ByVal EDOKA_Dokumentid As String,
ByVal Applikationnr As String)
If Status <> "" And Status <> "0" Then
If Globals.Fehlermeldung <> "" Then Globals.Fehlermeldung = Globals.Fehlermeldung + vbCrLf
Globals.Fehlermeldung = Globals.Fehlermeldung + Statustext
End If
Me.Journaleintrag.cpMainConnectionProvider = Globals.conn_journale
Me.Journaleintrag.sRecordNo = New SqlString(CType(RecNo, String))
Me.Journaleintrag.sPartnernr = New SqlString(CType(Partnernr, String))
Me.Journaleintrag.sDateityp = New SqlString(CType(dateityp, String))
Me.Journaleintrag.sDateiname = New SqlString(CType(dateiname, String))
Me.Journaleintrag.sStatus = New SqlString(CType(Status, String))
Me.Journaleintrag.sStatustext = New SqlString(CType(Statustext, String))
Me.Journaleintrag.sEDOKA_Dokumentid = New SqlString(CType(EDOKA_Dokumentid, String))
Try
If Globals.Herkunftsapplikation.Rows.Count = 0 Then
Me.Journaleintrag.sApplikationsnr = New SqlString(CType(0, String))
Else
Me.Journaleintrag.sApplikationsnr = New SqlString(CType(Globals.Herkunftsapplikation.Rows(0).Item(0), String))
End If
Catch
Me.Journaleintrag.sApplikationsnr = New SqlString(CType(0, String))
End Try
Me.Journaleintrag.daTS = New SqlDateTime(CType(Now, DateTime))
Me.Journaleintrag.iImport_JobNr = New SqlInt32(CType(JournalNr, Int32))
Me.Journaleintrag.sEDOKA_Dokumenttyp = New SqlString(CType("", String))
If RecNo <> "" Then
Me.Journaleintrag.sIndexdaten = New SqlString(CType(get_indexdata(RecNo), String))
Else
Me.Journaleintrag.sIndexdaten = New SqlString(CType("", String))
End If
Globals.conn_journale.OpenConnection()
Me.Journaleintrag.Insert()
Globals.conn_journale.CloseConnection(True)
If Status <> "0" And Status <> "" Then
PrintLog(Str(Me.Journaleintrag.iImport_Eintragnr.Value) + " " + Status + " " + Statustext, EventLogEntryType.Error)
Else
PrintLog(Str(Me.Journaleintrag.iImport_Eintragnr.Value) + " " + Status + " " + Statustext, EventLogEntryType.Information)
End If
End Sub
Private Function get_indexdata(ByVal Recno As Integer) As String
Try
Dim s As String = ""
Dim i As Integer
For i = 0 To Globals.temp_indexdaten.Columns.Count - 1
s = s + LTrim(Str(i + 1)) + ": " + Trim(Globals.temp_indexdaten.Rows(Recno).Item(i)) + " "
Next
Return s
Catch
Return ""
End Try
End Function
'''Ergänzt den Journaleintrag mit der zugehörenden
'''Herkunftsapplikation
'''edkb08.Globals
Public Sub Update_Journal()
Try
Dim j As New edokadb.clsImport_Job()
j.iImport_JobNr = New SqlInt32(CType(Globals.Journal.JournalNr, Int32))
j.cpMainConnectionProvider = Globals.conn_journale
j.SelectOne()
j.iApplikationNr = New SqlInt32(CType(Globals.Herkunftsapplikation.Rows(0).Item(0), Int32))
Globals.conn_journale.OpenConnection()
j.Update()
Globals.conn_journale.CloseConnection(True)
Catch ex As Exception
PrintOut("clsJournal:Update_Journal:" + ex.Message + ex.StackTrace, EventLogEntryType.Error)
End Try
End Sub
#Region "Journal"
Public Function Print_Log(ByVal Applid As Integer, ByVal Applname As String, ByVal type As String) As String
Dim dt As New DataTable()
dt = Get_Journaldata(Applid)
Dim ds As New DataSet()
ds.Tables.Add(dt)
Dim x As New Export()
Return x.Create_Report(dt, UCase(type), Globals.Herkunftsapplikation.Rows(0).Item(1))
End Function
Public Function Print_Log_Batch(ByVal Applid As Integer, ByVal Applname As String, ByVal type As String) As String
Dim dt As New DataTable()
dt = Get_Journaldata(Applid)
Dim ds As New DataSet()
ds.Tables.Add(dt)
Dim x As New Export()
Return x.Create_Report(dt, UCase(type), Applname)
End Function
' Function table_to_csv(ByVal DT As DataTable) As String
' Dim zeile As String = ""
' Dim DR As DataRow
' Dim DC As DataColumn
' ' Spaltenüberschriften
' For Each DC In DT.Columns
' zeile += IIf(zeile <> "", ";", "").ToString
' zeile += DC.ColumnName
' Next
' table_to_csv += zeile & Chr(13)
' ' - Alle Zeillen ausgeben
' For Each DR In DT.Rows
' zeile = ""
' ' Schleife über alle Spalten
' For Each DC In DT.Columns
' zeile += IIf(zeile <> "", ";", "").ToString
' zeile += DR.Item(DC.ColumnName).ToString
' Next
' table_to_csv += zeile & Chr(13)
' Next
'End Function
Private Function Get_Journaldata(ByVal applid As Integer) As DataTable
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
scmCmdToExecute.CommandText = "import_journal"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
Try
scmCmdToExecute.Connection = conn_journale.scoDBConnection
scmCmdToExecute.Parameters.Add(New SqlParameter("@applid", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, applid))
sdaAdapter.Fill(dtToReturn)
Return dtToReturn
Catch ex As Exception
Throw New Exception("Dokumenterstellung::Generic_Select::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
End Try
End Function
#End Region
#End Region
End Class