Kategorie: Programmierung

Die Hauptkategorie für alle Programmiersprachen

Powershell: Alle Verzeichnisse in einem Quellverzeichnis in ein ZIP Archiv packen

Beschreibung:

Immer wieder benötigt. Schnell  und einfach viele Verzeichnisse in separate ZIP Archive packen. Da ist doch die Powershell wie geschaffen dafür. Also schnell die Variablen befüllt. Die Dateien ermitteln. Prüfen ob es ein Verzeichnis ist und dann mit 7Zip das ganze über cmd in ein Archiv packen. Fertig.

Code:

Download:

Klick für Download

Powershell: Bildschirmbereich mit GetBufferContents sichern und wieder herstellen

Beschreibung:

Da ich ein Fan der Konsole bin und gerne mehr mit Powershell  erledigen möchte , habe ich mich auf die Suche gemacht, komfortable Werte abzufragen in Form eines Formulars. Klar ich kann mit Tools mit eine GUI zusammenbasteln und auf die Ereignisse reagieren. Aber dann befinde ich mich schon wieder außerhalb der Konsole. Also was tun.

Ich habe also angefangen ein Formulartool für die Shell zu erstellen. Was bis dato auch schon super funktioniert. Aber da ich auch Auswahlfelder haben möchte, bin auf das Problem gestoßen, da ich beim Einblenden der möglichen Werte, andere Feldbreiche überschreibe. Also muss ich vor dem Einblenden den Bereich, in dem ich die Werte einlebenden möchte, zwischenspeichern. Dazu habe ich die Funktion GetBackGround geschrieben die mit der Funktion GetBufferContents einen Bereich sichert.

Ich gebe als Parameter die linke obere und die rechte untere Ecke als Koordinaten an. Dann sichert mir die Funktion den Inhalt und gibt sie mir zurück.

Ich fühle mich, irgendwie wie in alte DOS Zeiten versetzt. Die ersten Programmier Erfahrungen mit Fenstertechnik unter Turbo Basic und Dos.

Mit der Funktion SetBackGround wird der gesicherte Inhalt einfach wieder an der Ursprungsposition ausgegeben. Weitere Funktionen rund um mein Powershell Formulartool für die Shell werde ich zu einem späteren Zeitpunkt hier veröffentlichen.

Funktion GetBackGround:

Parameter:

Parametername Parameterwert
intLeft Spalte der linken oberen Ecke (beginnt mit 0)
intTop Zeile der linken oberen Ecke (beginnt mit 0)
intRight Spalte der rechten unteren Ecke
intBottom Zeile der rechten unteren Ecke

Rückgabe:

Rückgabetyp Rückgabewerte
Array [0] = CursorPosition der linken oberen Ecke
[1] = Array der Daten die gesichert wurden inkl. Farbwerten

Code:

Funktion GetbackGround:

Parameter:

Parametername Parameterwert
objData Array mit Daten
[0] = CursorPosition der linken oberen Ecke
[1] = Array der Daten die gesichert wurden inkl. Farbwerten

Code:

Beispiel:

Download:

Download Button Powershell ScriptKlick für Download

VB MSAccess Code Logo 64x64

VBA Access: Klasse mit Treeview um Daten auszuwählen bzw. zu bearbeiten

Beschreibung:

Immer wieder benötige ich in meinen Access Datenbanken ein Treeview. Und jedes Mal muss ich erneut herausfinden wie es funktioniert. Und jedes Mal ärgere ich mich darüber, dass man das Treeview nicht einfach werden kann. Also was machen? Eine Klasse, das wäre nett!
Als ein bisschen darüber nachgedacht und losgelegt. Und herausgekommen ist die Klasse die ich hier euch vorstellen möchte.

TreeView Bearbeiten Beispiel
TreeView Bearbeiten Beispiel

