Mitgliederstatistik Jahrgänge nach Eigenschaften
Verfasst: Donnerstag 14. Januar 2016, 14:11
Hallo,
Für unseren Sportverein mit mehreren Abteilungen für verschiedene Sportarten benötigen wir die Statistik nach Jahrgängen für jede Abteilung gesondert.
Daher habe ich ein kleines Autohotkey-Script geschrieben, das diese aus dem als CSV-Datei exportierten Mitgliederbestand erstellt.
(Autohotkey ist eine Windows-exclusive Scriptsprache: http://ahkscript.org/)
Erforderliche Vorarbeiten:
Zunächst in JVerein unter "Auswertung Mitglieder" den Mitgliederbstand in eine CSV-Datei exportieren.
Darauf achten, nur angemeldete Mitglieder zu exportieren und den Stichtag passend zum Stichtag der Statistik zu wählen.
Danach die CSV-Datei in Excel/Calc/etc. bearbeiten.
Alle Spalten löschen, bis auf "mitglied_geburtsdatum" und Spalten die mit "mitglied_eigenschaft_" beginnen.
Diese exportierte und gekürzte Mitglieder-Datenbank-Tabelle wieder als CSV-Datei speichern.
Dann das Script starten und diese Datei im folgenden Dialog auswählen. Im nächsten Dialog das Zielverzeichnis für die Statistiken auswählen.
Die Jahrgangsstatistiken nach Eigenschaften werden in diesem Verzeichnis als CSV-Datei erstellt.
Hier das Script(alternativ als Anhang):
Für unseren Sportverein mit mehreren Abteilungen für verschiedene Sportarten benötigen wir die Statistik nach Jahrgängen für jede Abteilung gesondert.
Daher habe ich ein kleines Autohotkey-Script geschrieben, das diese aus dem als CSV-Datei exportierten Mitgliederbestand erstellt.
(Autohotkey ist eine Windows-exclusive Scriptsprache: http://ahkscript.org/)
Erforderliche Vorarbeiten:
Zunächst in JVerein unter "Auswertung Mitglieder" den Mitgliederbstand in eine CSV-Datei exportieren.
Darauf achten, nur angemeldete Mitglieder zu exportieren und den Stichtag passend zum Stichtag der Statistik zu wählen.
Danach die CSV-Datei in Excel/Calc/etc. bearbeiten.
Alle Spalten löschen, bis auf "mitglied_geburtsdatum" und Spalten die mit "mitglied_eigenschaft_" beginnen.
Diese exportierte und gekürzte Mitglieder-Datenbank-Tabelle wieder als CSV-Datei speichern.
Dann das Script starten und diese Datei im folgenden Dialog auswählen. Im nächsten Dialog das Zielverzeichnis für die Statistiken auswählen.
Die Jahrgangsstatistiken nach Eigenschaften werden in diesem Verzeichnis als CSV-Datei erstellt.
Hier das Script(alternativ als Anhang):
Code: Alles auswählen
#NoEnv
#SingleInstance force
InfoTxt =
(
JVerein Jahrgangsstatistik nach Eigenschaften erstellen.
Vorarbeiten erforderlich:
Zunächst in JVerein unter "Auswertung Mitglieder" den Mitgliederbstand in eine CSV-Datei exportieren.
Darauf achten, nur angemeldete Mitglieder zu exportieren und den Stichtag passend zum Stichtag der Statistik zu wählen.
Danach die CSV-Datei in Excel/Calc/etc. bearbeiten.
Alle Spalten löschen, bis auf "mitglied_geburtsdatum" und Spalten die mit "mitglied_eigenschaft_" beginnen.
Diese exportierte und gekürzte Mitglieder-Datenbank-Tabelle wieder als CSV-Datei speichern.
Diese Datei im folgenden Dialog auswählen. Im nächsten Dialog das Zielverzeichnis für die Statistiken auswählen.
Die Jahrgangsstatistiken nach Eigenschaften werden in diesem Verzeichnis als CSV-Datei erstellt.
)
MsgBox , 1, JVerein Jahrgangsstatistik nach Eigenschaften erstellen, %InfoTxt%,
IfMsgBox, Cancel
{
MsgBox, Programm beendet.
ExitApp
}
FileSelectFile, SourceFile, 3,, Die exportierte und gekürzte Mitglieder-Datenbank-Tabelle als csv-Datei auswählen, (*.csv)
if SourceFile =
{
MsgBox, Keine Datei ausgewählt. Programm beendet.
ExitApp
}
FileSelectFolder, DestPath,, 3, Das Zielverzeichnis für die Statistik (als CSV-Dateien) auswählen.
if DestPath =
{
MsgBox, Kein Zielverzeichnis ausgewählt. Programm beendet.
ExitApp
}
I_Eigenschaften := 0
Loop, READ, %Sourcefile%
{
If (A_Index = 1)
{
Loop, parse, A_LoopReadLine, `;
{
if (A_Loopfield = "mitglied_geburtsdatum")
I_Birthday := A_Index
IfInString, A_Loopfield, mitglied_eigenschaft_
{
I_Eigenschaften += 1
E_%I_Eigenschaften%_Field := A_Index
E_%I_Eigenschaften%_Name := A_Loopfield
}
}
break
}
}
Loop, %I_Eigenschaften%
{
makestat(SourceFile, DestPath, I_Birthday, E_%A_Index%_Field, E_%A_Index%_Name)
}
MsgBox, Fertig!
Run, Explorer %DestPath%
ExitApp
return
makestat(SourceFile, DestPath, I_Birthday, Field, Name)
{
CurrStat := Object()
Loop, READ, %Sourcefile%
{
Match := 0
BD := 0
If (A_Index = 1)
continue
Loop, parse, A_LoopReadLine, `;
{
if (A_Index = Field)
{
if (A_Loopfield = "X")
{
Match := 1
}
}
if (A_Index = I_Birthday)
{
StringRight, BD, A_LoopField, 4
}
}
If ( Match = 1)
{
If CurrStat.HasKey(BD)
CurrStat[BD] := CurrStat[BD] + 1
else
CurrStat[BD] := 1
}
}
StringTrimLeft, Name, Name, 21
CurrFile := DestPath . "\" . Name . ".csv"
FileDelete, %CurrFile%
Stat := Name . "`n`r"
for JG , ANZ in CurrStat
{
Stat .= JG . "`;" . ANZ . "`;" . "`n`r"
}
FileAppend, %Stat%, %CurrFile%
return
}