Zugriff auf die Jverein-Daten

Hier verraten JVerein-Benutzer ihre Tricks und Tips zur JVerein

Moderator: heiner

ralph.wendlandt
Beiträge: 7
Registriert: Dienstag 5. Januar 2010, 08:47

Zugriff auf die Jverein-Daten

Beitrag von ralph.wendlandt »

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
Ottmar
Beiträge: 48
Registriert: Donnerstag 31. Dezember 2009, 16:18
Kontaktdaten:

Re: Zugriff auf die Jverein-Daten

Beitrag von Ottmar »

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
ralph.wendlandt
Beiträge: 7
Registriert: Dienstag 5. Januar 2010, 08:47

Re: Zugriff auf die Jverein-Daten

Beitrag von ralph.wendlandt »

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
Ottmar
Beiträge: 48
Registriert: Donnerstag 31. Dezember 2009, 16:18
Kontaktdaten:

Re: Zugriff auf die Jverein-Daten

Beitrag von Ottmar »

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
ffcecilie
Beiträge: 36
Registriert: Donnerstag 30. Dezember 2010, 17:01

Re: Zugriff auf die Jverein-Daten

Beitrag von ffcecilie »

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.
Benutzeravatar
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

Beitrag von heiner »

PS: Denkt daran, eure Vereine unter viewforum.php?f=3 vorzustellen.
ffcecilie
Beiträge: 36
Registriert: Donnerstag 30. Dezember 2010, 17:01

Re: Zugriff auf die Jverein-Daten

Beitrag von ffcecilie »

Ich lerne doch immer wieder hinzu, dass ich die Seite noch nicht ausführlich genug gelesen habe... :D

Danke aber einerseits für den Hinweis und andererseits für die Software!
screen

Re: Zugriff auf die Jverein-Daten

Beitrag von screen »

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
uliwak
Beiträge: 2
Registriert: Dienstag 17. Januar 2012, 20:39

Re: Zugriff auf die Jverein-Daten

Beitrag von uliwak »

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... :D
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.
Benutzeravatar
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

Beitrag von heiner »

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
PS: Denkt daran, eure Vereine unter viewforum.php?f=3 vorzustellen.
Antworten