Ich Garantiere keine Einwandfreie Funktion der Klasse. Denn es gibt dort zurzeit noch keine Fehlerbehandlung. Und sicherlich habe ich nicht alles berücksichtigt. Aber wer Fehler findet, Anregungen hat, kann sie gerne als Kommentar hier hinterlassen. Ich werde sie lesen und dann versuchen aus umzusetzen. Das kann aber auch mal 1 – 4 Wochen dauern. Ich schaue nicht jeden Tag auf meiner Webseite vorbei, denn als erstes kommt die Familie, dann die Arbeit, dann die Freunde, dann der Verein und dann kommt diese Webseite mit vielen anderen Projekten.

Update Informationen

20.10.2017 Der Rückgabewert muss nicht gleich dem Feld dbFieldKey sein. Es kann ein anderes Feld zurückgegeben werden, welches zum Beispiel UID enthält.

Also, was kann die Klasse bis jetzt?

Daten einer Tabelle im Treeview anzeigen. Dazu muss in der Tabelle jedes Element eine ID haben. Elemente die einem anderen Element untergeordnet werden, müssen ein Feld besitzen, wo die Vater ID gespeichert wird.

Diese 4 Informationen wie Tabellenname, ID, Vater ID und Feldnamen mit den Anzeigename reichen aus um das Treeview zu bearbeiten bzw. Daten auszuwählen. Die Tabelle samt Daten aus meiner Beispieldatenbank habe ich hier mal veröffentlicht.

CLIENT_ID ABTEILUNG_ID ABTEILUNG_NAME ABTEILUNG_ID_PARENT
1 1 Verkauf 0
1 2 Direktverkauf 1
1 3 Webshop 1
1 4 Großhandel 1
1 5 Produktion 0
1 6 Finanzen 0
1 7 Buchhaltung 6
1 8 Controlling 6
2 1 Fleisch 0
2 2 Milch 0
2 3 Mehl 0
2 4 Wurst 1
2 5 Salami 4
2 6 Schinken 4
2 7 Käse 2
2 8 Yogurt 2
2 9 Quark 2
2 10 Brot 3
2 11 Kuchen 3

Auch gibt es über die Funktion AddWhere die Möglichkeit die Daten zu selektieren. Damit wird einem die Möglichkeit gegeben Werte z.B. Mandantenfähig zu machen. Siehe in der Beispieldatenbank am Ende dieser Seite!

Um neue Werte hinzuzufügen, müssen ID Felder per Autowert, SQL Abfrage oder MAX(ID)+1 ermittelt werden. Das kann man individuell einstellen. Ich selber bevorzuge keine Autowerte, sondern nutze MAX(ID) + 1 um neue IDs zu ermitteln.

Nach einiger Recherche kann jetzt auch innerhalb des Treeview Einträge mittels Drag & Drop verschoben werden. Natürlich nur im Editiermodus!
Ganz wichtig. Jede Änderung der Daten, sei es löschen, editieren oder hinzufügen wird direkt in die Datenbank geschrieben!

Damit das Treeview Control auch funktioniert, muss der Verweis auf die MSCOMCTL.OCX (Microsoft Windows Common Controls 6.0) gesetzt werden.

Microsoft Access Verweis auf Microsoft Windows Common Controls 6.0
Microsoft Access Verweis auf Microsoft Windows Common Controls 6.0

Hier nun mein Test Routine mit der ich das ganze getestet habe!

Beispiel:

Parameter:

