You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
364 lines
13 KiB
364 lines
13 KiB
Imports System.Data
|
|
Imports System.Data.SqlClient
|
|
Imports System.Data.SqlTypes
|
|
Imports System.IO
|
|
|
|
Public Class clsEmpfaengerdata
|
|
|
|
#Region "Deklarationen"
|
|
Dim dsempfaenger As DataSet
|
|
Dim Serienbriefnr As Integer
|
|
Dim reservedwords As Collection()
|
|
#End Region
|
|
|
|
#Region "öffentliche Methoden"
|
|
|
|
Public Sub New(ByRef DsEmpfaenger As DataSet, ByVal Serienbriefnr As Integer)
|
|
Me.dsempfaenger = DsEmpfaenger
|
|
Me.Serienbriefnr = Serienbriefnr
|
|
End Sub
|
|
|
|
Public Function Get_Empfaenger()
|
|
Load_Empfaenger()
|
|
End Function
|
|
|
|
Public Function Vorlagendaten_aufbreiten() As DataTable
|
|
Return Datentabelle_Generieren()
|
|
End Function
|
|
|
|
|
|
Private Function hascoltodelete(ByRef edata As DataTable, ByVal Prefix As String) As Boolean
|
|
Dim i As Integer
|
|
Dim s As String = ""
|
|
For i = 0 To edata.Columns.Count - 1
|
|
If Left(edata.Columns(i).ColumnName, 2) = Prefix Then
|
|
s = edata.Columns(i).ColumnName
|
|
Exit For
|
|
End If
|
|
Next
|
|
If s <> "" Then
|
|
edata.Columns.Remove(s)
|
|
Return True
|
|
End If
|
|
Return False
|
|
End Function
|
|
#End Region
|
|
|
|
#Region "Datentabelle"
|
|
Private Function Datentabelle_Generieren() As DataTable
|
|
Dim dt As New DataTable()
|
|
Dim dn As DataRow
|
|
Dim i As Integer
|
|
|
|
Dim aPrimaryKey(0) As DataColumn
|
|
Dim oDatacolumn As DataColumn
|
|
|
|
Me.dsempfaenger.Tables(0).Columns.Add("IntEintragnr")
|
|
For i = 0 To Me.dsempfaenger.Tables(0).Rows.Count - 1
|
|
Me.dsempfaenger.Tables(0).Rows(i).Item("IntEintragNr") = i
|
|
Next
|
|
oDatacolumn = Me.dsempfaenger.Tables(0).Columns("IntEintragnr")
|
|
aPrimaryKey(0) = oDatacolumn
|
|
Me.dsempfaenger.Tables(0).PrimaryKey = aPrimaryKey
|
|
|
|
dt.TableName = "EDKB09_" + Me.Serienbriefnr.ToString
|
|
For i = 0 To Me.dsempfaenger.Tables(0).Columns.Count - 1
|
|
dt.Columns.Add(Me.dsempfaenger.Tables(0).Columns(i).ColumnName)
|
|
Next
|
|
Dim dv As DataRow()
|
|
Dim dr As DataRow
|
|
dv = Me.dsempfaenger.Tables(0).Select("Dokumentid='' or dokumentid<>''")
|
|
For Each dr In dv
|
|
dt.ImportRow(dr)
|
|
Next
|
|
' dt = Me.dsempfaenger.Tables(0).Copy
|
|
|
|
'Dim dc As DataColumn
|
|
'For Each dc In dt.Columns
|
|
' dc.ColumnName = dc.ColumnName.Replace(" ", "_")
|
|
' dc.ColumnName = dc.ColumnName.Replace(" ", "_")
|
|
' dc.ColumnName = dc.ColumnName.Replace("ö", "oe")
|
|
' dc.ColumnName = dc.ColumnName.Replace("Ö", "OE")
|
|
' dc.ColumnName = dc.ColumnName.Replace("ü", "ue")
|
|
' dc.ColumnName = dc.ColumnName.Replace("Ü", "UE")
|
|
' dc.ColumnName = dc.ColumnName.Replace("ä", "ae")
|
|
' dc.ColumnName = dc.ColumnName.Replace("Ä", "AE")
|
|
' dc.ColumnName = dc.ColumnName.Replace("-", "_")
|
|
' dc.ColumnName = dc.ColumnName.Replace("/", "_")
|
|
' dc.ColumnName = dc.ColumnName.Replace("\", "_")
|
|
' dc.ColumnName = dc.ColumnName.Replace(".", "_")
|
|
' dc.ColumnName = dc.ColumnName.Replace(":", "_")
|
|
' dc.ColumnName = dc.ColumnName.Replace(",", "_")
|
|
|
|
' Select Case Left(dc.ColumnName, 1)
|
|
' Case "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"
|
|
' dc.ColumnName = "N" + dc.ColumnName
|
|
' End Select
|
|
' If resword(dc.ColumnName) Then
|
|
' dc.ColumnName = dc.ColumnName + "_"
|
|
' End If
|
|
'Next
|
|
|
|
|
|
Dim tmkopfzeile As Boolean = False
|
|
Me.dsempfaenger.Tables("UsedFelder").AcceptChanges()
|
|
Try
|
|
For i = 0 To Me.dsempfaenger.Tables("UsedFelder").Rows.Count - 1
|
|
If Me.dsempfaenger.Tables("UsedFelder").Rows(i).Item("Nr") = 33 Then
|
|
tmkopfzeile = True
|
|
End If
|
|
Next
|
|
Catch ex As Exception
|
|
Dim a
|
|
a = 1
|
|
End Try
|
|
|
|
If tmkopfzeile = False Then
|
|
dn = Me.dsempfaenger.Tables("UsedFelder").NewRow
|
|
dn.Item(0) = 33
|
|
dn.Item(1) = "TGEDKCompanyBBEB99"
|
|
dn.Item(2) = ""
|
|
dn.Item(3) = "TGEDKCompanyBBEB99"
|
|
dn.Item(4) = ""
|
|
Me.dsempfaenger.Tables("UsedFelder").Rows.Add(dn)
|
|
End If
|
|
|
|
Me.dsempfaenger.Tables("UsedFelder").Columns.Add("TempFeldname")
|
|
Me.dsempfaenger.Tables("UsedFelder").Columns.Add("Fnkt")
|
|
Dim s As String
|
|
For i = 0 To Me.dsempfaenger.Tables("UsedFelder").Rows.Count - 1
|
|
If Me.dsempfaenger.Tables("UsedFelder").Rows(i).Item("Nr") <> 0 Then
|
|
s = "F_09_" + Me.dsempfaenger.Tables("UsedFelder").Rows(i).Item("Nr").ToString
|
|
Me.dsempfaenger.Tables("UsedFelder").Rows(i).Item("fnkt") = s
|
|
s = Insert_DT_Column(dt, s)
|
|
Me.dsempfaenger.Tables("UsedFelder").Rows(i).Item("Tempfeldname") = s
|
|
Else
|
|
s = "I_09_" + Me.dsempfaenger.Tables("UsedFelder").Rows(i).Item("Beginntextmarke")
|
|
Me.dsempfaenger.Tables("UsedFelder").Rows(i).Item("fnkt") = s
|
|
s = Insert_DT_Column(dt, s)
|
|
Me.dsempfaenger.Tables("UsedFelder").Rows(i).Item("Tempfeldname") = s
|
|
End If
|
|
Next
|
|
Create_SQL_Server_Table(dt)
|
|
Save_Data_To_Temptable(dt)
|
|
Return Fill_And_Get_Data()
|
|
End Function
|
|
|
|
|
|
'GAGA
|
|
Private Function Insert_DT_Column(ByRef dt As DataTable, ByVal colname As String) As String
|
|
Dim i As Integer = 0
|
|
Dim dc As DataColumn
|
|
For Each dc In dt.Columns
|
|
If UCase(Microsoft.VisualBasic.Left(dc.ColumnName, Len(colname))) = UCase(colname) Then
|
|
i = i + 1
|
|
End If
|
|
Next
|
|
If i > 0 Then colname = colname + "_" + i.ToString
|
|
dt.Columns.Add(colname)
|
|
Return colname
|
|
End Function
|
|
#End Region
|
|
|
|
#Region "Datenzugriffe"
|
|
|
|
Dim Dokid As Integer
|
|
Private Function Fill_And_Get_Data() As DataTable
|
|
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
|
|
Dim i As Integer
|
|
Dim dtToReturn As DataTable = New DataTable()
|
|
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
|
|
scmCmdToExecute.CommandText = "dbo.sp_edex_sb_fill_sbdata"
|
|
scmCmdToExecute.CommandType = CommandType.StoredProcedure
|
|
scmCmdToExecute.Connection = Globals.conn.scoDBConnection
|
|
Try
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@serienbriefnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.Serienbriefnr))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@ROWCOUNT", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.Int, 4, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, 0))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@bedr", SqlDbType.Int, 4, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, 0))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@preview", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 1))
|
|
sdaAdapter.Fill(dtToReturn)
|
|
Dokid = scmCmdToExecute.Parameters("@dokumentid").Value
|
|
For i = 0 To dtToReturn.Rows.Count - 1
|
|
dtToReturn.Rows(i).Item("Dokumentid") = Generate_Key(Dokid)
|
|
Dokid = Dokid + 1
|
|
If scmCmdToExecute.Parameters("@bedr").Value = 1 Then
|
|
dtToReturn.Rows(i).Item("dokumentidbdr") = Generate_Key(Dokid)
|
|
Dokid = Dokid + 1
|
|
End If
|
|
Next
|
|
Return dtToReturn
|
|
|
|
Catch ex As Exception
|
|
Throw New Exception("sp_check_dokumentreaktivierung::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
|
|
Finally
|
|
scmCmdToExecute.Dispose()
|
|
sdaAdapter.Dispose()
|
|
End Try
|
|
End Function
|
|
|
|
Private Sub Create_SQL_Server_Table(ByRef dt As DataTable)
|
|
Dim s As String
|
|
Dim s1 As String
|
|
Dim i As Integer
|
|
'dt.Columns.Add("NRPAR00")
|
|
'dt.Columns.Add("IntEintragNr")
|
|
|
|
s1 = "Drop Table DBO.EDKB09_" + Me.Serienbriefnr.ToString
|
|
|
|
's = "Create Table EDKB09_" + Me.Serienbriefnr.ToString + "( NRPAR00 int, intEintragNr int,"
|
|
s = "Create Table DBO.EDKB09_" + Me.Serienbriefnr.ToString + "( NRPAR00 varchar(11),"
|
|
For i = 1 To dt.Columns.Count - 1
|
|
s = s + dt.Columns(i).ColumnName + " varchar(255),"
|
|
Next
|
|
s = Left(s, Len(s) - 1)
|
|
s = s + ")"
|
|
Dim conn As New SqlConnection()
|
|
conn.ConnectionString = Globals.sConnectionString
|
|
conn.Open()
|
|
Dim sqlcmd0 As New SqlCommand(s1, conn)
|
|
Try
|
|
sqlcmd0.ExecuteNonQuery()
|
|
Catch
|
|
End Try
|
|
|
|
Dim sqlcmd As New SqlCommand(s, conn)
|
|
sqlcmd.ExecuteNonQuery()
|
|
conn.Close()
|
|
End Sub
|
|
|
|
Private Sub Save_Data_To_Temptable(ByRef dt As DataTable)
|
|
Dim tdt As New DataTable("EDKB09_" + Me.Serienbriefnr.ToString)
|
|
Dim tdr As DataRow
|
|
Dim i As Integer
|
|
Dim ii As Integer
|
|
tdt = dt.Copy
|
|
tdt.Columns(0).ColumnName = "NRPAR00"
|
|
Dim connection As New SqlConnection()
|
|
Dim da As New SqlDataAdapter("Select * from EDKB09_" + Me.Serienbriefnr.ToString, connection)
|
|
Dim cb As New SqlCommandBuilder(da)
|
|
connection.ConnectionString = Globals.sConnectionString
|
|
connection.Open()
|
|
da.Update(tdt)
|
|
connection.Close()
|
|
End Sub
|
|
|
|
Private Sub Load_Empfaenger()
|
|
'Dim dokumentname = Globals.Params.Pfad_Serienbrief_Daten + Me.Serienbriefnr.ToString + "_empfaenger.xml"
|
|
'Try
|
|
' Me.dsempfaenger.Tables.Clear()
|
|
' Dim Connection As New SqlConnection()
|
|
' Dim DA As New SqlDataAdapter("select * from edex_sb_empfaenger where serienbriefnr=" + Str(Me.Serienbriefnr), Connection)
|
|
' Dim cb As SqlCommandBuilder = New SqlCommandBuilder(DA)
|
|
' Dim ds As New DataSet()
|
|
' Try
|
|
' Connection.ConnectionString = Globals.sConnectionString
|
|
' Connection.Open()
|
|
' DA.Fill(ds, "empf")
|
|
' Dim myRow As DataRow
|
|
' If ds.Tables(0).Rows.Count = 0 Then
|
|
' MsgBox("Empfänger konnten nicht geladen werden.")
|
|
' Else
|
|
' myRow = ds.Tables(0).Rows(0)
|
|
' Dim MyData() As Byte
|
|
' MyData = myRow.Item(2)
|
|
' Dim K As Long
|
|
' K = UBound(MyData)
|
|
' Dim fs As New FileStream(dokumentname, FileMode.OpenOrCreate, FileAccess.Write)
|
|
' fs.Write(MyData, 0, K)
|
|
' fs.Close()
|
|
' fs = Nothing
|
|
' Me.dsempfaenger.ReadXml(dokumentname)
|
|
' End If
|
|
' Catch ex As Exception
|
|
' End Try
|
|
' cb = Nothing
|
|
' ds = Nothing
|
|
' DA = Nothing
|
|
|
|
' Connection.Close()
|
|
' Connection = Nothing
|
|
'Catch EX As Exception
|
|
'Finally
|
|
' Try
|
|
' File.Delete(dokumentname)
|
|
' Catch
|
|
|
|
' End Try
|
|
'End Try
|
|
|
|
End Sub
|
|
|
|
|
|
Public Function Generate_Key(ByVal key As Long) As String
|
|
Dim skey As String
|
|
Dim s As String
|
|
skey = "OFFEDK000"
|
|
|
|
s = Str(Year(Now))
|
|
While Microsoft.VisualBasic.Left(s, 1) = " "
|
|
s = Microsoft.VisualBasic.Right(s, Len(s) - 1)
|
|
End While
|
|
skey = skey + s
|
|
|
|
s = Str(key)
|
|
While Microsoft.VisualBasic.Left(s, 1) = " "
|
|
s = Microsoft.VisualBasic.Right(s, Len(s) - 1)
|
|
End While
|
|
|
|
While Len(s) < 8
|
|
s = "0" + s
|
|
End While
|
|
skey = skey + s
|
|
|
|
s = Pruefziffer(Microsoft.VisualBasic.Right(skey, 15))
|
|
While Microsoft.VisualBasic.Left(s, 1) = " "
|
|
s = Microsoft.VisualBasic.Right(s, Len(s) - 1)
|
|
End While
|
|
skey = skey + s
|
|
Generate_Key = skey
|
|
End Function
|
|
|
|
Public Function Pruefziffer(ByVal zahl As String) As String
|
|
Dim ptab(9, 9) As Integer
|
|
Dim pz(9) As Integer
|
|
Dim s1, s2, s3 As String
|
|
|
|
Dim i1, i2 As Long
|
|
|
|
s1 = "0,9,4,6,8,2,7,1,3,5"
|
|
s2 = s1
|
|
For i1 = 0 To 9
|
|
For i2 = 0 To 9
|
|
ptab(i1, i2) = Mid(s2, (i2 * 2) + 1, 1)
|
|
Next
|
|
s3 = Microsoft.VisualBasic.Left(s1, 1)
|
|
s1 = Microsoft.VisualBasic.Right(s1, Len(s1) - 2)
|
|
s1 = s1 + "," + s3
|
|
s2 = s1
|
|
Next
|
|
pz(0) = 0
|
|
pz(1) = 9
|
|
pz(2) = 8
|
|
pz(3) = 7
|
|
pz(4) = 6
|
|
pz(5) = 5
|
|
pz(6) = 4
|
|
pz(7) = 3
|
|
pz(8) = 2
|
|
pz(9) = 1
|
|
|
|
Dim i, x, y, z, e As Integer
|
|
Dim xx As String
|
|
y = 0
|
|
For i = 1 To Len(zahl)
|
|
x = Val(Mid(zahl, i, 1))
|
|
y = ptab(x, y)
|
|
Next
|
|
Pruefziffer = Str(pz(y))
|
|
End Function
|
|
|
|
#End Region
|
|
|
|
End Class
|