CompressPartsDatabase

Update

Frank Schöneck, 01.06.2012 V2.0.0

  • Eplan eigene Action für CompressDataBase verwendet.
  • Script kann geladen oder ausgeführt werden.

Danke nochmal an Frank!

 

Anbei ein kleines Script, welches unter Dienstprogramme/Artikel einen Menüpunkt “Artikeldatenbank komprimieren” hinzufügt. Das ganze funktioniert nur in Verbindung einer Access-Artikeldatenbank (Eplan-Standard) funktioniert.

Wenn die Komprimierung durchgeführt wird darf kein anderer Anwender auf die Datenbank zugreifen.

Durch die Kompression verringert sich die Größe enorm und die Geschwindigkeit nimmt zu :w00t:

Vielen Dank an FrankS!

CompressPartsDatabase 2.0.0 (1380 Downloads)

 

Posted in EPLAN, EPLAN-Scripts and tagged , .

10 Comments

  1. Hallo Jonny,
    funktioniert dieses auch mir den 2.0.? versionen?
    Ab 2.0 ändert sich ja die Artikeldatenbank.
    Bitt um Info.
    Danke
    Gruß Harald
    PS: Hast eine geile Seite, weiter so :smile:

  2. Kann grad nicht testen… aber müsste gehen.
    Lege dir eine Testdatenbank an und importiere mal Artikel.
    Stelle diese Datenbank in P8 ein und teste das Tool und sag uns obs geht :)
    Aber wie gesagt müsste es gehen da es auf die Datei über Access zugreift und nicht über EPLAN.

    Danke für das Lob! Man(n) freut sich immer darüber!

  3. Also die Datei hat sich von 86MB auf 34MB verkleinert, wenn dann noch alles funktioniert, dann :smile:
    Was komprimiert dieses Script eigentlich in der Artikeldatenbank?

  4. Eine Access Datenbank enthält viele temporäre Daten welche leider nicht automatisch entfernt werden (sql ist da besser).
    Kannst mal danach googlen, da gibt es ausführliche Beschreibungen was der Vorgang macht!

  5. Bei mir kommt die Meldung in EPLAN “Es wurde keine öffentliche Funktion mit dem Attribut [Start] deklariert.”

  6. Du musst das Script laden…
    Nicht ausführen.

    Gruß
    Johann

  7. Hallo Jonny,

    ich habe eine neue Version des Script erstellt,
    – es wird nun eine EPLAN eigene Action zum komprimieren verwendet.
    – Das Script kann nun entweder geladen oder ausgeführt werden.

    Gruß
    FrankS

    hier das Script:

    ' CompressPartsDatabase, Version 2.0.0, vom 01.06.2012
    '
    ' Führt eine Komprimierung der aktuell eingestellten Artikeldatenbank durch.
    ' Es wird eine Sicherheitskopie mit der Dateiendung '.Backup' angelegt.
    '
    ' Copyright by Frank Schöneck, 2009
    ' letzte Änderung: Frank Schöneck, 31.08.2009 V1.0.0
    '                  Frank Schöneck, 01.06.2012 V2.0.0, -Eplan eigene Action für CompressDataBase verwendet.
    '                                                     -Script kann geladen oder ausgeführt werden.
    '
    ' für Eplan Electric P8, ab V2.1.6
    '
    
    Imports System.IO
    
    Public Class CompressPartsDatabase
    	 _
    	Public Sub MyFunction()
    		CompressPartsDatabase()
    	End Sub
    
    	 _
    	Public Sub CompressPartsDatabase_Menu()
    		Dim oMenu As New Eplan.EplApi.GUI.Menu()
    		oMenu.AddMenuItem("Artikeldatenbank komprimieren...", "CompressPartsDatabase", "Es wird die aktuell eingestellte Artikeldatenbank komprimiert", 35177, 1, True, False)
    	End Sub
    
    	 _
    	Public Sub CompressPartsDatabase()
    
    		Dim oSettings As New Eplan.EplApi.Base.Settings()
    		Dim DatabaseName As String
    		Dim DatabaseNameBackup As String
    		Dim Result As DialogResult
    		Dim boReturn As Boolean
    		Dim NewLine As String = Environment.NewLine
    		Dim Meldung As String
    
    		'Einstellung 'Artikeldatenbank' auslesen
    		DatabaseName = oSettings.getStringSetting("USER.PartsManagementGui.Database", 0)
    
    		'Variablen auslesen und ersetzen
    		DatabaseName = PathMap.SubstitutePath(DatabaseName)
    
    		'Namen der Backup-Datei festlegen
    		DatabaseNameBackup = DatabaseName & ".Backup"
    
    		'Sicherheitsabfrage
    		Meldung = "Soll die folgende Artikeldatenbank komprimiert werden?" & NewLine
    		Meldung &= NewLine
    		Meldung &= "'" & DatabaseName & "'" & NewLine
    		Meldung &= NewLine
    		Meldung &= "(Es wird im gleichen Ordner eine Sicherheitskopie mit der Dateiendung 'Backup' angelegt.)" & NewLine
    		Result = MessageBox.Show(Meldung, "CompressPartsDatabase", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    
    		If Result = System.Windows.Forms.DialogResult.Yes Then
    			'Cursur Warten anzeigen
    			System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor
    
    			'Artikeldatenbank komprimieren
    			boReturn = CompressParts(DatabaseName, DatabaseNameBackup)
    
    			'Cursor wieder Standard
    			System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default
    
    			'Ergebnismeldung anzeigen
    			If boReturn = True Then
    				Meldung = "Das komprimieren der Artikeldatenbank wurde erfolgreich durchgeführt." & NewLine
    				Meldung &= NewLine
    				Meldung &= "Dateigröße vorher: " & GetFileSize(DatabaseNameBackup) & NewLine
    				Meldung &= "Dateigröße nachher: " & GetFileSize(DatabaseName) & NewLine
    				MessageBox.Show(Meldung, "CompressPartsDatabase, Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
    			ElseIf boReturn = False Then
    				MessageBox.Show("Das komprimieren der Artikeldatenbank konnte nicht erfolgreich durchgeführt werden!", "CompressPartsDatabase, Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    			End If
    		End If
    
    	End Sub
    
    	'Artikeldatenbank komprimieren
    	Private Function CompressParts(ByVal DatabaseFilename As String, ByVal DatabaseFilenameBackup As String) As Boolean
    		Try
    			Dim cmdLineItp As New CommandLineInterpreter()
    			Dim ACC As New ActionCallingContext
    			Dim overwrite As Boolean = True
    
    			'Backup anlegen
    			File.Copy(DatabaseFilename, DatabaseFilenameBackup, overwrite)
    
    			'PartsDatabase komprimieren
    			ACC.AddParameter("Database", DatabaseFilename)
    			cmdLineItp.Execute("XPamCompactDatabase", ACC)
    
    			Return True
    		Catch ex As Exception
    			MessageBox.Show(ex.InnerException.ToString(), "CompressParts, Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    			Return False
    		End Try
    		Return False
    	End Function
    
    	'Anzeige der Dateigröße formatieren
    	Private Function GetFileSize(ByVal path As String) As String
    		Dim myFile As FileInfo
    		Dim mySize As Single
    
    		Try
    			myFile = New FileInfo(path)
    			If Not myFile.Exists Then
    				mySize = 0
    			Else
    				mySize = myFile.Length
    			End If
    			Select Case mySize
    				Case 0 To 1023
    					Return Microsoft.VisualBasic.Format(mySize, "#,###") & " Bytes"
    				Case 1024 To 1048575
    					Return Microsoft.VisualBasic.Format(mySize / 1024, "#,###0.00") & " KB  (" & Microsoft.VisualBasic.Format(mySize, "#,###") & " Bytes)"
    				Case 1048576 To 1043741823
    					Return Microsoft.VisualBasic.Format(mySize / 1024 ^ 2, "#,###0.00") & " MB  (" & Microsoft.VisualBasic.Format(mySize, "#,###") & " Bytes)"
    				Case Is > 1043741824
    					Return Microsoft.VisualBasic.Format(mySize / 1024 ^ 3, "#,###0.00") & " GB  (" & Microsoft.VisualBasic.Format(mySize, "#,###") & " Bytes)"
    			End Select
    			Return "0 bytes"
    		Catch ex As Exception
    			Return "0 bytes"
    		End Try
    
    	End Function
    
    End Class
    
  8. Ich sehe gerade der Code:VB wird nicht korrekt dargestellt,
    die Dinge in “” fehlen :wassat:

    Ich schicke dir das Script per Mail, kannst es dann hier zu Verfügung stellen.

    FrankS

  9. Ich weiß :cwy:
    Wordpress hat hier Probleme mit dem VB-Code.
    Ist eher ein Sicherheits-Feature, damit keiner PHP-Code auslösen / ausführen kann.
    Schicks mir einfach dann mach ich ein Update :biggrin:

    Gruß
    Johann

  10. Pingback: Сжатие Базы Данных Изделий Eplan P8 | Eplan For All

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

This site uses Akismet to reduce spam. Learn how your comment data is processed.