Imports System.IO Imports System.Data Imports System.Data.SqlClient Imports System.Data.SqlTypes Public Class frmDruckabschluss Inherits System.Windows.Forms.Form #Region " Vom Windows Form Designer generierter Code " Public Sub New() MyBase.New() ' Dieser Aufruf ist für den Windows Form-Designer erforderlich. InitializeComponent() ' Initialisierungen nach dem Aufruf InitializeComponent() hinzufügen End Sub ' Die Form überschreibt den Löschvorgang der Basisklasse, um Komponenten zu bereinigen. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub ' Für Windows Form-Designer erforderlich Private components As System.ComponentModel.IContainer 'HINWEIS: Die folgende Prozedur ist für den Windows Form-Designer erforderlich 'Sie kann mit dem Windows Form-Designer modifiziert werden. 'Verwenden Sie nicht den Code-Editor zur Bearbeitung. Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox Friend WithEvents rbkeineaktion As System.Windows.Forms.RadioButton Friend WithEvents rbweiteregenerieren As System.Windows.Forms.RadioButton Friend WithEvents rbgeneriertedokumentebestätigen As System.Windows.Forms.RadioButton Friend WithEvents rbabschliessen As System.Windows.Forms.RadioButton Friend WithEvents GroupBox2 As System.Windows.Forms.GroupBox Friend WithEvents Button1 As System.Windows.Forms.Button Friend WithEvents Abbruch As System.Windows.Forms.Button Friend WithEvents txtbemerkung As System.Windows.Forms.TextBox Friend WithEvents Label1 As System.Windows.Forms.Label Friend WithEvents Label2 As System.Windows.Forms.Label Friend WithEvents StatusBar1 As System.Windows.Forms.StatusBar Private Sub InitializeComponent() Me.GroupBox1 = New System.Windows.Forms.GroupBox() Me.rbabschliessen = New System.Windows.Forms.RadioButton() Me.rbgeneriertedokumentebestätigen = New System.Windows.Forms.RadioButton() Me.rbweiteregenerieren = New System.Windows.Forms.RadioButton() Me.rbkeineaktion = New System.Windows.Forms.RadioButton() Me.GroupBox2 = New System.Windows.Forms.GroupBox() Me.txtbemerkung = New System.Windows.Forms.TextBox() Me.Button1 = New System.Windows.Forms.Button() Me.Abbruch = New System.Windows.Forms.Button() Me.Label1 = New System.Windows.Forms.Label() Me.Label2 = New System.Windows.Forms.Label() Me.StatusBar1 = New System.Windows.Forms.StatusBar() Me.GroupBox1.SuspendLayout() Me.GroupBox2.SuspendLayout() Me.SuspendLayout() ' 'GroupBox1 ' Me.GroupBox1.Controls.AddRange(New System.Windows.Forms.Control() {Me.rbabschliessen, Me.rbgeneriertedokumentebestätigen, Me.rbweiteregenerieren, Me.rbkeineaktion}) Me.GroupBox1.Location = New System.Drawing.Point(8, 40) Me.GroupBox1.Name = "GroupBox1" Me.GroupBox1.Size = New System.Drawing.Size(320, 128) Me.GroupBox1.TabIndex = 0 Me.GroupBox1.TabStop = False Me.GroupBox1.Text = "Optionen" ' 'rbabschliessen ' Me.rbabschliessen.Location = New System.Drawing.Point(16, 96) Me.rbabschliessen.Name = "rbabschliessen" Me.rbabschliessen.Size = New System.Drawing.Size(200, 24) Me.rbabschliessen.TabIndex = 3 Me.rbabschliessen.Text = "Serienbrief abschliessen" ' 'rbgeneriertedokumentebestätigen ' Me.rbgeneriertedokumentebestätigen.Location = New System.Drawing.Point(16, 72) Me.rbgeneriertedokumentebestätigen.Name = "rbgeneriertedokumentebestätigen" Me.rbgeneriertedokumentebestätigen.Size = New System.Drawing.Size(200, 24) Me.rbgeneriertedokumentebestätigen.TabIndex = 2 Me.rbgeneriertedokumentebestätigen.Text = "Erstellte Dokumente bestätigen" ' 'rbweiteregenerieren ' Me.rbweiteregenerieren.Location = New System.Drawing.Point(16, 48) Me.rbweiteregenerieren.Name = "rbweiteregenerieren" Me.rbweiteregenerieren.Size = New System.Drawing.Size(240, 24) Me.rbweiteregenerieren.TabIndex = 1 Me.rbweiteregenerieren.Text = "Weitere pendente Dokumente generieren" ' 'rbkeineaktion ' Me.rbkeineaktion.Location = New System.Drawing.Point(16, 24) Me.rbkeineaktion.Name = "rbkeineaktion" Me.rbkeineaktion.Size = New System.Drawing.Size(152, 24) Me.rbkeineaktion.TabIndex = 0 Me.rbkeineaktion.Text = "keine Aktion durchführen" ' 'GroupBox2 ' Me.GroupBox2.Controls.AddRange(New System.Windows.Forms.Control() {Me.txtbemerkung}) Me.GroupBox2.Location = New System.Drawing.Point(8, 176) Me.GroupBox2.Name = "GroupBox2" Me.GroupBox2.Size = New System.Drawing.Size(320, 100) Me.GroupBox2.TabIndex = 1 Me.GroupBox2.TabStop = False Me.GroupBox2.Text = "Beschreibung" ' 'txtbemerkung ' Me.txtbemerkung.BackColor = System.Drawing.SystemColors.ActiveBorder Me.txtbemerkung.Location = New System.Drawing.Point(8, 16) Me.txtbemerkung.Multiline = True Me.txtbemerkung.Name = "txtbemerkung" Me.txtbemerkung.Size = New System.Drawing.Size(304, 72) Me.txtbemerkung.TabIndex = 0 Me.txtbemerkung.Text = "" ' 'Button1 ' Me.Button1.Location = New System.Drawing.Point(248, 288) Me.Button1.Name = "Button1" Me.Button1.TabIndex = 2 Me.Button1.Text = "OK" ' 'Abbruch ' Me.Abbruch.Location = New System.Drawing.Point(8, 288) Me.Abbruch.Name = "Abbruch" Me.Abbruch.TabIndex = 3 Me.Abbruch.Text = "Abbruch" ' 'Label1 ' Me.Label1.Location = New System.Drawing.Point(16, 8) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(64, 23) Me.Label1.TabIndex = 4 Me.Label1.Text = "Serienbrief:" ' 'Label2 ' Me.Label2.Location = New System.Drawing.Point(80, 8) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size(248, 23) Me.Label2.TabIndex = 5 Me.Label2.Text = "Label2" ' 'StatusBar1 ' Me.StatusBar1.Location = New System.Drawing.Point(0, 327) Me.StatusBar1.Name = "StatusBar1" Me.StatusBar1.Size = New System.Drawing.Size(336, 22) Me.StatusBar1.TabIndex = 6 ' 'frmDruckabschluss ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(336, 349) Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.StatusBar1, Me.Label2, Me.Label1, Me.Abbruch, Me.Button1, Me.GroupBox2, Me.GroupBox1}) Me.Name = "frmDruckabschluss" Me.Text = "Serienbrief-Verarbeitung:" Me.GroupBox1.ResumeLayout(False) Me.GroupBox2.ResumeLayout(False) Me.ResumeLayout(False) End Sub #End Region Dim serienbriefnr As Integer Dim dsempfaenger As New DataSet() Dim progress As New ucProgress() Dim m_datasaved As Boolean Dim serienbrief As New edokadb.clsEdex_sb_serienbrief() Property datasaved() As Boolean Get Return m_datasaved End Get Set(ByVal Value As Boolean) m_datasaved = Value End Set End Property Public Sub New(ByVal serienbriefnr As Integer) MyBase.New() ' Dieser Aufruf ist für den Windows Form-Designer erforderlich. InitializeComponent() ' Initialisierungen nach dem Aufruf InitializeComponent() hinzufügen Me.serienbriefnr = serienbriefnr End Sub Private Sub frmDruckabschluss_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load serienbrief.cpMainConnectionProvider = Globals.conn serienbrief.iSerienbriefnr = New SqlInt32(CType(Me.serienbriefnr, Int32)) serienbrief.SelectOne() Label2.Text = serienbrief.sBezeichnung.Value serienbrief.Dispose() Me.StatusBar1.Controls.Add(progress) Me.SetProgress(0, "Empfänger prüfen", False) If Load_empfaenger() = True Then check_data() End If Me.SetProgress(0, "", True) Me.rbkeineaktion.Checked = True End Sub Private Function Load_empfaenger() As Boolean Try Dim dokumentname = Globals.Applikationsdaten.Rows(0).Item("pfad_temporaer_dokumente") + Me.serienbriefnr.ToString + "_empfaenger.xml" 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 MyMsg.show_standardmessage(701, MsgBoxStyle.Critical) Return False 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 MyMsg.show_standardmessage(701, MsgBoxStyle.Critical) ' MsgBox(ex.Message) Return False End Try cb = Nothing ds = Nothing DA = Nothing Connection.Close() Connection = Nothing Return True Catch EX As Exception MyMsg.show_standardmessage(701, MsgBoxStyle.Critical) Return False End Try End Function Private Function save_empfaenger() As Boolean Try Dim dokumentname = Globals.Applikationsdaten.Rows(0).Item("pfad_temporaer_dokumente") + Me.serienbriefnr.ToString + "_empfaenger.xml" Me.dsempfaenger.WriteXml(dokumentname) 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() Dim fs As New FileStream(dokumentname, FileMode.Open, FileAccess.Read) Dim mydata(fs.Length) As Byte Try fs.Read(mydata, 0, fs.Length) fs.Close() Connection.ConnectionString = Globals.sConnectionString Connection.Open() DA.Fill(ds, "empf") Dim myRow As DataRow If ds.Tables(0).Rows.Count = 0 Then 'Neue Serienbrief_Empfaenger speichern myRow = ds.Tables(0).NewRow myRow.Item(1) = Me.serienbriefnr myRow.Item(2) = mydata ds.Tables(0).Rows.Add(myRow) DA.Update(ds, "empf") Else ' Bestehende Empfängerliste überschreiben myRow = ds.Tables(0).Rows(0) myRow.Item(2) = mydata DA.Update(ds, "empf") End If Catch ex As Exception MyMsg.show_standardmessage(700, MsgBoxStyle.Critical) Return False End Try fs = Nothing cb = Nothing ds = Nothing DA = Nothing Connection.Close() Connection = Nothing Return True Catch EX As Exception MyMsg.show_standardmessage(700, MsgBoxStyle.Critical) Return False End Try End Function Private Function check_data() Me.rbabschliessen.Enabled = False Me.rbgeneriertedokumentebestätigen.Enabled = False Me.rbkeineaktion.Enabled = True Me.rbweiteregenerieren.Enabled = False If Me.serienbrief.iAusgeloest.Value <> 0 Then Me.rbweiteregenerieren.Enabled = True If Me.serienbrief.iErstellt.Value <> 0 Or Me.serienbrief.iGedruckt.Value <> 0 Then Me.rbgeneriertedokumentebestätigen.Enabled = True If Me.serienbrief.iFehlerhaft.Value = 0 And Me.serienbrief.iAusgeloest.Value = 0 And Me.serienbrief.iInBearbeitung.Value = 0 Then Me.rbabschliessen.Enabled = True End If End Function Private Sub SetProgress(ByVal wert As Integer, ByVal txt As String, ByVal hidedialog As Boolean) If hidedialog Then progress.Hide() Exit Sub End If progress.Visible = True If wert + 1 > 100 Then wert = 99 progress.Bar1.Value = wert + 1 progress.info.Text = txt progress.Refresh() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If Me.rbkeineaktion.Checked Then Me.datasaved = False Me.Close() End If If Me.rbgeneriertedokumentebestätigen.Checked Then Dokumente_bestaetigen() Me.save_empfaenger() Me.datasaved = True Me.Close() End If If Me.rbabschliessen.Checked Then Dokumente_bestaetigen() Dim serienbrief As New edokadb.clsEdex_sb_serienbrief() serienbrief.cpMainConnectionProvider = Globals.conn serienbrief.iSerienbriefnr = New SqlInt32(CType(Me.serienbriefnr, Int32)) serienbrief.SelectOne() serienbrief.iStatus = New SqlInt32(CType(1, Int32)) Globals.conn.OpenConnection() serienbrief.Update() Globals.conn.CloseConnection(True) serienbrief.Dispose() Me.save_empfaenger() Me.datasaved = True Me.Close() End If If Me.rbweiteregenerieren.Checked Then Dim serienbrief As New edokadb.clsEdex_sb_serienbrief() serienbrief.cpMainConnectionProvider = Globals.conn serienbrief.iSerienbriefnr = New SqlInt32(CType(Me.serienbriefnr, Int32)) serienbrief.SelectOne() serienbrief.iStatus = New SqlInt32(CType(-1, Int32)) Globals.conn.OpenConnection() serienbrief.Update() Globals.conn.CloseConnection(True) serienbrief.Dispose() Me.save_empfaenger() Me.Close() Me.datasaved = True End If End Sub Private Sub Dokumente_bestaetigen() Me.Cursor = Cursors.WaitCursor Application.DoEvents() Dim pwert As Integer Dim i As Integer For i = 0 To Me.dsempfaenger.Tables(0).Rows.Count - 1 Try pwert = 100 / Me.dsempfaenger.Tables(0).Rows.Count * i Catch pwert = 0 End Try Me.SetProgress(pwert, "Dokumente bestätigen", False) Try If Me.dsempfaenger.Tables(0).Rows(i).Item("STATUS") = 2 Or Me.dsempfaenger.Tables(0).Rows(i).Item("STATUS") = 3 Then Me.dsempfaenger.Tables(0).Rows(i).Item("Dokument_Gedruckt") = 1 Me.dsempfaenger.Tables(0).Rows(i).Item("STATUS") = 4 End If Catch End Try Next Me.SetProgress(100, "", True) Cursor = Cursors.Default Application.DoEvents() End Sub Private Sub Abbruch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Abbruch.Click Me.Close() End Sub End Class