Zugriff auf die Jverein-Daten
Moderator: heiner
-
- Beiträge: 7
- Registriert: Dienstag 5. Januar 2010, 08:47
Zugriff auf die Jverein-Daten
Die von Jverein verwendete Datenbank ist H2 und biete Zugriff über ein Webinterface oder über JDBC.
Mit JDBC kann man zum Beispiel Abläufe automatisieren, die man regelmäßig benötigt. Wir versenden zum Beispiel jeden Monat Listen mit den einzelnen Mitgliedsdaten an die Abteilungsleiter. Dazu habe ich ein Java-Programm geschrieben, dass diese Listen generiert. Neben Java-Kenntnissen sind SQL-Kenntnisse Voraussetzung.
Falls Interesse besteht, kann ich demnächst - wenn ich wieder Zeit habe - hier ein kleines Beispielprogramm einstellen.
Gruß, Ralph
Mit JDBC kann man zum Beispiel Abläufe automatisieren, die man regelmäßig benötigt. Wir versenden zum Beispiel jeden Monat Listen mit den einzelnen Mitgliedsdaten an die Abteilungsleiter. Dazu habe ich ein Java-Programm geschrieben, dass diese Listen generiert. Neben Java-Kenntnissen sind SQL-Kenntnisse Voraussetzung.
Falls Interesse besteht, kann ich demnächst - wenn ich wieder Zeit habe - hier ein kleines Beispielprogramm einstellen.
Gruß, Ralph
Re: Zugriff auf die Jverein-Daten
Hallo Ralph,
das wäre sicherlich interessant. Ich bin nicht der Java-Kenner, aber insgesamt wäre es spannend zu sehen, wie du so etwas angehst!
Danke,
Ottmar
das wäre sicherlich interessant. Ich bin nicht der Java-Kenner, aber insgesamt wäre es spannend zu sehen, wie du so etwas angehst!
Danke,
Ottmar
-
- Beiträge: 7
- Registriert: Dienstag 5. Januar 2010, 08:47
Re: Zugriff auf die Jverein-Daten
Sorry, vor lauter Arbeit bin ich in den letzten Monaten zu nichts gekommen. So, hier nun eine kleine Anleitung.
JVerein ist in Java geschrieben und benutzt h2 als JDBC-Datenbank.
Daher kann man mit geringen Java- und SQL-Kenntnissen sich eigene Programme schreiben, die Daten in die Datenbank importieren oder exportieren.
Wichtig: Diese Programme können nur gestartet werden, wenn JVerein nicht läuft.
Das h2-Plugin bringt eine eigene Möglichkeit mit, SQL-Abfragen auf die Datenbank zu machen.
Dabei wird man durch ein grafsiches Interface unterstützt (Anzeige der Tabellen, etc.).
Aufruf:
java -cp "C:\Program Files (x86)\jameica\lib\h2\h2.jar" org.h2.tools.Console
Natürlich müsst Ihr bei dem Aufruf den Pfad anpassen, wo Ihr JVerein installiert habt.
Es öffnet sich ein Browser-Fenster, wo Ihr folgende Eingaben machen müsst:
JDBC URL jdbc:h2:f:/jverein/data/jverein/h2db/jverein
Benutzername jverein
Passwort jverein
Der Pfad f:/jverein/data/jverein/h2db/jverein ist wiederum anzupassen, je nachdem, wo Euer JVerein installiert ist.
So, jetzt ein kleines Java-Programm als Beispiel:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintStream;
public class ausgabe {
public static void main(String[] args) throws Exception {
Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection("jdbc:h2:f:/jverein/data/jverein/h2db/jverein", "jverein", "jverein");
int count=0;
FileOutputStream fout;
PrintStream pout;
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery("SELECT M.ID, M.ANREDE, M.TITEL, M.NAME, M.VORNAME, M.ADRESSIERUNGSZUSATZ, M.STRASSE, M.PLZ, M.ORT, M.ZAHLUNGSWEG, M.BLZ, M.KONTO, M.KONTOINHABER, M.GEBURTSDATUM, M.GESCHLECHT, M.TELEFONPRIVAT, M.TELEFONDIENSTLICH, M.HANDY, M.EMAIL, M.EINTRITT, M.AUSTRITT, M.KUENDIGUNG, B.BEZEICHNUNG, B.BETRAG FROM MITGLIED M, BEITRAGSGRUPPE B WHERE (M.BEITRAGSGRUPPE=B.ID) AND ((M.AUSTRITT IS NULL) OR (M.AUSTRITT>NOW())) ORDER BY M.NAME, M.VORNAME");
fout=new FileOutputStream("ausgabe.csv");
pout=new PrintStream(fout);
pout.println("Id;Anrede;Titel;Name;Vorname;Adressierungszusatz;Strasse;Plz;Ort;Zahlungsart;Blz;Kontonummer;Kontoinhaber;Geburtsdatum;Geschlecht;Telefon_privat;Telefon_dienstlich;Handy;Email;Eintritt;Austritt;Kuendigung;Beitragsgruppe;Beitrag");
while (rs.next()) {
count++;
pout.print(rs.getString("ID") + ";");
pout.print(rs.getString("ANREDE") + ";");
pout.print(rs.getString("TITEL") + ";");
pout.print(rs.getString("NAME") + ";");
pout.print(rs.getString("VORNAME") + ";");
pout.print(rs.getString("ADRESSIERUNGSZUSATZ") + ";");
pout.print(rs.getString("STRASSE") + ";");
pout.print(rs.getString("PLZ") + ";");
pout.print(rs.getString("ORT") + ";");
pout.print(rs.getString("ZAHLUNGSWEG") + ";");
pout.print(rs.getString("BLZ") + ";");
pout.print(rs.getString("KONTO") + ";");
pout.print(rs.getString("KONTOINHABER") + ";");
pout.print(rs.getString("GEBURTSDATUM") + ";");
pout.print(rs.getString("GESCHLECHT") + ";");
pout.print(rs.getString("TELEFONPRIVAT") + ";");
pout.print(rs.getString("TELEFONDIENSTLICH") + ";");
pout.print(rs.getString("HANDY") + ";");
pout.print(rs.getString("EMAIL") + ";");
pout.print(rs.getString("EINTRITT") + ";");
if (rs.getString("AUSTRITT") != null )
pout.print(rs.getString("AUSTRITT") + ";");
else
pout.print(";");
if (rs.getString("KUENDIGUNG") != null )
pout.print(rs.getString("KUENDIGUNG") + ";");
else
pout.print(";");
pout.print(rs.getString("BEZEICHNUNG") + ";");
pout.println(rs.getString("BETRAG").replace(".",","));
}
fout.close();
rs.close();
stat.close();
conn.close();
}
}
Achtung (Ihr habt es bestimmt geahnt): Ihr müsst den Pfad bei DriverManager.getConnection anpassen.
Das Programm lässt sich kompilieren mit:
javac.exe ausgabe.java
Aufruf des Programms (auch hier Pfad anpassen):
java -classpath "C:\Program Files (x86)\jameica\lib\h2\h2.jar";. ausgabe
Viel Erfolg, Ralph
JVerein ist in Java geschrieben und benutzt h2 als JDBC-Datenbank.
Daher kann man mit geringen Java- und SQL-Kenntnissen sich eigene Programme schreiben, die Daten in die Datenbank importieren oder exportieren.
Wichtig: Diese Programme können nur gestartet werden, wenn JVerein nicht läuft.
Das h2-Plugin bringt eine eigene Möglichkeit mit, SQL-Abfragen auf die Datenbank zu machen.
Dabei wird man durch ein grafsiches Interface unterstützt (Anzeige der Tabellen, etc.).
Aufruf:
java -cp "C:\Program Files (x86)\jameica\lib\h2\h2.jar" org.h2.tools.Console
Natürlich müsst Ihr bei dem Aufruf den Pfad anpassen, wo Ihr JVerein installiert habt.
Es öffnet sich ein Browser-Fenster, wo Ihr folgende Eingaben machen müsst:
JDBC URL jdbc:h2:f:/jverein/data/jverein/h2db/jverein
Benutzername jverein
Passwort jverein
Der Pfad f:/jverein/data/jverein/h2db/jverein ist wiederum anzupassen, je nachdem, wo Euer JVerein installiert ist.
So, jetzt ein kleines Java-Programm als Beispiel:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintStream;
public class ausgabe {
public static void main(String[] args) throws Exception {
Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection("jdbc:h2:f:/jverein/data/jverein/h2db/jverein", "jverein", "jverein");
int count=0;
FileOutputStream fout;
PrintStream pout;
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery("SELECT M.ID, M.ANREDE, M.TITEL, M.NAME, M.VORNAME, M.ADRESSIERUNGSZUSATZ, M.STRASSE, M.PLZ, M.ORT, M.ZAHLUNGSWEG, M.BLZ, M.KONTO, M.KONTOINHABER, M.GEBURTSDATUM, M.GESCHLECHT, M.TELEFONPRIVAT, M.TELEFONDIENSTLICH, M.HANDY, M.EMAIL, M.EINTRITT, M.AUSTRITT, M.KUENDIGUNG, B.BEZEICHNUNG, B.BETRAG FROM MITGLIED M, BEITRAGSGRUPPE B WHERE (M.BEITRAGSGRUPPE=B.ID) AND ((M.AUSTRITT IS NULL) OR (M.AUSTRITT>NOW())) ORDER BY M.NAME, M.VORNAME");
fout=new FileOutputStream("ausgabe.csv");
pout=new PrintStream(fout);
pout.println("Id;Anrede;Titel;Name;Vorname;Adressierungszusatz;Strasse;Plz;Ort;Zahlungsart;Blz;Kontonummer;Kontoinhaber;Geburtsdatum;Geschlecht;Telefon_privat;Telefon_dienstlich;Handy;Email;Eintritt;Austritt;Kuendigung;Beitragsgruppe;Beitrag");
while (rs.next()) {
count++;
pout.print(rs.getString("ID") + ";");
pout.print(rs.getString("ANREDE") + ";");
pout.print(rs.getString("TITEL") + ";");
pout.print(rs.getString("NAME") + ";");
pout.print(rs.getString("VORNAME") + ";");
pout.print(rs.getString("ADRESSIERUNGSZUSATZ") + ";");
pout.print(rs.getString("STRASSE") + ";");
pout.print(rs.getString("PLZ") + ";");
pout.print(rs.getString("ORT") + ";");
pout.print(rs.getString("ZAHLUNGSWEG") + ";");
pout.print(rs.getString("BLZ") + ";");
pout.print(rs.getString("KONTO") + ";");
pout.print(rs.getString("KONTOINHABER") + ";");
pout.print(rs.getString("GEBURTSDATUM") + ";");
pout.print(rs.getString("GESCHLECHT") + ";");
pout.print(rs.getString("TELEFONPRIVAT") + ";");
pout.print(rs.getString("TELEFONDIENSTLICH") + ";");
pout.print(rs.getString("HANDY") + ";");
pout.print(rs.getString("EMAIL") + ";");
pout.print(rs.getString("EINTRITT") + ";");
if (rs.getString("AUSTRITT") != null )
pout.print(rs.getString("AUSTRITT") + ";");
else
pout.print(";");
if (rs.getString("KUENDIGUNG") != null )
pout.print(rs.getString("KUENDIGUNG") + ";");
else
pout.print(";");
pout.print(rs.getString("BEZEICHNUNG") + ";");
pout.println(rs.getString("BETRAG").replace(".",","));
}
fout.close();
rs.close();
stat.close();
conn.close();
}
}
Achtung (Ihr habt es bestimmt geahnt): Ihr müsst den Pfad bei DriverManager.getConnection anpassen.
Das Programm lässt sich kompilieren mit:
javac.exe ausgabe.java
Aufruf des Programms (auch hier Pfad anpassen):
java -classpath "C:\Program Files (x86)\jameica\lib\h2\h2.jar";. ausgabe
Viel Erfolg, Ralph
Re: Zugriff auf die Jverein-Daten
Hallo Ralph,
sobald ich Zeit habe (und die neue Version installiert habe), werde ich es mal ausprobieren .
So ein zwei Nutzungen schweben mir vor...
Vielen Dank!
Ottmar
sobald ich Zeit habe (und die neue Version installiert habe), werde ich es mal ausprobieren .
So ein zwei Nutzungen schweben mir vor...
Vielen Dank!
Ottmar
Re: Zugriff auf die Jverein-Daten
Durch die offene Datenbank ist auch die Anbindung an OpenOffice/LibreOffice relativ problemlos möglich, was u.a. Serienbriefe, aber eben auch Auswertungen, JVerein (noch?) nicht von sich aus bietet, ermöglicht.
Dazu muss man nur unter OpenOffice im Einstellungsmenü -> OpenOffice -> Java -> ClassPath -> Archive hinzufügen den Pfad von H2 (z.B. C:\Program Files\jameica\lib\h2\h2.jar hinzufügen. Anschließend kann man ähnlich wie unten die Datenbank anmelden. (Bei OpenOffice über Neue Datenbank -> Verbindung zu einer bestehenden Datenbank herstellen -> JDBC -> bei jdbc: den Pfad der Datenbank und bei Treiberklasse org.h2.Driver eingeben.
Jetzt sollte die Datenbank angemeldet werden und sowohl für Auswertungen und Berichte als auch für Serienbriefe zur Verfügung stehen.
Dazu muss man nur unter OpenOffice im Einstellungsmenü -> OpenOffice -> Java -> ClassPath -> Archive hinzufügen den Pfad von H2 (z.B. C:\Program Files\jameica\lib\h2\h2.jar hinzufügen. Anschließend kann man ähnlich wie unten die Datenbank anmelden. (Bei OpenOffice über Neue Datenbank -> Verbindung zu einer bestehenden Datenbank herstellen -> JDBC -> bei jdbc: den Pfad der Datenbank und bei Treiberklasse org.h2.Driver eingeben.
Jetzt sollte die Datenbank angemeldet werden und sowohl für Auswertungen und Berichte als auch für Serienbriefe zur Verfügung stehen.
- heiner
- Administrator
- Beiträge: 4509
- Registriert: Freitag 30. Oktober 2009, 16:44
- JVerein-Version: aktuelle Entwicklerversion
- Betriebssystem: W10
- Kontaktdaten:
Re: Zugriff auf die Jverein-Daten
siehe auch http://www.jverein.de/openofficeh2.php
PS: Denkt daran, eure Vereine unter viewforum.php?f=3 vorzustellen.
Re: Zugriff auf die Jverein-Daten
Ich lerne doch immer wieder hinzu, dass ich die Seite noch nicht ausführlich genug gelesen habe...
Danke aber einerseits für den Hinweis und andererseits für die Software!
Danke aber einerseits für den Hinweis und andererseits für die Software!
Re: Zugriff auf die Jverein-Daten
Für Windows-User ist noch anzumerken, dass der Pfad (zumindes die hier fettgedruckten Bestandteile) in Schritt 2 des OO Base-Wizards so aussehen muss:
h2:file:C:/Pfad/zur/Datenbank/.jameica/jverein/h2db/jverein
Backslashes ("\") im Pfad sind durch normale Slashes ("/") zu ersetzen. (Z.B. in irgendeinem Text-Programm)
Quelle: http://www.h2database.com/html/features.html
h2:file:C:/Pfad/zur/Datenbank/.jameica/jverein/h2db/jverein
Backslashes ("\") im Pfad sind durch normale Slashes ("/") zu ersetzen. (Z.B. in irgendeinem Text-Programm)
Quelle: http://www.h2database.com/html/features.html
Re: Zugriff auf die Jverein-Daten
Hi
vielen Dank für das tolle Programm - hat mir die Arbeit abgenommen, eine Mitgliederverwaltung in Access oder auf PHP-Basis selbst zu programieren - wobei ich beim Thema bin.
Irgendwie bin ich etwas vernagelt. in OO versuche ich eine Verbindung zur Datenbank aufzubauen, um hieraus per Serien-Brief Mitgliederausweise zu generieren. Wäre bislang auch auf normalen (händisch) Weg möglich, aber irgendwann ist ja vielleicht auch ein anderer mal dran, dem ich das dann funktionierend übergeben möchte.
Aber: gebe ich den vollständigen Pfad inklusive der Datei an (Y:\Verein\jameica-data\jverein\h2db\jverein.h2.db) und setze den zusatz .jameica/jverein/h2db/jverein dahinter, baut er mir in dem Verzeichen jamaica-data\jverein\h2db\ o.g. Ausdruck als Verzeichnis ein und legt darin eine neue leere Datenbank ab. Bei mir liegt die portable Version auf einem Netzordner (Y:\Verein\) -- ja, ich benutze dafür Windows, weil meine Vereinskollegen von Linux nichts halten und verstehen (naja, da bin ich auch kein Profi...)
Was mach ich falsch, oder was verstehe ich nicht - komme mir mitlerweile wie ein Anfänger vor, der zu blöd ist...
Gruß
uliwak
Nachtrag: ich habe es auf die mir altbekannte Methode versucht und die Datenbankverbindung in OO (Version3.2) unter Menu [Bearbeiten|Datenbank|Verbindungsart...] nachträglich editiert:
"jdbc: h2:file:Y:\Verein\jameica-data\jverein\h2db\jverein" - sprich alles mit ./ etc weggelöscht, so wie es auch auf der Seite http://www.h2database.com/html/features.html steht - und das funktioniert...
Also bin ich wohl irgendwie doch vernagelt - widerspricht aber auch irgendwie dem TUT hier, oder irre ich mich?
vielen Dank für das tolle Programm - hat mir die Arbeit abgenommen, eine Mitgliederverwaltung in Access oder auf PHP-Basis selbst zu programieren - wobei ich beim Thema bin.
Irgendwie bin ich etwas vernagelt. in OO versuche ich eine Verbindung zur Datenbank aufzubauen, um hieraus per Serien-Brief Mitgliederausweise zu generieren. Wäre bislang auch auf normalen (händisch) Weg möglich, aber irgendwann ist ja vielleicht auch ein anderer mal dran, dem ich das dann funktionierend übergeben möchte.
Aber: gebe ich den vollständigen Pfad inklusive der Datei an (Y:\Verein\jameica-data\jverein\h2db\jverein.h2.db) und setze den zusatz .jameica/jverein/h2db/jverein dahinter, baut er mir in dem Verzeichen jamaica-data\jverein\h2db\ o.g. Ausdruck als Verzeichnis ein und legt darin eine neue leere Datenbank ab. Bei mir liegt die portable Version auf einem Netzordner (Y:\Verein\) -- ja, ich benutze dafür Windows, weil meine Vereinskollegen von Linux nichts halten und verstehen (naja, da bin ich auch kein Profi...)
Was mach ich falsch, oder was verstehe ich nicht - komme mir mitlerweile wie ein Anfänger vor, der zu blöd ist...
Gruß
uliwak
Nachtrag: ich habe es auf die mir altbekannte Methode versucht und die Datenbankverbindung in OO (Version3.2) unter Menu [Bearbeiten|Datenbank|Verbindungsart...] nachträglich editiert:
"jdbc: h2:file:Y:\Verein\jameica-data\jverein\h2db\jverein" - sprich alles mit ./ etc weggelöscht, so wie es auch auf der Seite http://www.h2database.com/html/features.html steht - und das funktioniert...
Also bin ich wohl irgendwie doch vernagelt - widerspricht aber auch irgendwie dem TUT hier, oder irre ich mich?
Zuletzt geändert von uliwak am Dienstag 17. Januar 2012, 21:32, insgesamt 1-mal geändert.
- heiner
- Administrator
- Beiträge: 4509
- Registriert: Freitag 30. Oktober 2009, 16:44
- JVerein-Version: aktuelle Entwicklerversion
- Betriebssystem: W10
- Kontaktdaten:
Re: Zugriff auf die Jverein-Daten
Hallo,
gehe wie in dem oben angegebenen Dokument vor. Dann funktioniert es auch.
Alternativ kannst du über die Mitgliedsauswertung auch eine CSV-Datei ausgeben, die dann als Serienbriefdatenquelle eingebunden werden kann.
Heiner
gehe wie in dem oben angegebenen Dokument vor. Dann funktioniert es auch.
Alternativ kannst du über die Mitgliedsauswertung auch eine CSV-Datei ausgeben, die dann als Serienbriefdatenquelle eingebunden werden kann.
Heiner
PS: Denkt daran, eure Vereine unter viewforum.php?f=3 vorzustellen.