Parametername Parameterwert
Formname = String Optional:Name des Formulars. Default = „TreeView“
Treename = String Optional:Eingeblendeter Name des Trees. Das ist der Master Eintrag, der nicht vom User bearbeitet bzw. geändert werden kann.. Default = „TreeView“
dbTable = String Tabllenname / Abfrage aus dem die Einträge ausgelesen werden
dbFieldKey = String ID Feld mit der Eintrag eindeutigen identifiziert werden kann. Dieser Wert muss eine Zahl und vom Typ Autowert sein.
dbFieldViewName = String Der Inhalt dieses Feldes wird im Treeview als Inhalt verwendet.
dbParentKey = String Verweis auf ein Vaterelement. Ist Wert = 0 oder Null ist es ein Masterelement
dbFieldReturn = String Optional: Name des Feldes, welches den Rückgabewert enthält. Zum Beispiel für eine UID die automatisch vergeben wird.
CalcIDType = 1 .. 3 Optional: Bestimmt wie ein neuer Wert für das Feld dbFieldKey ermittelt wird.
1 = Autowert (Default)
2 = Max(dbFieldKey) + 1
3 = SQL Statement
CalcIDSQL Wenn in CalcIDType = 3 dann wird hier ein SQL Befehlt erwartet, in dem als Ergebnis das Feld dbFieldKey die neue ID ermittelt.
dbKZ = String Optional:Ein Kürzel, das zum Generieren der Temporären Keys fürs Treeview benötigt wird. Default = „KEY“
FormType = 1 .. 2 Beinhaltet den Wert 1 oder 2. 1 = Werte bearbeiten, 2 = Wert auswählen
AddWhere = Feldname, Wert, Feldtyp Ermöglicht Filter für die anzuzeigenden Werte anzugeben. Wie z.B. einen Mandanten, oder … .
Der Feldname beinhaltet das Feld aus Tabelle dbTable welcher den Wert Wert vom Typ Feldtyp haben soll. Als Feldtyp gibt es drei Werte:
1 = Text
2 = Nummer
3 = Datum/Uhrzeit

Es können beliebige Felder angefügt werden. Bis der Speicher des Computer überquillt.
GetWhere gibt AddWhere als Teil eines SQL Strings zurück
OpenTreeView Diese Funktion öffnet das Formular und lädt die Daten ins Treeview.
IsActive Diese Funktion prüft ob das Fenster noch geöffnet ist und gibt True oder False zurück.

Code:

Download:

Download Button MS SQL 64x64Klick für Download

Powershell: Dateien je nach Bearbeitungsdatum in ZIP Archiv überführen

Beschreibung:

Ein kleines Script welches in einem angegebenen Verzeichnis alle Dateien, die einem Filter entsprechen, in ein tägliches ZIP Archiv überführen. Berücksichtigt wird das Bearbeitungsdatum. Nach dem erfolgreichen hinzufügen zu einem Archiv wird die Original Datei gelöscht.

Entstanden ist das Script, da eine Anwendung die Logdateien von einem Programm meine Festplatte voll geschrieben haben.

Parameter:

Die Parameter werden im Script hinterlegt

Parametername Parameterwert
$strPath Pfad in dem nach den zu archivierenden Dateien gesucht werden soll
$intDays Bis wieviel Tage zum aktuellen Datum sollen die Dateien archiviert werden?
$strFilter Dateinamen Filter. (z.B. *.log)

Code:

Download:

Download Button Powershell 64x64Klick für Download

VBS Code Logo 64x64

VBS: Alle Dateinamen in einer angegebenen Verzeichnisstruktur in Kleinbuchstaben umwandeln (LowerCase)

Beschreibung:

Auf der Suche nach einem Tool (das ich nicht gefunden habe), der mir alle Dateinamen in einer angegebenen Verzeichnisstruktur (rekursiv) in Kleinbuchstaben umwandelt, habe ich diese Script geschrieben. (mehr …)

VBS Code Logo 64x64

VBS: Datei verschieben (MoveFile)

Beschreibung:

Eine Funktion zum verschieben einer Datei!

Parameter:

Parametername Parameterwert
strSource Quelldatei inkl. Pfad
strDestination Zieldatei inkl. Pfad

Code:

Download:

Download Button MS SQL 64x64Klick für Download

VB MSAccess Code Logo 64x64

VBA Access: Verzeichnis auswählen (FileDialog)

Beschreibung:

Immer wieder benötigt und immer wieder vergessen! So bei mir, deshalb nun hier! Ein Verzeichnis in VBA auswählen. Es ist ja zum Glück mittlerweile recht Einfach ein Verzeichnis auszuwählen. Auch lässt sich dieses Beispiel recht einfach auf Dateiauswahl, bzw. Dateien Auswahl umwandeln. (mehr …)