Imports System.IO Imports System.Data Imports System.Data.SqlTypes Imports System.Data.SqlClient Imports System.Threading Imports Word Public Class WordLib #Region "Deklarationen" 'FileObjekte Dim objWatcher As New System.IO.FileSystemWatcher() Dim objResult As System.IO.WaitForChangedResult 'Word Private WithEvents objWord As Word.ApplicationClass Private WithEvents docWord As Word.DocumentClass Private WithEvents objExcel As Excel.ApplicationClass Private WithEvents docExcel As Excel.WorkbookClass Private WithEvents sheetExcel As Excel.Worksheet 'Applicationwatcher Private WithEvents WordWatch As New ApplicationFileWatcher() 'Dokumentdaten Dim dokudata As New edokadb.clsMyDokumentDaten() Dim Dokumentdaten As DataTable Dim DokumenTtyp As New edokadb.clsDokumenttyp() Dim Office_Vorlage As New edokadb.clsOffice_vorlage() 'Interne Variablen Dim isactiv As Boolean Dim Dokument_To_Create As String Dim Dokument_To_Save As String Dim Dokument_Temp As String Dim Cursor_Positionieren As Boolean Dim IsProtected As Boolean Dim inEditMode As Boolean Dim timerloop As Integer Dim Word_Active As Boolean Dim m_DokumentID As String Dim m_DokumentTypnr As Long Dim m_amsdokument As Bookmark Dim m_DokumentFilename As String Dim m_DokumentDatum As DateTime Dim m_Dokumentname As String Dim m_CreateDoc As Boolean Dim m_document_saved As Boolean Dim CheckDokumentname As String 'IDV-Definitionen Private m_objdc As dc.Application Dim xx As Object Dim idvdll As New IDVMakros.Application() Dim OhneIDV As Boolean = False 'IDV-Definitionen, sofern IDV nicht vorhanden ist (Entwicklung) 'Dim dc As Object 'Dim m_objdc As Object 'Dim idvdll As Object 'Dim xx As Object 'Private dckein As Integer 'Private dcinvisible As Integer 'Private dcMTBS As Long 'Dim OhneIDV As Boolean = True 'Progressbar Public ProgressBar As New frmProgress() 'Datentabellen Public Save_Dokument As New DataTable() Public Save_Notizen As New DataTable() Public Save_ColdIndex As DataTable Public Save_Dokumentwerte As DataTable Public Save_Dokumentzuordnungen As DataTable Public Save_Dokumentinfomeldungen As DataTable Public Save_DokumentFunktionen As DataTable Public save_historystatus As Integer Public save_dokumentersetzen As DataTable Public save_dokumentcoldindex As DataTable Public Dokumentcoldindex_Changed As Boolean Public dokumentcoldindex_status As String Public dokumentid_changed As Boolean Public dokumentidalt As String Public Ersetzte_Dokumente_Reaktivieren As Boolean Public txtBemerkung_Verantwortlicher As String Public save_verantwortlicher As Integer Public save_stv As Integer Dim Save_DateTime As DateTime Dim Excel_Dokument As Boolean Dim DocReadonly As Boolean Dim m_txtpartner As String Property txtPartner() As String Get Return m_txtpartner End Get Set(ByVal Value As String) m_txtpartner = Value End Set End Property Dim m_txtdokumenttyp As String Property txtDokumenttyp() As String Get Return m_txtdokumenttyp End Get Set(ByVal Value As String) m_txtdokumenttyp = Value End Set End Property 'Events Public Event OfficeFinished() Public send_statusmessage As Boolean Dim Finished As Boolean = False #End Region #Region "Properties" Property Dokumenttypnr() As Long Get Return m_DokumentTypnr End Get Set(ByVal Value As Long) m_DokumentTypnr = Value End Set End Property Property Dokument_Saved() As Boolean Get Return m_document_saved End Get Set(ByVal Value As Boolean) m_document_saved = Value End Set End Property Property DokumentID() As String Get Return m_DokumentID End Get Set(ByVal Value As String) m_DokumentID = Value End Set End Property Property DokumentName() As String Get Return m_Dokumentname End Get Set(ByVal Value As String) m_Dokumentname = Value End Set End Property Property Dokumentfilename() As String Get Return m_DokumentFilename End Get Set(ByVal Value As String) m_DokumentFilename = Value End Set End Property Property DokumentDatum() As DateTime Get Return m_DokumentDatum End Get Set(ByVal Value As DateTime) m_DokumentDatum = Value End Set End Property Property CreateDoc() As Boolean Get Return m_CreateDoc End Get Set(ByVal Value As Boolean) m_CreateDoc = Value End Set End Property #End Region #Region "IDVP-Funktionen" Private Sub Cancel_IDVPortfeuille() Dim hwnd As Long hwnd = Win32API.FindWindow(vbNullString, "DC") While hwnd <> 0 Dim s As String s = MyTxt.gettext(87) Dim f As New frmHinweismeldung1() f.Label1.Text = s f.MsgBoxStyle = 1 f.ShowDialog() f.Dispose() ' MyMsg.show_standardmessage(87, MsgBoxStyle.Critical) hwnd = Win32API.FindWindow(vbNullString, "DC") 'Win32API.BringWindowToTop(hwnd) End While ' 'Exit Sub ' Try ' xx = CreateObject("DC.APPLICATION") ' xx.Quit() ' Catch ' End Try End Sub Private Sub Init_IDV_Variablen() On Error Resume Next 'Diverse Felder 'm_objdc.DokVarClear("VarHerkunft") m_objdc.DokVarAdd("VarHerkunft", "EDOKA") m_objdc.DokVarAdd("VarSchuldner", " ") m_objdc.DokVarAdd("VarAdresseVorname", " ") 'Bankangaben m_objdc.DokVarAdd("VarCompanyName", " ") m_objdc.DokVarAdd("VarCompanyBankname", " ") m_objdc.DokVarAdd("VarCompanyAdresse1", " ") m_objdc.DokVarAdd("VarCompanyAdresse2", " ") m_objdc.DokVarAdd("VarCompanyAdresse3", " ") m_objdc.DokVarAdd("VarCompanyBankbetriebseinheit", " ") m_objdc.DokVarAdd("VarCompanyBBENr", " ") m_objdc.DokVarAdd("VarCompanyBBEOrt", " ") m_objdc.DokVarAdd("VarCompanyBBEEMail", " ") m_objdc.DokVarAdd("VarCompanyBBETelefon", " ") m_objdc.DokVarAdd("VarCompanyBBETelefax", " ") m_objdc.DokVarAdd("VarCompanyBBEZusatzVordruck", " ") m_objdc.DokVarAdd("VarCompanyBBEZusatzInhalt", " ") m_objdc.DokVarAdd("VarCompanyInternet", " ") m_objdc.DokVarAdd("VarCompanyMWStNr", " ") m_objdc.DokVarAdd("VarCompanyGerichtsstand", " ") m_objdc.DokVarAdd("VarCompanyCantophone", " ") m_objdc.DokVarAdd("VarCompanyHotlineInfoline", " ") 'Temporäre Variablen m_objdc.DokVarAdd("VarTempGeschaeftNr", " ") m_objdc.DokVarAdd("VarTempProduktebezeichnung", " ") m_objdc.DokVarAdd("VarTempGeburtsGruendungsdatum", " ") m_objdc.DokVarAdd("VarTempNationalitaetencode", " ") m_objdc.DokVarAdd("VarTempMarktsegment", " ") m_objdc.DokVarAdd("VarTempBranche", " ") m_objdc.DokVarAdd("VarTempGesamtbetrag", " ") m_objdc.DokVarAdd("VarTempBetrag1", " ") m_objdc.DokVarAdd("VarTempBetrag2", " ") m_objdc.DokVarAdd("VarTempWaehrung", " ") m_objdc.DokVarAdd("VarTempZinssatz1", " ") m_objdc.DokVarAdd("VarTempZinssatz2", " ") m_objdc.DokVarAdd("VarTempObjekt", " ") m_objdc.DokVarAdd("VarTempSchaetzungswert", " ") m_objdc.DokVarAdd("VarTempKostenstelle", " ") 'Adressdaten m_objdc.DokVarAdd("VarAdresse", " ") m_objdc.DokVarAdd("VarVerteiler", " ") m_objdc.DokVarAdd("VarAdressePostzustellung", " ") m_objdc.DokVarAdd("VarAdresseAnrede", " ") m_objdc.DokVarAdd("VarAdresseNameFirma", " ") m_objdc.DokVarAdd("VarAdressezHd", " ") m_objdc.DokVarAdd("VarAdresseAdresszeile1", " ") m_objdc.DokVarAdd("VarAdresseAdresszeile2", " ") m_objdc.DokVarAdd("VarAdressePLZ", " ") m_objdc.DokVarAdd("VarAdresseOrt", " ") m_objdc.DokVarAdd("VarPartnernr", " ") 'Formular Variablen 'm_objdc.DokVarAdd "VarFormularNr", " " 'm_objdc.DokVarAdd "VarFormularTitel", " " 'm_objdc.DokVarAdd "VarVersion", " " ' Sachbearbeiter m_objdc.DokVarAdd("VarKennung", "") m_objdc.DokVarAdd("VarKurzzeichen", " ") m_objdc.DokVarAdd("VarName", " ") m_objdc.DokVarAdd("VarVorname", " ") m_objdc.DokVarAdd("VarTitel", " ") m_objdc.DokVarAdd("VarBereich", " ") m_objdc.DokVarAdd("VarOrganisationseinheit", " ") m_objdc.DokVarAdd("VarAbkuerzung", " ") m_objdc.DokVarAdd("VarBueroNr", " ") m_objdc.DokVarAdd("VarRang", " ") m_objdc.DokVarAdd("VarFunktion", " ") m_objdc.DokVarAdd("VarDirektWahlTelefon", " ") m_objdc.DokVarAdd("VarDirektWahlTelefax", " ") m_objdc.DokVarAdd("VarEMail", " ") m_objdc.DokVarAdd("VarBenutzerID", " ") 'Dokumentersteller m_objdc.DokVarAdd("VarKennungDokSchreiber", " ") m_objdc.DokVarAdd("VarKurzzeichenDokschreiber", " ") m_objdc.DokVarAdd("VarNameDokSchreiber", " ") m_objdc.DokVarAdd("VarVornameDokSchreiber", " ") m_objdc.DokVarAdd("VarTitelDokSchreiber", " ") m_objdc.DokVarAdd("VarBereichDokSchreiber", " ") m_objdc.DokVarAdd("VarOrganisationseinheitDokSchreiber", " ") m_objdc.DokVarAdd("VarAbkuerzungDokSchreiber", " ") m_objdc.DokVarAdd("VarBueroNrDokSchreiber", " ") m_objdc.DokVarAdd("VarRangDokSchreiber", " ") m_objdc.DokVarAdd("VarFunktionDokSchreiber", " ") m_objdc.DokVarAdd("VarDirektWahlTelefonDokSchreiber", " ") m_objdc.DokVarAdd("VarDirektWahlTelefaxDokSchreiber", " ") m_objdc.DokVarAdd("VarEMailDokschreiber", " ") m_objdc.DokVarAdd("VarBenutzerIDWahlTelefaxDokSchreiber", " ") 'Linksunterzeichnenden m_objdc.DokVarAdd("VarKennungLinks", " ") m_objdc.DokVarAdd("VarKurzzeichenLinks", " ") m_objdc.DokVarAdd("VarNameLinks", " ") m_objdc.DokVarAdd("VarVornameLinks", " ") m_objdc.DokVarAdd("VarTitelLinks", " ") m_objdc.DokVarAdd("VarBereichLinks", " ") m_objdc.DokVarAdd("VarOrganisationseinheitLinks", " ") m_objdc.DokVarAdd("VarAbkuerzungLinks", " ") m_objdc.DokVarAdd("VarBueroNrLinks", " ") m_objdc.DokVarAdd("VarRangLinks", " ") m_objdc.DokVarAdd("VarFunktionLinks", " ") m_objdc.DokVarAdd("VarDirektWahlTelefonLinks", " ") m_objdc.DokVarAdd("VarDirektWahlTelefaxLinks", " ") m_objdc.DokVarAdd("VarEMailTelefaxLinks", " ") m_objdc.DokVarAdd("VarBenutzerIDWahlTelefaxLinks", " ") 'Rechtsunterzeichnenden m_objdc.DokVarAdd("VarKennungRechts", " ") m_objdc.DokVarAdd("VarKurzzeichenRechts", " ") m_objdc.DokVarAdd("VarNameRechts", " ") m_objdc.DokVarAdd("VarVornameRechts", " ") m_objdc.DokVarAdd("VarTitelRechts", " ") m_objdc.DokVarAdd("VarBereichRechts", " ") m_objdc.DokVarAdd("VarOrganisationseinheitRechts", " ") m_objdc.DokVarAdd("VarAbkuerzungRechts", " ") m_objdc.DokVarAdd("VarBueroNrRechts", " ") m_objdc.DokVarAdd("VarRangRechts", " ") m_objdc.DokVarAdd("VarFunktionRechts", " ") m_objdc.DokVarAdd("VarDirektWahlTelefonRechts", " ") m_objdc.DokVarAdd("VarDirektWahlTelefaxRechts", " ") m_objdc.DokVarAdd("VarEMailTelefaxRechts", " ") m_objdc.DokVarAdd("VarBenutzerIDWahlTelefaxRechts", " ") End Sub Private Sub Create_IDVDokument(ByVal idvid As String) StartWord() '22.07.2003 Visible=False objWord.Visible = False Cancel_IDVPortfeuille() m_objdc = CreateObject("DC.Application") m_objdc.WindowState = dc.dcWindowState.dcInvisible m_objdc.WindowState = 0 Init_IDV_Variablen() m_objdc.WindowState = dc.dcWindowState.dcInvisible 'Call Get_IDV_Values() If Not Office_Vorlage.bIdv_nativ.Value = True Then m_objdc.WindowState = 0 m_objdc.WordPlusDialog = dc.dcWordPlusDialogs.dcKein m_objdc.DisableStandardMacros() End If If Office_Vorlage.bIdv_nativ.Value = True Then m_objdc.CreateDocument(dc.dcModus.dcMTBS, CType(Office_Vorlage.sIdv_id.Value, Integer)) StartWord() docWord = objWord.ActiveDocument objWord.Visible = False m_objdc = Nothing Exit Sub Else m_objdc.CreateDocument(dc.dcModus.dcMTBS, CType(Office_Vorlage.sIdv_id.Value, Integer)) m_objdc.SaveDoc(Dokumentfilename) m_objdc.Quit() m_objdc = Nothing ' StartWord() '22.07.2003 Visible=False objWord.Visible = False docWord = objWord.ActiveDocument If docWord.Name <> DivFnkt.ExtractFilename(Dokumentfilename) Then docWord.Close() docWord = objWord.ActiveDocument End If End If m_objdc = Nothing End Sub Public Function IDV_makros_bearbeiten() As Boolean Dim idvmakros As New edokadb.clsMyDokumentDaten() Dim makros As DataTable Dim i As Long idvmakros.cpMainConnectionProvider = conn makros = idvmakros.Select_IDVMakros(Me.Dokumenttypnr) For i = 0 To makros.Rows.Count - 1 Try If makros.Rows(i).Item("ist_in_dll") = True Then 'SetForegroundWindow(...) System.Windows.Forms.Application.DoEvents() idvdll = CreateObject("IDVMakros.Application") Call idvdll.CallSub(objWord, makros.Rows(i).Item("makro")) System.Windows.Forms.Application.DoEvents() objWord.Visible = True objWord.Activate() Else System.Windows.Forms.Application.DoEvents() objWord.Run(makros.Rows(i).Item("makro")) System.Windows.Forms.Application.DoEvents() End If Catch ex As Exception MsgBox("Fehler beim Makro-Aufruf - Makro: " + makros.Rows(i).Item("makro") + vbCrLf + vbCrLf + ex.Message) End Try Next i End Function #End Region #Region "Word-Funktionen" Private Function StartWord() ' StartWord_New_Instance() ' Exit Function Try objWord = GetObject(, "Word.application") Catch Try objWord = CreateObject("Word.application") Catch ex As Exception MsgBox(ex.Message) End Try Finally objWord.Visible = False End Try End Function Private Function StartWord_New_Instance() Try objWord = CreateObject("Word.application") Catch ex As Exception MsgBox(ex.Message) Exit Function End Try objWord.Visible = False End Function Private Function StartIDVP() Try m_objdc = GetObject("dc.application") Catch Try m_objdc = CreateObject("dc.application") Catch ex As Exception MsgBox(ex.Message) End Try End Try End Function Private Sub Insert_Kopfzeile() On Error Resume Next objWord.Selection.HomeKey(Unit:=Word.WdUnits.wdStory) If objWord.ActiveWindow.View.SplitSpecial <> WdSpecialPane.wdPaneNone Then objWord.ActiveWindow.Panes.Item(2).Close() End If If objWord.ActiveWindow.ActivePane.View.Type = Word.WdViewType.wdNormalView Or objWord.ActiveWindow.ActivePane.View.Type = Word.WdViewType.wdOutlineView Then objWord.ActiveWindow.ActivePane.View.Type = Word.WdViewType.wdPrintView End If objWord.ActiveWindow.ActivePane.View.SeekView = Word.WdSeekView.wdSeekCurrentPageHeader set_headerbookmark() objWord.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekMainDocument End Sub Private Sub set_headerbookmark() Try docWord.Bookmarks.Item("TGEDKCompanyBBEB99").Select() Catch objWord.Selection.MoveDown(Unit:=Word.WdUnits.wdLine, Count:=1) With objWord.ActiveDocument.Bookmarks .Add(Range:=objWord.Selection.Range, Name:="TGEDKCompanyBBEB99") .DefaultSorting = WdBookmarkSortBy.wdSortByName .ShowHidden = False End With End Try End Sub Private Sub Fill_Dokument(ByVal AusParametrisierung As Boolean, Optional ByVal xdata As DataTable = Nothing) If Office_Vorlage.bKopfzeile_generieren.Value = True Then Insert_Kopfzeile() End If If AusParametrisierung Then get_dokumentdaten() Dokumentwerte_Uebertragen(AusParametrisierung) Else Dokumentdaten = xdata Dokumentwerte_Uebertragen(AusParametrisierung) End If End Sub Private Sub Dokumentwerte_Uebertragen(ByVal AusParametrisierung As Boolean) Dim i As Long Dim pos As Long Dim pos2 As Long Dim Fieldlen As Long For i = 0 To Dokumentdaten.Rows.Count - 1 'Beginn-Textmarke If Dokumentdaten.Rows(i).Item("aktiv") = True Then If Dokumentdaten.Rows(i).Item("beginntextmarke") Is System.DBNull.Value Then Dokumentdaten.Rows(i).Item("beginntextmarke") = "" End If If Dokumentdaten.Rows(i).Item("endetextmarke") Is System.DBNull.Value Then Dokumentdaten.Rows(i).Item("endetextmarke") = "" End If If Dokumentdaten.Rows(i).Item("feldname") Is System.DBNull.Value Then Dokumentdaten.Rows(i).Item("feldname") = "" End If If Dokumentdaten.Rows(i).Item("beginntextmarke") = "TGEDKCursor" Or _ Dokumentdaten.Rows(i).Item("beginntextmarke") = "TGEDKCursorB" Or _ Dokumentdaten.Rows(i).Item("feldname") = "TGEDKCursorB" Or _ Dokumentdaten.Rows(i).Item("feldname") = "TGEDKCursor" Then Cursor_Positionieren = True Else If Dokumentdaten.Rows(i).Item("beginntextmarke") <> "" And _ Dokumentdaten.Rows(i).Item("endetextmarke") = "" Then Try docWord.Bookmarks.Item(Dokumentdaten.Rows(i).Item("beginntextmarke")).Select() pos = docWord.Bookmarks.Item(Dokumentdaten.Rows(i).Item("beginntextmarke")).Start If AusParametrisierung Then objWord.Selection.Text = Dokumentdaten.Rows(i).Item("testdaten") Else If Dokumentdaten.Rows(i).Item("used") = 1 Then 'If Dokumentdaten.Rows(i).Item("xvalue") <> "" Then ' If Microsoft.VisualBasic.Left(Dokumentdaten.Rows(i).Item("beginntextmarke"), 19) = "TGEDKDirektTelefonB" Or _ ' Microsoft.VisualBasic.Left(Dokumentdaten.Rows(i).Item("beginntextmarke"), 19) = "TGEDKDirektTelefonZ" Then ' objWord.Visible = True ' objWord.Selection.Text = Dokumentdaten.Rows(i).Item("xvalue") + " " ' Else objWord.Selection.Text = Dokumentdaten.Rows(i).Item("xvalue") ' End If End If End If pos2 = objWord.Selection.End If Microsoft.VisualBasic.Left(Dokumentdaten.Rows(i).Item("beginntextmarke"), 19) = "TGEDKDirektTelefonB" Or _ Microsoft.VisualBasic.Left(Dokumentdaten.Rows(i).Item("beginntextmarke"), 23) = "TGEDKVornameNameBetreue" Or _ Microsoft.VisualBasic.Left(Dokumentdaten.Rows(i).Item("beginntextmarke"), 19) = "TGEDKDirektTelefonZ" Then objWord.Selection.MoveLeft(Unit:=Word.WdUnits.wdCharacter, Count:=1) objWord.Selection.TypeText(text:=" ") objWord.Selection.SetRange(Start:=pos + 1, End:=pos2 + 1) With docWord.Bookmarks .Add(Range:=objWord.Selection.Range, Name:=Dokumentdaten.Rows(i).Item("beginntextmarke")) .DefaultSorting = WdBookmarkSortBy.wdSortByName .ShowHidden = False End With Else objWord.Selection.SetRange(Start:=pos, End:=pos2) With docWord.Bookmarks .Add(Range:=objWord.Selection.Range, Name:=Dokumentdaten.Rows(i).Item("beginntextmarke")) .DefaultSorting = WdBookmarkSortBy.wdSortByName .ShowHidden = False End With End If objWord.Selection.MoveLeft(Unit:=Word.WdUnits.wdCharacter, Count:=1) objWord.Selection.MoveLeft(Unit:=Word.WdUnits.wdCharacter, Count:=2, Extend:=Word.WdMovementType.wdExtend) If objWord.Selection.Text = " " Then objWord.Selection.MoveRight(Unit:=Word.WdUnits.wdCharacter, Count:=1) objWord.Selection.MoveLeft(Unit:=Word.WdUnits.wdCharacter, Count:=1, Extend:=Word.WdMovementType.wdExtend) objWord.Selection.Delete(Unit:=Word.WdUnits.wdCharacter, Count:=1) End If Catch End Try End If 'Beginn- und Ende-Textmarke If Dokumentdaten.Rows(i).Item("beginntextmarke") <> "" And _ Dokumentdaten.Rows(i).Item("endetextmarke") <> "" Then Try docWord.Bookmarks.Item(Dokumentdaten.Rows(i).Item("beginntextmarke")).Select() pos = docWord.Bookmarks.Item(Dokumentdaten.Rows(i).Item("beginntextmarke")).Start docWord.Bookmarks.Item(Dokumentdaten.Rows(i).Item("endetextmarke")).Select() pos2 = docWord.Bookmarks.Item(Dokumentdaten.Rows(i).Item("endetextmarke")).Start objWord.Selection.SetRange(Start:=pos, End:=pos2) If AusParametrisierung Then objWord.Selection.TypeText(text:=Dokumentdaten.Rows(i).Item("testdaten")) Else If Dokumentdaten.Rows(i).Item("used") = 1 Then ' If Dokumentdaten.Rows(i).Item("xvalue") <> "" Then objWord.Selection.TypeText(text:=Dokumentdaten.Rows(i).Item("xvalue")) End If End If With docWord.Bookmarks .Add(Range:=objWord.Selection.Range, Name:=Dokumentdaten.Rows(i).Item("beginntextmarke")) .DefaultSorting = WdBookmarkSortBy.wdSortByName .ShowHidden = False End With Catch End Try End If 'Felder If Dokumentdaten.Rows(i).Item("feldname") <> "" Then Try If docWord.FormFields.Item(Dokumentdaten.Rows(i).Item("feldname")).TextInput.Width <> 0 Then Fieldlen = docWord.FormFields.Item(Dokumentdaten.Rows(i).Item("feldname")).TextInput.Width docWord.FormFields.Item(Dokumentdaten.Rows(i).Item("feldname")).TextInput.Width = Fieldlen + 5 End If If AusParametrisierung Then docWord.FormFields.Item(Dokumentdaten.Rows(i).Item("feldname")).Result = Dokumentdaten.Rows(i).Item("testdaten") Else If Dokumentdaten.Rows(i).Item("used") = 1 Then ' If Dokumentdaten.Rows(i).Item("xvalue") <> "" Then docWord.FormFields.Item(Dokumentdaten.Rows(i).Item("feldname")).Result = Dokumentdaten.Rows(i).Item("xvalue") End If End If Catch End Try End If End If End If Next End Sub Private Sub FeldMakros() Dim i As Integer For i = 0 To Dokumentdaten.Rows.Count - 1 If Dokumentdaten.Rows(i).Item("feldname") <> "" Then If Dokumentdaten.Rows(i).Item("einstiegsmakro") = True Then objWord.Run(docWord.FormFields.Item(Dokumentdaten.Rows(i).Item("feldname")).EntryMacro) End If If Dokumentdaten.Rows(i).Item("ausstiegsmakro") = True Then objWord.Run(docWord.FormFields.Item(Dokumentdaten.Rows(i).Item("feldname")).ExitMacro) End If End If Next End Sub #End Region #Region "Excel-Funktionen" Private Function StartExcel() Try objExcel = CreateObject("Excel.application") Catch ex As Exception MsgBox(ex.Message) Exit Function End Try objExcel.Visible = False End Function #End Region #Region "Datenhandling" Private Sub get_dokumentdaten() dokudata.cpMainConnectionProvider = conn Dokumentdaten = dokudata.SelectTestdata(Me.Dokumenttypnr) dokudata.Dispose() End Sub #End Region #Region "Barcode" Dim Textboxes(100) As String Dim Textboxesi As Integer Private Sub Generate_Barcodes() If Me.Excel_Dokument Then insert_Barcode_Excel() Exit Sub End If Me.ProgressBar.Bar1.Value = 70 Me.ProgressBar.Info.Text = "Bestehende Barcodes löschen" delete_Textfelder() Me.ProgressBar.Bar1.Value = 80 Me.ProgressBar.Info.Text = "Positionen für Barcodes ermitteln" Insert_TextFelder() Me.ProgressBar.Bar1.Value = 90 Me.ProgressBar.Info.Text = "Barcodes erstellen" ins_Barcode() Me.ProgressBar.Bar1.Value = 100 Me.ProgressBar.Info.Text = "Dokumentgenerierung abgeschlossen" End Sub Private Sub delete_Textfelder() Dim xname As String Dim i As Integer Dim i1 As Integer Dim pages As Long Dim Prop As Object objWord.Selection.HomeKey(Unit:=Word.WdUnits.wdStory) For Each Prop In objWord.ActiveDocument.BuiltInDocumentProperties If UCase(Prop.Name) = "NUMBER OF PAGES" Then pages = Prop.value End If Next For i = 1 To pages xname = Str(i) If Left(xname, 1) = " " Then xname = Right(xname, Len(xname) - 1) objWord.Selection.GoTo(what:=Word.WdGoToItem.wdGoToPage, Name:=xname) HeaderFooterAnzeigen() While objWord.Selection.HeaderFooter.Shapes.Count > 0 objWord.Selection.HeaderFooter.Shapes.Item(1).Delete() End While ' On Error GoTo eh ' ' Resume Next ' For i1 = 1 To objWord.Selection.HeaderFooter.Shapes.Count ' objWord.Selection.HeaderFooter.Shapes.Item(i1).Delete() ' Next i1 ' On Error GoTo 0 objWord.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekMainDocument Next i Exit Sub eh: 'MsgBox(Err.Description) Resume Next End Sub Private Sub Insert_TextFelder() Dim xname As String Dim i As Integer Dim pages As Long Dim prop As Object For Each prop In objWord.ActiveDocument.BuiltInDocumentProperties If UCase(prop.Name) = "NUMBER OF PAGES" Then pages = prop.value End If Next Textboxesi = 1 objWord.Selection.HomeKey(Unit:=Word.WdUnits.wdStory) For i = 1 To pages xname = Str(i) If Left(xname, 1) = " " Then xname = Right(xname, Len(xname) - 1) objWord.Selection.GoTo(what:=Word.WdGoToItem.wdGoToPage, Name:=xname) insert_Textfield() objWord.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekMainDocument Next i End Sub Private Sub ins_Barcode() Dim xname As String Dim i As Integer Dim pages As Long Dim prop As Object For Each prop In objWord.ActiveDocument.BuiltInDocumentProperties If UCase(prop.Name) = "NUMBER OF PAGES" Then pages = prop.value End If Next objWord.Selection.HomeKey(Unit:=Word.WdUnits.wdStory) Textboxesi = 1 For i = 1 To pages xname = Str(i) If Left(xname, 1) = " " Then xname = Right(xname, Len(xname) - 1) objWord.Selection.GoTo(what:=Word.WdGoToItem.wdGoToPage, Name:=xname) HeaderFooterAnzeigen() insert_Barcode(i) Textboxesi = Textboxesi + 1 objWord.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekMainDocument Next i End Sub Private Sub HeaderFooterAnzeigen() If objWord.ActiveWindow.View.SplitSpecial <> WdSpecialPane.wdPaneNone Then objWord.ActiveWindow.Panes.Item(2).Close() End If If objWord.ActiveWindow.ActivePane.View.Type = WdViewType.wdNormalView Or objWord.ActiveWindow.ActivePane.View.Type = WdViewType.wdOutlineView Then objWord.ActiveWindow.ActivePane.View.Type = WdViewType.wdPrintView End If objWord.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekCurrentPageHeader If objWord.Selection.HeaderFooter.IsHeader = True Then objWord.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekCurrentPageFooter Else objWord.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekCurrentPageHeader End If End Sub Private Sub insert_Textfield() Dim Public_barcodeleft Dim Public_barcodetop Dim Public_barcodewidth# Dim Public_barcodeheight Try Public_barcodeleft = Office_Vorlage.iBcpl.Value Public_barcodetop = Office_Vorlage.iBcpt.Value Public_barcodewidth = Office_Vorlage.iBcw.Value Public_barcodeheight = Office_Vorlage.iBch.Value HeaderFooterAnzeigen() objWord.Selection.HeaderFooter.Shapes.AddTextbox(1, Public_barcodeleft, Public_barcodetop, _ Public_barcodewidth#, Public_barcodeheight).Select() ' objWord.Selection.ShapeRange.TextFrame.TextRange.Select objWord.Selection.ShapeRange.Line.Visible = Office.MsoTriState.msoFalse objWord.Selection.ShapeRange.TextFrame.MarginLeft = 0.0# objWord.Selection.ShapeRange.TextFrame.MarginRight = 0.0# objWord.Selection.ShapeRange.TextFrame.MarginTop = 0.0# objWord.Selection.ShapeRange.TextFrame.MarginBottom = 0.0# objWord.Selection.Collapse() Textboxes(Textboxesi) = objWord.Selection.HeaderFooter.Shapes.Item(Textboxesi).Name Textboxesi = Textboxesi + 1 System.Windows.Forms.Application.DoEvents() Exit Sub Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub insert_Barcode_Excel() Dim i As Integer Dim i1 As Integer Dim s As String Dim na As String Dim xx As Integer Me.ProgressBar.Bar1.Value = 80 Me.ProgressBar.Info.Text = "Barcodes generieren" s = Bar25I(Microsoft.VisualBasic.Right(Right(m_DokumentID, Len(m_DokumentID) - 6), 16)) For i = 1 To docExcel.Sheets.Count docExcel.Sheets(i).activate() For i1 = 1 To docExcel.Names.Count Try na = docExcel.Names.Item(i1).NameLocal If Left(na, 7) = "TGEDKBC" Then objExcel.Range(objExcel.Names.Item(na).NameLocal).Select() objExcel.ActiveCell.FormulaR1C1 = s With objExcel.Selection.Characters.Font .Name = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("barcode_font") '.Size = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("bcfont_groesse") End With 'objExcel.Selection.HorizontalAlignment = Excel.XlHAlign.xlHAlignRight End If Catch ex As Exception End Try Next Next End Sub Private Sub insert_Barcode(ByVal x As Integer) Dim Form Dim strsel As String Dim strresult Dim s As String ' Selection.ShapeRange.Select If DokumenTtyp.bZu_retournieren.Value = True Then Try Form = objWord.Selection.HeaderFooter.Shapes.Item(Textboxes(Textboxesi)) Form.Select() Form = objWord.Selection.HeaderFooter.Shapes.Item(Textboxes(Textboxesi)) Form.Select() If Office_Vorlage.bBchorizontal.Value = False Then objWord.ActiveDocument.Tables.Add(Range:=objWord.Selection.Range, NumRows:=1, NumColumns:=1) With objWord.Selection.Tables.Item(1) .Borders.Item(WdBorderType.wdBorderLeft).LineStyle = WdLineStyle.wdLineStyleNone .Borders.Item(WdBorderType.wdBorderRight).LineStyle = WdLineStyle.wdLineStyleNone .Borders.Item(WdBorderType.wdBorderTop).LineStyle = WdLineStyle.wdLineStyleNone .Borders.Item(WdBorderType.wdBorderBottom).LineStyle = WdLineStyle.wdLineStyleNone .Borders.Item(WdBorderType.wdBorderDiagonalDown).LineStyle = WdLineStyle.wdLineStyleNone .Borders.Item(WdBorderType.wdBorderDiagonalUp).LineStyle = WdLineStyle.wdLineStyleNone .Borders.Shadow = False End With objWord.Selection.Orientation = Word.WdTextOrientation.wdTextOrientationUpward objWord.Selection.Tables.Item(1).Rows.HeightRule = Word.WdRowHeightRule.wdRowHeightAtLeast objWord.Selection.Tables.Item(1).Rows.Height = Form.height End If s = Bar25I(Microsoft.VisualBasic.Right(Right(m_DokumentID, Len(m_DokumentID) - 6), 16)) 's = Bar25I("0012002123456789") objWord.Selection.TypeText(text:=s) objWord.Selection.HomeKey(Unit:=Word.WdUnits.wdLine, Extend:=Word.WdMovementType.wdExtend) objWord.Selection.Font.Name = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("barcode_font") objWord.Selection.Font.Size = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("bcfont_groesse") objWord.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight objWord.Selection.EndKey(Unit:=Word.WdUnits.wdLine) objWord.Selection.Font.Name = "Arial" objWord.Selection.Font.Size = 8 If DokumenTtyp.iPhysisches_archiv.Value = 2 Then objWord.Selection.TypeText(" F") Else objWord.Selection.TypeText(" U") End If Form = Nothing Catch ex As Exception MsgBox(ex.Message) End Try End If End Sub #End Region #Region "Barcode-Berechnung" Private BarTextOut As String Private BarTextIn As String Private DoCheckSum As Integer Private TempString As String Private CharValue As Long Private II As Integer Private Sum As Long Private barcodeout Private CheckSum As Integer ' Copyright 2001 by Elfring Fonts Inc. All rights reserved. This code ' may not be modified or altered in any way. 'Functions in this file: ' Bar25I(Text) -> convert text to bar code 2/5 interleaved ' Bar25Ics(Text) -> convert text to bar code 2/5 interleaved with checksum '--------------------------------------------------------------------------- ' This function converts a string of digits into a format compatible with Elfring ' Fonts Inc bar codes. It adds the start character, scans and converts digit pairs ' into single ASCII characters, and adds a stop character. Note that non-digits are ' ignored, and if you enter an odd number of digits, a leading zero will be added. '--------------------------------------------------------------------------- Public Function Bar25I(ByVal BarTextIn As String) As String ' Initialize input and output strings BarTextOut = "" BarTextIn = RTrim(LTrim(BarTextIn)) ' Throw away non-numeric data TempString = "" For II = 1 To Len(BarTextIn) If IsNumeric(Mid(BarTextIn, II, 1)) Then TempString = TempString & Mid(BarTextIn, II, 1) End If Next II ' If not an even number of digits, add a leading 0 If (Len(TempString) Mod 2) = 1 Then TempString = "0" & TempString End If ' Break digit pairs up and convert to characters- build output string For II = 1 To Len(TempString) Step 2 'Break string into pairs of digits and get value CharValue = Mid(TempString, II, 2) 'translate value to ASCII and save in BarTextOut If CharValue < 90 Then BarTextOut = BarTextOut & Chr(CharValue + 33) Else BarTextOut = BarTextOut & Chr(CharValue + 71) End If Next II 'Build ouput string, trailing space for Windows rasterization bug barcodeout = "{" & BarTextOut & "} " 'Return the string Bar25I = barcodeout End Function '--------------------------------------------------------------------------- ' This function converts a string of digits into a format compatible with Elfring ' Fonts Inc bar codes. It adds the start character, scans and converts digit pairs ' into single ASCII characters, and adds checksum and a stop character. Note that ' non-digits are ignored, and if you enter an even number of digits, a leading zero ' will be added. '--------------------------------------------------------------------------- Public Function Bar25Ics(ByVal BarTextIn As String) As String ' Initialize input and output strings BarTextOut = "" BarTextIn = RTrim(LTrim(BarTextIn)) ' Throw away non-numeric data TempString = "" For II = 1 To Len(BarTextIn) If IsNumeric(Mid(BarTextIn, II, 1)) Then TempString = TempString & Mid(BarTextIn, II, 1) End If Next II ' If not an odd number of digits, add a leading 0 If (Len(TempString) Mod 2) = 0 Then TempString = "0" & TempString End If ' Figure out the checksum digit Sum = 0 For II = 1 To Len(TempString) CharValue = Mid(TempString, II, 1) If (II Mod 2) = 1 Then Sum = Sum + (3 * CharValue) Else Sum = Sum + CharValue End If Next II ' Figure checksum, add it as last digit CheckSum = 10 - (Sum Mod 10) If CheckSum = 10 Then CheckSum = 0 TempString = TempString & Chr(48 + CheckSum) ' Break digit pairs up and convert to characters- build output string For II = 1 To Len(TempString) Step 2 'Break string into pairs of digits and get value CharValue = Mid(TempString, II, 2) 'translate value to ASCII and save in BarTextOut If CharValue < 90 Then BarTextOut = BarTextOut & Chr(CharValue + 33) Else BarTextOut = BarTextOut & Chr(CharValue + 71) End If Next II 'Build ouput string, trailing space for Windows rasterization bug barcodeout = "{" & BarTextOut & "} " 'Return the string Bar25Ics = barcodeout End Function #End Region #Region "Öffentliche Methoden" #Region "Word" Public Sub Create_Dokument_Before_Fill(ByVal DokTypeNr As Long, ByVal xdata As DataTable, ByVal fname As String) 'Office-Vorlage auslesen Me.inEditMode = False Me.Excel_Dokument = False Me.Dokumenttypnr = DokTypeNr DokumenTtyp.cpMainConnectionProvider = conn DokumenTtyp.iDokumenttypnr = New SqlInt32(CType(Me.Dokumenttypnr, Int32)) DokumenTtyp.SelectOne() Me.ProgressBar.Bar1.Value = 30 Me.ProgressBar.Info.Text = "Word-Dokument erstellen" Office_Vorlage.cpMainConnectionProvider = conn Office_Vorlage.iOffice_vorlagenr = DokumenTtyp.iOffice_vorlagenr Office_Vorlage.SelectOne() If Office_Vorlage.iAnwendungnr.Value = 2 Then Create_Excel_Before_Fill(DokTypeNr, xdata, fname) Exit Sub End If 'Temporär-Datei Dokument_Temp = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("pfad_temporaer_dokumente") CheckDokumentName = Dokument_Temp + Office_Vorlage.sPrefix_dokumentname.Value + ".doc" Dokument_Temp = Dokument_Temp + Office_Vorlage.sPrefix_dokumentname.Value + ".doc" 'Nativ-Dokumentvorlage If Not Office_Vorlage.bIdv_vorlage.Value = True Then Dokument_To_Create = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("pfad_word_vorlagen") + Office_Vorlage.sOffice_vorlage.Value StartWord() Dokumentfilename = fname objWord.Documents.Add(Template:=Dokument_To_Create) objWord.ActiveDocument.SaveAs(filename:=fname) docWord = objWord.ActiveDocument Else Dokumentfilename = fname If Not OhneIDV Then Create_IDVDokument(Office_Vorlage.sIdv_id.Value) Else Dokument_To_Create = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("pfad_word_vorlagen") + Office_Vorlage.sIdv_id.Value + ".doc" StartWord() Dokumentfilename = fname objWord.Documents.Add(Template:=Dokument_To_Create) objWord.ActiveDocument.SaveAs(filename:=fname) docWord = objWord.ActiveDocument End If End If IsProtected = False If docWord.ProtectionType <> WdProtectionType.wdNoProtection Then docWord.Unprotect(password:=Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("passwort_wordvorlagen")) IsProtected = True End If 'Dokument ggf. entsperren, Daten übertragen, Dokument ggf. schützen ' If Office_Vorlage.bDokument_geschuetzt.Value = True Then ' docWord.Unprotect(password:=Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("passwort_wordvorlagen")) ' End If objWord.Visible = False Me.ProgressBar.Bar1.Value = 40 Me.ProgressBar.Info.Text = "Vorhandene Werte aus dem Dokument auslesen" Word_Werte_Auslesen(xdata) Me.ProgressBar.Bar1.Value = 50 Me.ProgressBar.Info.Text = "Neue und Bestehende Werte zusammenstellen" End Sub Public Sub Open_Document(ByVal fname As String, ByVal xdata As DataTable, ByVal doktypeNr As Long) Me.Dokumenttypnr = doktypeNr Me.inEditMode = True DokumenTtyp.cpMainConnectionProvider = conn DokumenTtyp.iDokumenttypnr = New SqlInt32(CType(Me.Dokumenttypnr, Int32)) DokumenTtyp.SelectOne() Me.ProgressBar.Bar1.Value = 40 Me.ProgressBar.Info.Text = "Word-Dokument öffnen" Office_Vorlage.cpMainConnectionProvider = conn Office_Vorlage.iOffice_vorlagenr = DokumenTtyp.iOffice_vorlagenr Office_Vorlage.SelectOne() If Office_Vorlage.iAnwendungnr.Value = 2 Then Open_Excel(fname, xdata, doktypeNr) Exit Sub End If StartWord() objWord.Run("Autoexec") Dokumentfilename = fname objWord.Documents.Open(fname) docWord = objWord.ActiveDocument objWord.Visible = False Me.ProgressBar.Bar1.Value = 40 Me.ProgressBar.Info.Text = "Vorhandene Werte aus dem Dokument auslesen" If docWord.ProtectionType <> WdProtectionType.wdNoProtection Then docWord.Unprotect(password:=Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("passwort_wordvorlagen")) IsProtected = True End If Word_Werte_Auslesen(xdata) Me.ProgressBar.Bar1.Value = 50 Me.ProgressBar.Info.Text = "Neue und Bestehende Werte zusammenstellen" End Sub Public Sub Dokument_Vervollstaendigen(ByVal xdata As DataTable) If Me.Excel_Dokument = True Then Excel_Vervollstaendigen(xdata) Exit Sub End If Me.ProgressBar.Bar1.Value = 60 Me.ProgressBar.Info.Text = "Dokumentwerte übertragen" If docWord.ProtectionType <> WdProtectionType.wdNoProtection Then docWord.Unprotect(password:=Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("passwort_wordvorlagen")) IsProtected = True End If '22.07.2003 objWord.Visible = False objWord.WindowState = WdWindowState.wdWindowStateMinimize System.Windows.Forms.Application.DoEvents() Fill_Dokument(False, xdata) If DokumenTtyp.bZu_retournieren.Value = True Then Generate_Barcodes() Else Try objWord.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekMainDocument Catch End Try End If objWord.ScreenUpdating = True Me.ProgressBar.Close() If IsProtected Then Try docWord.Protect(Type:=WdProtectionType.wdAllowOnlyFormFields, noreset:=True, password:=Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("passwort_wordvorlagen")) Catch End Try End If objWord.Activate() objWord.WindowState = WdWindowState.wdWindowStateMaximize FeldMakros() If objWord.ActiveWindow.View.SplitSpecial = WdSpecialPane.wdPaneNone Then objWord.ActiveWindow.ActivePane.View.Type = WdViewType.wdPrintView Else objWord.ActiveWindow.View.Type = WdViewType.wdPrintView End If 'objWord.Visible = True If Me.CreateDoc = True Then IDV_makros_bearbeiten() If Cursor_Positionieren Then Try docWord.Bookmarks.Item("TGEDKCursor").Select() Catch Try docWord.Bookmarks.Item("TGEDKCursorB").Select() Catch End Try End Try End If Me.Dokument_Saved = False If objWord.ActiveWindow.View.SplitSpecial = WdSpecialPane.wdPaneNone Then objWord.ActiveWindow.ActivePane.View.Type = WdViewType.wdPrintView Else objWord.ActiveWindow.View.Type = WdViewType.wdPrintView End If '22.07.2003 Visible=False objWord.Visible = False Office_Vorlage.Dispose() DokumenTtyp.Dispose() Control_Word() End Sub Public Sub Word_Werte_Auslesen(ByVal xdata As DataTable) Dim i As Integer Dim pos, pos2 As Integer For i = 0 To xdata.Rows.Count - 1 xdata.Rows(i).Item("used") = 0 If xdata.Rows(i).Item("beginntextmarke") <> "" And xdata.Rows(i).Item("endetextmarke") = "" Then Try docWord.Bookmarks.Item(xdata.Rows(i).Item("beginntextmarke")).Select() xdata.Rows(i).Item("oldvalue") = convert(objWord.Selection.Text) xdata.Rows(i).Item("used") = 1 Catch End Try If xdata.Rows(i).Item("beginntextmarke") = "TGEDKCompanyBBEB99" Then xdata.Rows(i).Item("used") = 1 End If If xdata.Rows(i).Item("beginntextmarke") <> "" And xdata.Rows(i).Item("endetextmarke") <> "" Then Try docWord.Bookmarks.Item(xdata.Rows(i).Item("beginntextmarke")).Select() pos = objWord.Selection.Start docWord.Bookmarks.Item(xdata.Rows(i).Item("endetextmarke")).Select() pos2 = objWord.Selection.Start objWord.Selection.SetRange(Start:=pos, End:=pos2) xdata.Rows(i).Item("oldvalue") = convert(objWord.Selection.Text) xdata.Rows(i).Item("used") = 1 Catch End Try End If Try If xdata.Rows(i).Item("feldname") <> "" Then Try xdata.Rows(i).Item("oldvalue") = convert(docWord.FormFields.Item(xdata.Rows(i).Item("feldname")).Result) xdata.Rows(i).Item("used") = 1 Catch End Try End If Catch End Try Next End Sub Public Sub Create_Dokument(ByVal DokTypeNr As Long, ByVal ShowReport As Boolean) 'Office-Vorlage auslesen Me.inEditMode = False Me.Dokumenttypnr = DokTypeNr DokumenTtyp.cpMainConnectionProvider = conn DokumenTtyp.iDokumenttypnr = New SqlInt32(CType(Me.Dokumenttypnr, Int32)) DokumenTtyp.SelectOne() Office_Vorlage.cpMainConnectionProvider = conn Office_Vorlage.iOffice_vorlagenr = DokumenTtyp.iOffice_vorlagenr Office_Vorlage.SelectOne() 'Temporär-Datei Dokument_Temp = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("pfad_temporaer_dokumente") Dokument_Temp = Dokument_Temp + Office_Vorlage.sPrefix_dokumentname.Value + Change_Docname(Now) + ".doc" Dokumentfilename = Dokument_Temp 'Nativ-Dokumentvorlage If Not Office_Vorlage.bIdv_vorlage.Value = True Then Dokument_To_Create = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("pfad_word_vorlagen") + Office_Vorlage.sOffice_vorlage.Value StartWord() objWord.Documents.Add(Template:=Dokument_To_Create) objWord.ActiveDocument.SaveAs(filename:=Dokumentfilename) docWord = objWord.ActiveDocument Else Create_IDVDokument(Office_Vorlage.sIdv_id.Value) End If IsProtected = False If docWord.ProtectionType <> WdProtectionType.wdNoProtection Then docWord.Unprotect(password:=Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("passwort_wordvorlagen")) IsProtected = True End If 'Dokument ggf. entsperren, Daten übertragen, Dokument ggf. schützen ' If Office_Vorlage.bDokument_geschuetzt.Value = True Then ' docWord.Unprotect(password:=Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("passwort_wordvorlagen")) ' End If Fill_Dokument(True) If DokumenTtyp.bZu_retournieren.Value = True Then Generate_Barcodes() Else Try objWord.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekMainDocument Catch End Try End If ' Me.ProgressBar.Close() If IsProtected Then Try docWord.Protect(Type:=WdProtectionType.wdAllowOnlyFormFields, noreset:=True, password:=Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("passwort_wordvorlagen")) Catch End Try End If FeldMakros() If objWord.ActiveWindow.View.SplitSpecial = WdSpecialPane.wdPaneNone Then objWord.ActiveWindow.ActivePane.View.Type = WdViewType.wdPrintView Else objWord.ActiveWindow.View.Type = WdViewType.wdPrintView End If objWord.Visible = True IDV_makros_bearbeiten() If Cursor_Positionieren Then Try docWord.Bookmarks.Item("TGEDKCursor").Select() docWord.Bookmarks.Item("TGEDKCursorB").Select() Catch End Try End If objWord.Visible = True Office_Vorlage.Dispose() DokumenTtyp.Dispose() If Not ShowReport Then docWord = Nothing objWord = Nothing Else Get_Docvars(DokTypeNr) End If End Sub Public Sub ShowDoc(ByVal s As String) If UCase(Right(s, 3)) = "XLS" Then StartExcel() objExcel.Workbooks.Open(s) objExcel.Visible = True Me.Excel_Dokument = True End If If UCase(Right(s, 3)) = "DOC" Then StartWord() Me.Excel_Dokument = False objWord.Run("Autoexec") objWord.Documents.Open(s) docWord = objWord.ActiveDocument docWord.Application.Visible = True docWord.Activate() insert_wordart() objWord.Visible = True objWord.Activate() objWord.NormalTemplate.Saved = True End If Me.DokumentName = DivFnkt.ExtractFilename(s) Control_Word_readonly() End Sub Public Function insert_wordart() objWord.ActiveWindow.ActivePane.NewFrameset() objWord.ActiveWindow.ActivePane.Frameset.AddNewFrame(Word.WdFramesetNewFrameLocation.wdFramesetNewFrameAbove) With objWord.ActiveWindow.Document.Frameset.ChildFramesetItem(1) .HeightType = Word.WdFramesetSizeType.wdFramesetSizeTypeFixed ' .HeightType = wdFramesetSizeTypePercent .Height = 35 End With objWord.Selection.TypeText(text:="*** Dokument im Anzeigemodus geöffnet ***") objWord.Selection.HomeKey(Unit:=Word.WdUnits.wdLine, Extend:=Word.WdMovementType.wdExtend) objWord.Selection.Font.Color = Word.WdColor.wdColorRed objWord.Selection.Font.Size = 12 objWord.Selection.EndKey(Unit:=Word.WdUnits.wdLine) objWord.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter objWord.Selection.Font.Color = WdColor.wdColorBlack objWord.Selection.TypeParagraph() objWord.Selection.Font.Size = 9 objWord.Selection.TypeText(text:="Änderungen im Dokument werden in EDOKA nicht berücksichtigt, auch dann nicht, wenn Sie das Dokument abspeichern.") objWord.Selection.HomeKey(Unit:=Word.WdUnits.wdLine, Extend:=Word.WdMovementType.wdExtend) objWord.Selection.Font.Color = WdColor.wdColorBlack objWord.Selection.HomeKey(Unit:=Word.WdUnits.wdStory) objWord.ActiveWindow.Panes.Item(1).Activate() If objWord.ActiveWindow.View.SplitSpecial = WdSpecialPane.wdPaneNone = True Then objWord.ActiveWindow.ActivePane.View.Type = WdViewType.wdPrintPreview Else objWord.ActiveWindow.View.Type = WdViewType.wdPrintPreview End If objWord.CommandBars("Frames").Visible = False End Function Public Sub CloseDoc() docWord.Close(False) docWord = Nothing objWord = Nothing End Sub #End Region #Region "Excel" Public Sub Create_Excel_Before_Fill(ByVal DokTypeNr As Long, ByVal xdata As DataTable, ByVal fname As String) Dim i As Integer Me.inEditMode = False Me.Excel_Dokument = True Me.Dokumenttypnr = DokTypeNr DokumenTtyp.cpMainConnectionProvider = conn DokumenTtyp.iDokumenttypnr = New SqlInt32(CType(Me.Dokumenttypnr, Int32)) DokumenTtyp.SelectOne() Me.ProgressBar.Bar1.Value = 30 Me.ProgressBar.Info.Text = "Word-Dokument erstellen" Office_Vorlage.cpMainConnectionProvider = conn Office_Vorlage.iOffice_vorlagenr = DokumenTtyp.iOffice_vorlagenr Office_Vorlage.SelectOne() 'Temporär-Datei Dokument_Temp = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("pfad_temporaer_dokumente") Dokument_Temp = Dokument_Temp + Office_Vorlage.sPrefix_dokumentname.Value + ".doc" 'Nativ-Dokumentvorlage If Not Office_Vorlage.bIdv_vorlage.Value = True Then Dokument_To_Create = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("pfad_excel_vorlagen") + Office_Vorlage.sOffice_vorlage.Value StartExcel() Dokumentfilename = fname objExcel.Workbooks.Add(Template:=Dokument_To_Create) objExcel.ActiveWorkbook.SaveAs(filename:=fname) docExcel = objExcel.ActiveWorkbook End If IsProtected = False For i = 1 To docExcel.Sheets.Count docExcel.Sheets(i).activate() sheetExcel = docExcel.ActiveSheet sheetExcel.Unprotect(password:=Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("passwort_excelvorlagen")) IsProtected = True Next i objExcel.Visible = False Me.ProgressBar.Bar1.Value = 40 Me.ProgressBar.Info.Text = "Vorhandene Werte aus dem Dokument auslesen" Excel_Werte_Auslesen(xdata) Me.ProgressBar.Bar1.Value = 50 Me.ProgressBar.Info.Text = "Neue und Bestehende Werte zusammenstellen" End Sub Public Sub Open_Excel(ByVal fname As String, ByVal xdata As DataTable, ByVal doktypeNr As Long) Dim i As Integer Me.Dokumenttypnr = doktypeNr Me.inEditMode = True DokumenTtyp.cpMainConnectionProvider = conn DokumenTtyp.iDokumenttypnr = New SqlInt32(CType(Me.Dokumenttypnr, Int32)) DokumenTtyp.SelectOne() Me.Excel_Dokument = True Me.ProgressBar.Bar1.Value = 40 Me.ProgressBar.Info.Text = "Word-Dokument öffnen" Office_Vorlage.cpMainConnectionProvider = conn Office_Vorlage.iOffice_vorlagenr = DokumenTtyp.iOffice_vorlagenr Office_Vorlage.SelectOne() StartExcel() Dokumentfilename = fname objExcel.Workbooks.Open(fname) docExcel = objExcel.ActiveWorkbook objExcel.Visible = False Me.ProgressBar.Bar1.Value = 40 Me.ProgressBar.Info.Text = "Vorhandene Werte aus dem Dokument auslesen" For i = 1 To docExcel.Sheets.Count docExcel.Sheets(i).activate() sheetExcel = docExcel.ActiveSheet sheetExcel.Unprotect(password:=Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("passwort_excelvorlagen")) IsProtected = True Next i Excel_Werte_Auslesen(xdata) Me.ProgressBar.Bar1.Value = 50 Me.ProgressBar.Info.Text = "Neue und Bestehende Werte zusammenstellen" End Sub Public Sub Excel_Werte_Auslesen(ByVal xdata As DataTable) Dim i As Integer Dim i1 As Integer Dim sheets As Integer sheets = docExcel.Sheets.Count For i = 1 To sheets docExcel.Sheets(i).activate() For i1 = 0 To xdata.Rows.Count - 1 Try objExcel.Range(docExcel.Names.Item(xdata.Rows(i1).Item("feldname")).NameLocal).Select() xdata.Rows(i1).Item("oldvalue") = objExcel.Selection.text xdata.Rows(i1).Item("used") = 1 Catch End Try Next Next End Sub Public Sub Excel_Vervollstaendigen(ByVal xdata As DataTable) Dim Sheetnr_fuer_Cursor As Integer Me.ProgressBar.Bar1.Value = 60 Me.ProgressBar.Info.Text = "Dokumentwerte übertragen" Dim i As Integer Dim i1 As Integer Dim sheets As Integer sheets = docExcel.Sheets.Count sheetnr_fuer_cursor = 0 For i = 1 To sheets docExcel.Sheets(i).activate() For i1 = 0 To xdata.Rows.Count - 1 Try If xdata.Rows(i1).Item("beginntextmarke") = "TGEDKCursor" Or _ xdata.Rows(i1).Item("beginntextmarke") = "TGEDKCursorB" Or _ xdata.Rows(i1).Item("feldname") = "TGEDKCursorB" Or _ xdata.Rows(i1).Item("feldname") = "TGEDKCursor" Then Try objExcel.Range(docExcel.Names.Item(xdata.Rows(i1).Item("feldname")).NameLocal).Select() Cursor_Positionieren = True Sheetnr_fuer_Cursor = i Catch End Try Else objExcel.Range(docExcel.Names.Item(xdata.Rows(i1).Item("feldname")).NameLocal).Select() objExcel.ActiveCell.FormulaR1C1 = xdata.Rows(i1).Item("xvalue") End If Catch End Try Next 'docExcel.Sheets(i).largescroll(down:=-10) Next If DokumenTtyp.bZu_retournieren.Value = True Then Generate_Barcodes() End If If IsProtected Then For i = 1 To docExcel.Sheets.Count docExcel.Sheets(i).activate() sheetExcel = docExcel.ActiveSheet sheetExcel.Protect(password:=Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("passwort_excelvorlagen")) IsProtected = True Next i End If If Cursor_Positionieren Then Try docExcel.Sheets(Sheetnr_fuer_Cursor).activate() objExcel.Range(docExcel.Names.Item("TGEDKCursor").NameLocal).Select() Catch Try docExcel.Sheets(Sheetnr_fuer_Cursor).activate() objExcel.Range(docExcel.Names.Item("TGEDKCursorB").NameLocal).Select() Catch End Try End Try Else objExcel.Sheets(1).activate() End If Me.ProgressBar.Close() Control_Word() End Sub #End Region #End Region #Region "Diverse_Funktionen" Public Function Change_Docname(ByVal s As String) As String Dim splitt Dim t As String splitt = Split(s, ".") t = splitt(0) + splitt(1) + splitt(2) splitt = Split(t, ":") t = splitt(0) + splitt(1) + splitt(2) Change_Docname = t End Function Function convert(ByVal x As String) As String Dim s As String Dim s1 As String Dim i As Integer s = x i = InStr(s, Chr(13)) While i > 0 s = Left(s, i - 1) & "#" & Right(s, Len(s) - (i)) If Mid(s, i + 1, 1) = Chr(10) Then s = Left(s, i) & Right(s, Len(s) - (i + 1)) End If i = InStr(s, Chr(13)) End While i = InStr(s, "#") While i > 0 s = Left(s, i - 1) & vbCrLf & Right(s, Len(s) - (i)) i = InStr(s, "#") End While convert = s End Function #End Region #Region "Reporting" Public Sub Get_Docvars(ByVal DokTypeNr As Long) Dim id As String Dim rec As New edokadb.clsReporting_Dokumenttyp() rec.cpMainConnectionProvider = conn conn.OpenConnection() id = Now Dim i As Short For i = 1 To docWord.Bookmarks.Count Try If Left(UCase(docWord.Bookmarks.Item(i).Name), 2) <> "BK" And Left(UCase(docWord.Bookmarks.Item(i).Name), 4) <> "TGAM" Then rec.sID = New SqlString(CType(id, String)) rec.sOFBM = New SqlString(CType(docWord.Bookmarks.Item(i).Name, String)) rec.Insert() End If Catch ex As Exception MsgBox(ex.Message) End Try Next For i = 1 To docWord.FormFields.Count rec.sID = New SqlString(CType(id, String)) rec.sOFFeld = New SqlString(CType(docWord.FormFields.Item(i).Name, String)) rec.Insert() Next Dim scmCmdToExecute As SqlCommand = New SqlCommand() scmCmdToExecute.CommandText = "dbo.[sp_reporting_dokumenttyp]" scmCmdToExecute.CommandType = CommandType.StoredProcedure Try scmCmdToExecute.Connection = conn.scoDBConnection scmCmdToExecute.Parameters.Add(New SqlParameter("@id", SqlDbType.VarChar, 25, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, id)) scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumenttypnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, DokTypeNr)) If Globals.MyMsg.Show_MessageYesNo(15) = MsgBoxResult.Yes Then scmCmdToExecute.Parameters.Add(New SqlParameter("@VFInaktivieren", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 1)) Else scmCmdToExecute.Parameters.Add(New SqlParameter("@VFInaktivieren", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0)) End If scmCmdToExecute.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) Finally scmCmdToExecute.Dispose() End Try Dim f As New frmReporting() f.show_report_dokumenttypVFelder(Dokumenttypnr, id) f.Show() scmCmdToExecute.Dispose() scmCmdToExecute = New SqlCommand() scmCmdToExecute.CommandText = "dbo.[sp_reporting_dokumenttyp]" scmCmdToExecute.CommandType = CommandType.StoredProcedure Try scmCmdToExecute.Connection = conn.scoDBConnection scmCmdToExecute.CommandText = "dbo.[sp_reporting_dokumenttyp_delete]" scmCmdToExecute.CommandType = CommandType.StoredProcedure scmCmdToExecute.Connection = conn.scoDBConnection scmCmdToExecute.Parameters.Add(New SqlParameter("@id", SqlDbType.VarChar, 25, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, id)) scmCmdToExecute.ExecuteNonQuery() Catch es As Exception MsgBox(es.Message) End Try conn.CloseConnection(True) End Sub #End Region #Region "ControlWord" Private Sub Control_Word() Me.DocReadonly = False Me.Dokument_Saved = False 'FileWatcher() WATCHFILE() End Sub Private Sub Control_Word_readonly() Me.DocReadonly = True Me.Dokument_Saved = False WATCHFILE() End Sub Private Function WATCHFILE() 'Wordwatch - Überprüfung auf geöffnete WordWatch.Filename = Me.DokumentName If Me.Excel_Dokument Then WordWatch.ApplicationType = 2 objExcel.Visible = True Else WordWatch.ApplicationType = 1 objWord.Visible = True Disable_Enable_MenuFunctions(False) End If Word_Active = True If Not Me.DocReadonly Then Save_DateTime = File.GetLastWriteTime(Me.Dokumentfilename) Win32API.ShowWindow(Globals.Apphandle, Win32API.SW_Minimze) WordWatch.Start() Globals.PerfMon.insert_entry(Me.DokumentID + " Task-Prüfung gestartet") Dim hnd As Long hnd = Win32API.FindWindow(vbNullString, WordWatch.WindowName) Win32API.ShowWindow(hnd, Win32API.SW_Maximize) Win32API.BringWindowToTop(hnd) End Function Private Sub Finishing() Handles WordWatch.DocumentClosed WordWatch.Stopp() Globals.PerfMon.insert_entry(Me.DokumentID + " Taskprüfung gestoppt") If Finished Then Exit Sub Finished = True Dim i As Integer If Not Me.Excel_Dokument Then If Globals.Words.Count = 0 Then Disable_Enable_MenuFunctions(True) End If If Me.DocReadonly Then Delete_File() Exit Sub End If If File.GetLastWriteTime(Me.Dokumentfilename) <> Save_DateTime Then Globals.PerfMon.insert_entry(Me.DokumentID + " *** Dokument speichern start") Save_Data() Globals.PerfMon.insert_entry(Me.DokumentID + " *** Dokument speichern ende") Else Globals.PerfMon.insert_entry(Me.DokumentID + " *** Dokument restore start") Restore_Data() Globals.PerfMon.insert_entry(Me.DokumentID + " *** Dokument restore ende") End If Try Words.Remove(Me.DokumentName) Globals.PerfMon.insert_entry(Me.DokumentID + " Eintrag aus interner Collection entfernt") If Globals.Words.Count = 0 Then Disable_Enable_MenuFunctions(True) DivFnkt.Status_Dokumentbearbeitung(2, Me.DokumentID) Catch Finally Win32API.ShowWindow(Globals.Apphandle, Win32API.SW_Maximize) End Try End Sub Public Function FileWatcher() Save_DateTime = File.GetLastWriteTime(Me.Dokumentfilename) End Function Private Sub filechange(ByVal source As Object, ByVal e As System.IO.FileSystemEventArgs) If e.ChangeType = IO.WatcherChangeTypes.Changed Then MsgBox(e.FullPath & " " & e.Name) Me.Dokument_Saved = True End If End Sub #End Region #Region "Save / Restore" Public Function Save_Data() WordWatch.Stopp() Save_Doc() Update_Dokumentdetails() Dim statush As New Statushandling() statush.check_abschluss(Me.DokumentID, Globals.MitarbeiterNr) End Function Private Sub Change_Dokumentstatus() Dim scmCmdToExecute As SqlCommand = New SqlCommand() scmCmdToExecute.CommandText = "dbo.SP_archiv_changedokumentstatus" scmCmdToExecute.CommandType = CommandType.StoredProcedure scmCmdToExecute.Connection = conn.scoDBConnection scmCmdToExecute.Connection.Open() Try scmCmdToExecute.Parameters.Clear() scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Globals.StatusChanges_Dokumentid)) scmCmdToExecute.Parameters.Add(New SqlParameter("@status", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Globals.StatusChanges_Status)) scmCmdToExecute.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) Finally End Try scmCmdToExecute.Connection.Close() scmCmdToExecute.Dispose() End Sub Public Function Restore_Data() WordWatch.Stopp() If Me.CreateDoc = True Then Restore(1) Win32API.ShowWindow(Globals.Apphandle, Win32API.SW_Maximize) Dim s As String s = MyTxt.Get_Meldungstext(80) + vbCrLf + vbCrLf + "Partner: " + Me.txtPartner + vbCrLf + "Dokument: " & Me.txtDokumenttyp Dim f As New frmHinweismeldung1() f.MsgBoxStyle = 1 f.Label1.Text = s f.ShowDialog() Globals.PerfMon.insert_entry(Me.DokumentID + " " + s) ' MsgBox(s, MsgBoxStyle.Critical) Else Restore(2) End If DivFnkt.Status_Dokumentbearbeitung(2, Me.DokumentID) End Function Public Function Restore(ByVal typ As Integer) Restore_Datasets() End Function Public Function Save_Doc() Dim docsave As New DocMgmt() docsave.Save_To_DB(Me.DokumentID, Me.Dokumentfilename) docsave = Nothing Globals.PerfMon.insert_entry(Me.DokumentID + " Dokument auf Datenbank gespeichert") If Me.Dokumentcoldindex_Changed Then Archivfnkt.insert_coldupdate_status(Me.save_dokumentcoldindex, Me.DokumentID, Me.dokumentcoldindex_status) End If If Me.Ersetzte_Dokumente_Reaktivieren = True Then Dokumente_Reaktivieren() End If DivFnkt.Status_Dokumentbearbeitung(2, Me.DokumentID) Delete_File() End Function Public Function Dokumente_Reaktivieren() Dim da As New SqlDataAdapter("Select * from dokumentersetzen where hauptdokumentid='" & Me.DokumentID & "'", Globals.sConnectionString) Dim ds As New DataSet() Dim i As Integer da.Fill(ds, "Ersetzen") For i = 0 To ds.Tables(0).Rows.Count - 1 Dim scmCmdToExecute As SqlCommand = New SqlCommand() scmCmdToExecute.CommandText = "dbo.SP_Dokument_reaktivieren" scmCmdToExecute.CommandType = CommandType.StoredProcedure scmCmdToExecute.Connection = conn.scoDBConnection conn.OpenConnection() Try scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, ds.Tables(0).Rows(i).Item(2))) scmCmdToExecute.Parameters.Add(New SqlParameter("@mitarbeiter", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Globals.MitarbeiterNr)) scmCmdToExecute.ExecuteNonQuery() Catch ex As Exception Throw New Exception("Dokument_Information_Wert::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex) Finally scmCmdToExecute.Dispose() conn.CloseConnection(True) Dim dt As DataTable Dim sth As New Statushandling() dt = sth.get_coldindex_and_statusnr(ds.Tables(0).Rows(i).Item(2), False, True) Archivfnkt.insert_coldupdate_reaktivieren(dt, ds.Tables(0).Rows(i).Item(2), "Aktuell") sth.Dispose() End Try Next da.Dispose() ds.Dispose() End Function Public Function Update_Dokumentdetails() Dim doc As New edokadb.clsDokument() doc.cpMainConnectionProvider = conn conn.OpenConnection() doc.sDokumentid = New SqlString(CType(Me.DokumentID, String)) doc.SelectOne() doc.daMutiertam = New SqlDateTime(CType(Microsoft.VisualBasic.Now, DateTime)) doc.Update() Dim statush As New Statushandling() If (doc.iVerantwortlich.Value <> Globals.MitarbeiterNr) Then If Me.save_stv = 1 Then If doc.iVerantwortlich.Value <> Me.save_verantwortlicher Then If Me.txtBemerkung_Verantwortlicher <> "" Then statush.BemerkungVerantwortlicher = Me.txtBemerkung_Verantwortlicher End If statush.Meldung_Verantwortlicher(Me.DokumentID, doc.iVerantwortlich.Value) End If Else If Me.txtBemerkung_Verantwortlicher <> "" Then statush.BemerkungVerantwortlicher = Me.txtBemerkung_Verantwortlicher End If statush.Meldung_Verantwortlicher(Me.DokumentID, doc.iVerantwortlich.Value) End If End If If Me.send_statusmessage = True Then statush.Meldung_Status(Me.DokumentID, doc.iStatusnr.Value) End If statush.Dispose() doc.Dispose() conn.CloseConnection(True) Globals.PerfMon.insert_entry(Me.DokumentID + " Dokumentdetails nachgeführt") End Function Public Function Delete_File() File.Delete(Me.Dokumentfilename) RaiseEvent OfficeFinished() Globals.PerfMon.insert_entry(Me.DokumentID + " Lokale Kopie gelöscht") End Function Public Sub Restore_Datasets() Dim f As New FrmRestore() f.Show() f.Refresh() Try Restore_Coldindex() Restore_Dokumentwerte() Restore_Notizen() Restore_InfoEmpfaenger() Restore_dokumentzuordnungen() Restore_Dokumentfunktionen() Restore_Statushistory() Restore_Dokumentersetzen() If Me.CreateDoc = True Then delete_dokumentstatus() End If Delete_File() f.DokumentID = Me.DokumentID f.SaveDocument = Me.Save_Dokument f.NeuesDokument = Me.CreateDoc f.Restore_Dokument() If Me.Dokumentcoldindex_Changed = True Then Archivfnkt.Restore_Coldindex(Me.save_dokumentcoldindex, Me.DokumentID) If Me.dokumentid_changed Then Archivfnkt.change_dokumentid(Me.DokumentID, Me.dokumentidalt) f.Close() f.Dispose() Globals.PerfMon.insert_entry(Me.DokumentID + " Restore durchgeführt") Catch f.Close() f.Dispose() Win32API.ShowWindow(Globals.Apphandle, Win32API.SW_Maximize) Dim s As String s = MyTxt.Get_Meldungstext(84) + vbCrLf + vbCrLf + "Partner: " + Me.txtPartner + vbCrLf + "Dokument: " & Me.txtDokumenttyp Dim f1 As New frmHinweismeldung1() f1.MsgBoxStyle = 1 f1.Label1.Text = s f1.ShowDialog() f1.Dispose() Globals.PerfMon.insert_entry(Me.DokumentID + " " + s) End Try End Sub Private Sub Restore_Notizen() 'Sofern keine Notizen vorhanden sind, Sub verlassen Dim i As Integer Dim nnr As Long Dim scmCmdToExecute As SqlCommand = New SqlCommand() scmCmdToExecute.CommandText = "dbo.SP_Restore_Notizen" scmCmdToExecute.CommandType = CommandType.StoredProcedure scmCmdToExecute.Connection = conn.scoDBConnection scmCmdToExecute.Connection.Open() 'Restore der alten notizen For i = 0 To Save_Notizen.Rows.Count - 1 Try scmCmdToExecute.Parameters.Clear() scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Notizen.Rows(i).Item("dokumentid"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@notiznr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Notizen.Rows(i).Item("notiznr"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@betreff", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Notizen.Rows(i).Item("betreff"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@value", SqlDbType.VarChar, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Notizen.Rows(i).Item("notiz"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutiertam", SqlDbType.DateTime, 8, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Notizen.Rows(i).Item("mutiert_am"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutierer", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Notizen.Rows(i).Item("mutierer"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@aktiv", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Notizen.Rows(i).Item("aktiv"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@fnkt", SqlDbType.Int, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 1)) scmCmdToExecute.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) Throw New Exception("Dokument_Information_Wert::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex) Finally End Try Next 'Löschen der neuen Notizen nnr = 0 For i = 0 To Save_Notizen.Rows.Count - 1 If Save_Notizen.Rows(i).Item("notiznr") > nnr Then nnr = Me.Save_Notizen.Rows(i).Item("notiznr") Next Try scmCmdToExecute.Parameters.Clear() scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.DokumentID)) scmCmdToExecute.Parameters.Add(New SqlParameter("@notiznr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, nnr)) scmCmdToExecute.Parameters.Add(New SqlParameter("@betreff", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, "")) scmCmdToExecute.Parameters.Add(New SqlParameter("@value", SqlDbType.VarChar, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, "")) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutiertam", SqlDbType.DateTime, 8, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Microsoft.VisualBasic.Now)) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutierer", SqlDbType.VarChar, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0)) scmCmdToExecute.Parameters.Add(New SqlParameter("@aktiv", SqlDbType.VarChar, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0)) scmCmdToExecute.Parameters.Add(New SqlParameter("@fnkt", SqlDbType.VarChar, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 2)) scmCmdToExecute.ExecuteNonQuery() Catch ex As Exception Throw New Exception("Dokument_Information_Wert::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex) Finally End Try scmCmdToExecute.Connection.Close() scmCmdToExecute.Dispose() End Sub Private Sub Restore_Coldindex() Dim i As Integer Dim nnr As Long Dim scmCmdToExecute As SqlCommand = New SqlCommand() scmCmdToExecute.CommandText = "dbo.SP_Restore_ColdIndex" scmCmdToExecute.CommandType = CommandType.StoredProcedure scmCmdToExecute.Connection = conn.scoDBConnection scmCmdToExecute.Connection.Open() If Me.CreateDoc = True Then 'Coldindexwerte bei neuem Dokument löschen Try scmCmdToExecute.Parameters.Clear() scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.DokumentID)) scmCmdToExecute.Parameters.Add(New SqlParameter("@coldindexwertnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0)) scmCmdToExecute.Parameters.Add(New SqlParameter("@value", SqlDbType.VarChar, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, "")) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutiertam", SqlDbType.DateTime, 8, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Now)) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutierer", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0)) scmCmdToExecute.Parameters.Add(New SqlParameter("@aktiv", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0)) scmCmdToExecute.Parameters.Add(New SqlParameter("@fnkt", SqlDbType.Int, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 2)) scmCmdToExecute.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) Throw New Exception("Restore Coldindex - Delete::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex) Finally scmCmdToExecute.Connection.Close() scmCmdToExecute.Dispose() End Try Exit Sub End If 'Restore der alten Indexwerte For i = 0 To Save_ColdIndex.Rows.Count - 1 Try scmCmdToExecute.Parameters.Clear() scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_ColdIndex.Rows(i).Item("dokumentid"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@coldindexwertnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_ColdIndex.Rows(i).Item("coldindexwertnr"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@value", SqlDbType.VarChar, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_ColdIndex.Rows(i).Item("wert"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutiertam", SqlDbType.DateTime, 8, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_ColdIndex.Rows(i).Item("mutiert_am"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutierer", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_ColdIndex.Rows(i).Item("mutierer"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@aktiv", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_ColdIndex.Rows(i).Item("aktiv"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@fnkt", SqlDbType.Int, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 1)) scmCmdToExecute.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) Throw New Exception("Restore Coldindex::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex) Finally End Try Next scmCmdToExecute.Connection.Close() scmCmdToExecute.Dispose() End Sub Private Sub Restore_Dokumentwerte() Dim i As Integer Dim nnr As Long Dim scmCmdToExecute As SqlCommand = New SqlCommand() scmCmdToExecute.CommandText = "dbo.SP_Restore_Dokumentwerte" scmCmdToExecute.CommandType = CommandType.StoredProcedure scmCmdToExecute.Connection = conn.scoDBConnection scmCmdToExecute.Connection.Open() If Me.CreateDoc = True Then 'Coldindexwerte bei neuem Dokument löschen Try scmCmdToExecute.Parameters.Clear() scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.DokumentID)) scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentinfonr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0)) scmCmdToExecute.Parameters.Add(New SqlParameter("@value", SqlDbType.VarChar, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, "")) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutiertam", SqlDbType.DateTime, 8, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Now)) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutierer", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0)) scmCmdToExecute.Parameters.Add(New SqlParameter("@aktiv", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0)) scmCmdToExecute.Parameters.Add(New SqlParameter("@fnkt", SqlDbType.Int, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 2)) scmCmdToExecute.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) Throw New Exception("Restore Coldindex - Delete::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex) Finally scmCmdToExecute.Connection.Close() scmCmdToExecute.Dispose() End Try Exit Sub End If 'Restore der alten Indexwerte For i = 0 To Save_Dokumentwerte.Rows.Count - 1 Try scmCmdToExecute.Parameters.Clear() scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Dokumentwerte.Rows(i).Item("dokumentid"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentinfonr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Dokumentwerte.Rows(i).Item("dokumentinfonr"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@value", SqlDbType.VarChar, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Dokumentwerte.Rows(i).Item("inhalt"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutiertam", SqlDbType.DateTime, 8, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Dokumentwerte.Rows(i).Item("mutiert_am"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutierer", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Dokumentwerte.Rows(i).Item("mutierer"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@aktiv", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Dokumentwerte.Rows(i).Item("aktiv"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@fnkt", SqlDbType.Int, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 1)) scmCmdToExecute.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) Throw New Exception("Restore Coldindex::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex) Finally End Try Next scmCmdToExecute.Connection.Close() scmCmdToExecute.Dispose() End Sub Private Sub Restore_InfoEmpfaenger() Dim i As Integer Dim nnr As Long Dim scmCmdToExecute As SqlCommand = New SqlCommand() scmCmdToExecute.CommandText = "dbo.SP_Restore_DokumentInfoEmpfaenger" scmCmdToExecute.CommandType = CommandType.StoredProcedure scmCmdToExecute.Connection = conn.scoDBConnection scmCmdToExecute.Connection.Open() For i = 0 To Save_Dokumentinfomeldungen.Rows.Count - 1 Try scmCmdToExecute.Parameters.Clear() scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Dokumentinfomeldungen.Rows(i).Item("dokumentid"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentinfomeldungnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Dokumentinfomeldungen.Rows(i).Item("dokumentinfomeldungnr"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@empfaenger", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Dokumentinfomeldungen.Rows(i).Item("empfaengernr"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@value", SqlDbType.VarChar, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Dokumentinfomeldungen.Rows(i).Item("inhalt"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@meldungnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Dokumentinfomeldungen.Rows(i).Item("meldungstext"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@beistatus", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Dokumentinfomeldungen.Rows(i).Item("beistatus"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutiertam", SqlDbType.DateTime, 8, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Dokumentinfomeldungen.Rows(i).Item("mutiert_am"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutierer", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Dokumentinfomeldungen.Rows(i).Item("mutierer"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@aktiv", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Dokumentinfomeldungen.Rows(i).Item("aktiv"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@fnkt", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 1)) scmCmdToExecute.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) Throw New Exception("Restore Coldindex - Delete::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex) Finally End Try Next i 'Löschen der neuen InfoEmpfänger Dim nn As Integer nnr = 0 For i = 0 To Save_Dokumentinfomeldungen.Rows.Count - 1 If Save_Dokumentinfomeldungen.Rows(i).Item("dokumentinfomeldungnr") > nnr Then nnr = Me.Save_Dokumentinfomeldungen.Rows(i).Item("dokumentinfomeldungnr") Next Try scmCmdToExecute.Parameters.Clear() scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.DokumentID)) scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentinfomeldungnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, nnr)) scmCmdToExecute.Parameters.Add(New SqlParameter("@empfaenger", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0)) scmCmdToExecute.Parameters.Add(New SqlParameter("@value", SqlDbType.VarChar, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, "")) scmCmdToExecute.Parameters.Add(New SqlParameter("@meldungnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0)) scmCmdToExecute.Parameters.Add(New SqlParameter("@beistatus", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0)) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutiertam", SqlDbType.DateTime, 8, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Now)) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutierer", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0)) scmCmdToExecute.Parameters.Add(New SqlParameter("@aktiv", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0)) scmCmdToExecute.Parameters.Add(New SqlParameter("@fnkt", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 2)) scmCmdToExecute.ExecuteNonQuery() Catch ex As Exception Throw New Exception("Dokument_Infoempfänger::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex) Finally End Try scmCmdToExecute.Connection.Close() scmCmdToExecute.Dispose() End Sub Private Sub Restore_dokumentzuordnungen() 'Sofern keine Notizen vorhanden sind, Sub verlassen Dim i As Integer Dim nnr As Long Dim scmCmdToExecute As SqlCommand = New SqlCommand() scmCmdToExecute.CommandText = "dbo.SP_Restore_Dokumentzuordnungen" scmCmdToExecute.CommandType = CommandType.StoredProcedure scmCmdToExecute.Connection = conn.scoDBConnection scmCmdToExecute.Connection.Open() 'Restore der alten notizen For i = 0 To Save_Dokumentzuordnungen.Rows.Count - 1 Try scmCmdToExecute.Parameters.Clear() scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid1", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Dokumentzuordnungen.Rows(i).Item("dokumentid1"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid2", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Dokumentzuordnungen.Rows(i).Item("dokumentid2"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentzuordnungnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Dokumentzuordnungen.Rows(i).Item("nreintrag"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutiertam", SqlDbType.DateTime, 8, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Dokumentzuordnungen.Rows(i).Item("mutiert_am"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutierer", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Dokumentzuordnungen.Rows(i).Item("mutierer"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@zuordnungnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Dokumentzuordnungen.Rows(i).Item("zuordnungnr"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@aktiv", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_Dokumentzuordnungen.Rows(i).Item("aktiv"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@fnkt", SqlDbType.Int, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 1)) scmCmdToExecute.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) Throw New Exception("Dokument_Information_Wert::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex) Finally End Try Next 'Löschen der neuen Notizen nnr = 0 For i = 0 To Save_Dokumentzuordnungen.Rows.Count - 1 If Save_Dokumentzuordnungen.Rows(i).Item("nreintrag") > nnr Then nnr = Me.Save_Dokumentzuordnungen.Rows(i).Item("nreintrag") Next Try scmCmdToExecute.Parameters.Clear() scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid1", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.DokumentID)) scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid2", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, "")) scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentzuordnungnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, nnr)) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutiertam", SqlDbType.DateTime, 8, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Now)) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutierer", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0)) scmCmdToExecute.Parameters.Add(New SqlParameter("@zuordnungnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0)) scmCmdToExecute.Parameters.Add(New SqlParameter("@aktiv", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0)) scmCmdToExecute.Parameters.Add(New SqlParameter("@fnkt", SqlDbType.Int, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 2)) scmCmdToExecute.ExecuteNonQuery() Catch ex As Exception Throw New Exception("Dokument_Information_Wert::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex) Finally End Try scmCmdToExecute.Connection.Close() scmCmdToExecute.Dispose() End Sub Private Sub Restore_Dokumentfunktionen() 'Sofern keine dokumentfunktionen vorhanden sind, Sub verlassen Dim i As Integer Dim nnr As Long Dim scmCmdToExecute As SqlCommand = New SqlCommand() scmCmdToExecute.CommandText = "dbo.SP_Restore_Dokumentfunktionen" scmCmdToExecute.CommandType = CommandType.StoredProcedure scmCmdToExecute.Connection = conn.scoDBConnection scmCmdToExecute.Connection.Open() 'Restore der alten dokumentfunktionen For i = 0 To Save_DokumentFunktionen.Rows.Count - 1 Try scmCmdToExecute.Parameters.Clear() scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_DokumentFunktionen.Rows(i).Item("dokumentid"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentfunktiongruppenr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_DokumentFunktionen.Rows(i).Item("dokumentfunktiongruppenr"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutiertam", SqlDbType.DateTime, 8, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_DokumentFunktionen.Rows(i).Item("mutiert_am"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutierer", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_DokumentFunktionen.Rows(i).Item("mutierer"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@aktiv", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Save_DokumentFunktionen.Rows(i).Item("aktiv"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@fnkt", SqlDbType.Int, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 1)) scmCmdToExecute.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) Throw New Exception("Dokument_Information_Wert::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex) Finally End Try Next 'Löschen der neuen dokumentfunktionen nnr = 0 For i = 0 To Save_DokumentFunktionen.Rows.Count - 1 If Save_DokumentFunktionen.Rows(i).Item("dokumentfunktiongruppenr") > nnr Then nnr = Me.Save_DokumentFunktionen.Rows(i).Item("dokumentfunktiongruppenr") Next Try scmCmdToExecute.Parameters.Clear() scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.DokumentID)) scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentfunktiongruppenr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, nnr)) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutiertam", SqlDbType.DateTime, 8, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Microsoft.VisualBasic.Now)) scmCmdToExecute.Parameters.Add(New SqlParameter("@mutierer", SqlDbType.VarChar, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0)) scmCmdToExecute.Parameters.Add(New SqlParameter("@aktiv", SqlDbType.VarChar, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0)) scmCmdToExecute.Parameters.Add(New SqlParameter("@fnkt", SqlDbType.VarChar, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 2)) scmCmdToExecute.ExecuteNonQuery() Catch ex As Exception Throw New Exception("Dokument_Information_Wert::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex) Finally End Try scmCmdToExecute.Connection.Close() scmCmdToExecute.Dispose() End Sub Private Sub Restore_Statushistory() Dim scmCmdToExecute As SqlCommand = New SqlCommand() scmCmdToExecute.CommandText = "dbo.SP_Restore_statushistory" scmCmdToExecute.CommandType = CommandType.StoredProcedure scmCmdToExecute.Connection = conn.scoDBConnection scmCmdToExecute.Connection.Open() Try scmCmdToExecute.Parameters.Clear() scmCmdToExecute.Parameters.Add(New SqlParameter("@statushistorynr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.save_historystatus)) scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.DokumentID)) scmCmdToExecute.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) Throw New Exception("Restore Coldindex - Delete::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex) Finally scmCmdToExecute.Connection.Close() scmCmdToExecute.Dispose() End Try End Sub Private Sub delete_dokumentstatus() Dim scmCmdToExecute As SqlCommand = New SqlCommand() scmCmdToExecute.CommandText = "dbo.SP_Restore_delete_dokumentstatus" scmCmdToExecute.CommandType = CommandType.StoredProcedure scmCmdToExecute.Connection = conn.scoDBConnection scmCmdToExecute.Connection.Open() Try scmCmdToExecute.Parameters.Clear() scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.DokumentID)) scmCmdToExecute.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) Throw New Exception("Restore Coldindex - Delete::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex) Finally scmCmdToExecute.Connection.Close() scmCmdToExecute.Dispose() End Try End Sub Private Sub Restore_Dokumentersetzen() 'Sofern keine dokumentfunktionen vorhanden sind, Sub verlassen Dim i As Integer Dim nnr As Long Dim scmCmdToExecute As SqlCommand = New SqlCommand() scmCmdToExecute.CommandText = "dbo.SP_Restore_Dokumentersetzen" scmCmdToExecute.CommandType = CommandType.StoredProcedure scmCmdToExecute.Connection = conn.scoDBConnection scmCmdToExecute.Connection.Open() 'Restore der alten dokumentfunktionen For i = 0 To save_dokumentersetzen.Rows.Count - 1 Try scmCmdToExecute.Parameters.Clear() scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentersetzennr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, save_dokumentersetzen.Rows(i).Item("dokumentersetzennr"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@hauptdokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.DokumentID)) scmCmdToExecute.Parameters.Add(New SqlParameter("@aktiv", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, save_dokumentersetzen.Rows(i).Item("aktiv"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@fnkt", SqlDbType.Int, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 1)) scmCmdToExecute.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) Throw New Exception("Dokument_Information_Wert::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex) Finally End Try Next 'Löschen der neuen dokumentfunktionen nnr = 0 For i = 0 To save_dokumentersetzen.Rows.Count - 1 If save_dokumentersetzen.Rows(i).Item("dokumentersetzennr") > nnr Then nnr = Me.save_dokumentersetzen.Rows(i).Item("dokumentersetzennr") Next Try scmCmdToExecute.Parameters.Clear() scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentersetzennr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, nnr)) scmCmdToExecute.Parameters.Add(New SqlParameter("@hauptdokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.DokumentID)) scmCmdToExecute.Parameters.Add(New SqlParameter("@aktiv", SqlDbType.VarChar, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0)) scmCmdToExecute.Parameters.Add(New SqlParameter("@fnkt", SqlDbType.VarChar, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 2)) scmCmdToExecute.ExecuteNonQuery() Catch ex As Exception Throw New Exception("Dokument_Information_Wert::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex) Finally End Try scmCmdToExecute.Connection.Close() scmCmdToExecute.Dispose() End Sub #End Region #Region "TM-Prüfung" Dim ofile As System.IO.File Dim oread As System.IO.TextWriter Public Sub Check_Doks() oread = ofile.CreateText("c:\tm.txt") Dim dokt As New edokadb.clsDokumenttyp() dokt.cpMainConnectionProvider = conn 'conn.OpenConnection() Dim da As DataTable da = dokt.SelectAll() Dim a As Long a = InputBox("Ab Dokumenttypnr") Dim i As Integer For i = 0 To da.Rows.Count - 1 If da.Rows(i).Item("aktiv") = True And da.Rows(i).Item("dokumenttypnr") > a And da.Rows(i).Item("Dokument_wird_erstellt") = True Then Me.Dokumenttypnr = da.Rows(i).Item("dokumenttypnr") oread.WriteLine("------->" + Str(da.Rows(i).Item("dokumenttypnr")) + " " + da.Rows(i).Item("bezeichnung")) oread.Flush() check_word() End If Next oread.Close() End Sub Public Sub check_word() 'Office-Vorlage auslesen DokumenTtyp.cpMainConnectionProvider = conn DokumenTtyp.iDokumenttypnr = New SqlInt32(CType(Me.Dokumenttypnr, Int32)) DokumenTtyp.SelectOne() Office_Vorlage.cpMainConnectionProvider = conn Office_Vorlage.iOffice_vorlagenr = DokumenTtyp.iOffice_vorlagenr Office_Vorlage.SelectOne() If Office_Vorlage.iAnwendungnr.Value = 2 Then Exit Sub End If 'Temporär-Datei Dokument_Temp = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("pfad_temporaer_dokumente") Dokument_Temp = Dokument_Temp + Office_Vorlage.sPrefix_dokumentname.Value + ".doc" 'Nativ-Dokumentvorlage If Not Office_Vorlage.bIdv_vorlage.Value = True Then Else Dokumentfilename = "c:\edokatemp\wordcheck.doc" Create_IDVDokument(Office_Vorlage.sIdv_id.Value) End If IsProtected = False If docWord.ProtectionType <> WdProtectionType.wdNoProtection Then docWord.Unprotect(password:=Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("passwort_wordvorlagen")) IsProtected = True End If Dim i As Integer For i = 1 To docWord.Bookmarks.Count If InStr(docWord.Bookmarks.Item(i).Name, "Betreuer") > 0 Then oread.WriteLine(DokumenTtyp.sBezeichnung.Value + " - " + docWord.Bookmarks.Item(i).Name) End If Next docWord.Close() objWord.Quit() docWord = Nothing objWord = Nothing End Sub #End Region #Region "Etiketten" Public Function Create_Labels() StartWord() docWord = objWord.Documents.Add objWord.MailingLabel.DefaultPrintBarCode = False objWord.MailingLabel.CreateNewDocument(Name:="Herma 4611", Address:="", AutoText:="") objWord.Visible = True docWord = Nothing docWord = objWord.ActiveDocument Dim bc As New edokadb.clsBarcodeetikette() Dim i As Integer Dim i1 As Integer Dim keys As New edokadb.clsMyKey_Tabelle() Dim key As Long Dim defkey As String Dim yy As String i1 = 0 bc.cpMainConnectionProvider = conn For i = 0 To 50 keys.cpMainConnectionProvider = conn key = keys.get_dbkey("barcodeetikette") defkey = LTrim(key) While Len(defkey) < 7 defkey = "0" + defkey End While yy = LTrim(Str(Year(Now))) yy = Right(yy, 2) defkey = yy + defkey defkey = defkey + LTrim(Pruefziffer(defkey)) bc.iBarcodenr = New SqlInt32(CType(defkey, Int32)) bc.sDokumentid = New SqlString(CType("", String)) bc.bAktiv = New SqlBoolean(CType(True, Boolean)) bc.daErstellt_am = New SqlDateTime(CType(Now, DateTime)) bc.daMutiert_am = New SqlDateTime(CType(Now, DateTime)) bc.iMandantnr = New SqlInt32(CType(Globals.MandantNr, Int32)) bc.iMutierer = New SqlInt32(CType(Globals.MitarbeiterNr, Int32)) conn.OpenConnection() bc.Insert() conn.CloseConnection(True) defkey = Bar25I(defkey) objWord.Selection.TypeText(defkey) objWord.Selection.HomeKey(unit:=Word.WdUnits.wdLine, extend:=Word.WdMovementType.wdExtend) objWord.Selection.Font.Name = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("barcode_font") objWord.Selection.Font.Size = 38 objWord.Selection.MoveRight(Unit:=Word.WdUnits.wdCharacter, Count:=1) i1 = i1 + 1 If i1 = 3 Then If i < 49 Then objWord.Selection.MoveDown(unit:=Word.WdUnits.wdLine, count:=1) objWord.Selection.MoveLeft(unit:=Word.WdUnits.wdCharacter, count:=2) i1 = 0 End If Else objWord.Selection.MoveRight(Unit:=Word.WdUnits.wdCharacter, Count:=1) End If Next objWord.Selection.PageSetup.TopMargin = 0 objWord.Selection.PageSetup.LeftMargin = 10 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 #Region "Enabel / Disable" Public Sub Disable_Enable_MenuFunctions(ByVal Enable As Boolean) On Error Resume Next Dim cmdctrl As Object Dim i As Integer On Error Resume Next For i = 1 To objWord.CommandBars.Count objWord.CommandBars(i).Reset() Next For Each cmdctrl In objWord.CommandBars.FindControls(ID:=18) cmdctrl.enabled = Enable Next cmdctrl For Each cmdctrl In objWord.CommandBars.FindControls(ID:=23) cmdctrl.enabled = Enable Next cmdctrl For Each cmdctrl In objWord.CommandBars.FindControls(ID:=748) cmdctrl.enabled = Enable Next cmdctrl For Each cmdctrl In objWord.CommandBars.FindControls(ID:=3823) cmdctrl.enabled = Enable Next cmdctrl For Each cmdctrl In objWord.CommandBars.FindControls(ID:=30095) cmdctrl.enabled = Enable Next cmdctrl For Each cmdctrl In objWord.CommandBars.FindControls(ID:=797) cmdctrl.enabled = Enable Next cmdctrl For Each cmdctrl In objWord.CommandBars.FindControls(ID:=777) cmdctrl.enabled = Enable Next cmdctrl For Each cmdctrl In objWord.CommandBars.FindControls(ID:=30017) cmdctrl.enabled = Enable Next cmdctrl For Each cmdctrl In objWord.CommandBars.FindControls(ID:=30045) cmdctrl.enabled = Enable Next cmdctrl objWord.NormalTemplate.Saved = True End Sub Public Function ResetFunctions() StartWord() Disable_Enable_MenuFunctions(True) objWord.Visible = True End Function #End Region End Class