Base und All-inkl.com

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Roxianna
***
Beiträge: 78
Registriert: Di, 13.10.2020 01:08
Wohnort: Essen
Kontaktdaten:

Re: Base und All-inkl.com

Beitrag von Roxianna »

Bin gerade nicht Zuhause. Schreib mir was du brauchst und ich schicke es später. Mache bitte Screenshots, damit ich die anderen Tabellen für die Kasse auch hochladen kann.

Gruß
Sylvia
Roxianna
***
Beiträge: 78
Registriert: Di, 13.10.2020 01:08
Wohnort: Essen
Kontaktdaten:

Re: Base und All-inkl.com

Beitrag von Roxianna »

Hallo Robert,

ich habe es jetzt gerade nochmal versucht. Warum auch immer, es hat geklappt.

Ich hatte nur eine Sache anders gemacht. phpmyAdmin im Hintergrund geschlossen. Ich hatte immer einen Tab offen, wo ich phpmyadmin laufen lies.
Keine Ahnung ob das der Grund war.

Ich würde jetzt gerne noch den Tabellennamen und Dateinamen ändern. Aus Tabelle _ Mitglied soll Mitgliederliste werden und aus Bernetal2 soll Bernetal werden. Kann aber nichts finden wie ich den Tabellennamen ändern kann. Den Dateinamen werde ich sicherlich in Windows ändern können. Hoffe das sich dann nichts verändert.

So, jetzt werde ich mich erstmal durch den Rest durcharbeiten.

Gruß

Sylvia
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Base und All-inkl.com

Beitrag von Hiker »

Hallo,

https://www.bluehost.com/help/article/r ... phpmyadmin
Oder
http://forum.jswelt.de/serverseitige-pr ... ennen.html

findet man schnell, wenn man bei google

Code: Alles auswählen

mysql tabelle umbenennen

eingibt.

Es gibt sowohl ein RENAME TABLE Kommando, wie auch
ALTER TABLE mit diversen Optionen.

In Base können solche Befehle über das bei Extras-SQL zu findende Fenster abgesetzt werden.

Für später: Da wird nur der Tabellenname geändert. Du musst eventuell alle sich darauf beziehenden Abfragen selbst anpassen. Also gründlich planen spart später viel Arbeit.

Mfg, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Roxianna
***
Beiträge: 78
Registriert: Di, 13.10.2020 01:08
Wohnort: Essen
Kontaktdaten:

Re: Base und All-inkl.com

Beitrag von Roxianna »

danke Jörn. Habe ich noch nicht probiert, mache ich die Tage. Ich stehe etwas unter Zeitdruck.

Es müsste alles eigentlich in 2 Wochen fertig sein. Doch die Verbindung zwischen Libre Office und PHPmyadmin stresst mich total.

Ich versuche eine Tabelle rüber zu kopieren und muß sie natürlich noch vor der Fertigstellung bearbeiten. Nach der Verarbeitung meldet er schon wieder Verbindungsabbruch.
Ich muß das irgendwie ändern. Mit den Abbrüchen kann ich wirklich nicht leben.

Wenn ich erst alles einfüge, dann kann ich die Feldtypen nachher nicht mehr ändern. Ich habe bis jetzt nur 1 Tabelle und ich weiß nicht wieviele ich noch brauche. Mind. 9 Tabellen noch. Dann noch die ganzen Verknüpfungen zu der 1. Tabelle. Den Serienbrief muß ich auch noch vorbereiten.

Eigentlich weiß ich gar nicht ob es so geht wie ich denke. Denn ich brauche ja auch Multiplikationen in der Tabelle und Additionen. Es müssen Pacht und Mitgliedsgebühren gezahlt werden, das ist für jeden Garten anders. Es sind auch verschiedene Gartenanlagen private und städtische. Für die privaten fällt keine Pacht an, für die städtischen schon. Ich bin mir nicht sicher, ob es nicht besser ist in Calc zu bleiben und einfach nur eine Serienbriefverknüpfung zu machen. Aber ich würde es schon gerne online sichern, daher die Datenbank.

Gruß
Sylvia
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Base und All-inkl.com

Beitrag von RobertG »

Hallo Sylvia,

ich habe das jetzt einmal mit meiner eigenen Webdatenbank bei Host Europe gestestet: Eine direkte Verbindung erstellt, angemeldet, dann nebenher eine Tabelle mit 20 Datensätzen in Calc erstellt, diese Datensätze kopiert und in die noch geöffnete Datenbank eingefügt. Der Assistent lief problemlos ab, die Tabelle war drin.

Dann bin ich hin gegangen und habe die Tabelle umbenannt. Auch kein Problem.

Jetzt habe ich nach diesem Text die Tabelle ansehen wollen - da war die Verbindung weg.

Ich teste jetzt noch die JDBC-Verbindung. Die direkte Verbindung ist so ohne Makro nicht brauchbar.

Mit der JDBC-Verbindung habe ich mehr Glück. Ich hatte auch dort eine Verbindungsunterbrechung. Eine Tabelle erschien nicht mehr, nachdem ich zwischendurch andere Sachen auf dem Rechner erledigt habe. Die autoReconnect-Funktion griff dann aber in sofern, als die Verbindung beim zweiten Zugriff wieder da war. Anschließend konnte ich ohne Probleme auch längere Pausen einlegen.

Gruß

Robert
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Base und All-inkl.com

Beitrag von Hiker »

Hallo,

evtl. kann man die Reconnect-häufigkeit auch per
wait_timeout per Session setzen
https://mariadb.com/docs/reference/es/s ... t_timeout/
Mit 3600 wäre man ja schon bei einer Stunde... und man könnte es in ein Startup-Macro packen.

Mfg, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Base und All-inkl.com

Beitrag von Hiker »

Was den Serienbrief und Calc angeht:
Wenn die Spaltennamen übereinstimmen sollte es möglich sein, einen Serienbrief, der eine als Datenquelle angemeldete Calc-Tabelle nutzt durch einfaches Ändern der Datenquelle (neu: Abfrage aus der Datenbank) weiter zu verwenden.

Probiere ich nächste Woche mal aus...

Mfg, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Base und All-inkl.com

Beitrag von Hiker »

Hallo zum dritten...

Berechnungen machst Du normalerweise in einer Abfrage. Z.B.:

Code: Alles auswählen

select 12*Monatsmiete - Saldo AS Zahlbetrag FROM Pachttabelle WHERE GartenId=4711
Mfg, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Base und All-inkl.com

Beitrag von RobertG »

Hallo Sylvia,

für den Abbruch der Verbindung scheint dies die Lösung zu sein:

Code: Alles auswählen

GLOBAL boStop AS BOOLEAN

SUB Reconnect
	DIM oDatasource AS OBJECT
	DIM oConnection AS OBJECT
	DIM oSQL_Command AS OBJECT
	boStop = false
	DO
		WAIT 10000 'Zeitangabe in Millisekunden
		oDatasource = thisDatabaseDocument.CurrentController
		IF NOT (oDatasource.isConnected()) THEN oDatasource.connect()
		oConnection = oDatasource.ActiveConnection()
		oSQL_Command = oConnection.createStatement()
		oSQL_Command.executeQuery("SELECT NOW()")
	LOOP WHILE boStop = false
END SUB

SUB StopConnect
    boStop = true
END SUB
Diese Makrozeilen musst Du in Deine *.odb-Datei einbauen und dann "Reconnect" mit dem Öffnen des Dokumentes verbinden (S. 442 Handbuch Base). Die Timerzeit ist auf 10 Sekunden eingestellt. Ich finde das eigentlich eine zu schnelle Wiederholung, aber vorherige Tests mit 50 Sekunden haben bei mir zwischendurch zu Abbrüchen geführt. Bei der Zeitangabe WAIT kannst Du ja entsprechend experimentieren.

Es kann natürlich sein, dass Du nach 10 Sekunden noch gar nicht den ersten Kontakt zur Datenbank hergestellt hast. Dann müsstest Du das Makro irgendwann nach dem ersten Kontakt anschubsen.

Ich habe damit jetzt gut 20 Minuten lang ununterbrochenen Kontakt zu meiner Datenbank bei Host Europe mit dem direkten Treiber. Mit JDBC habe ich da nicht weiter probiert, da dort ja autoReconnect anspringt.

Das folgende Makro funktioniert dann, wenn das wait_timeout nicht von Serverseite aus so eingestellt ist, dass Du da keinen Zugriff drauf hast. Da ich das Timeout nicht beliebig hoch setzen wollte (Jörn schlug hier eine Stunde vor) sondern schon die Verbindung irgendwann sicher kappen würde, wenn die Datenbankdatei geschlossen ist, hier die Reconnect-Fassung mit 2 Minuten (120 Sekunden) Timeout und alle 100 Sekunden eine kurze Abfrage zur Auffrischung.

Code: Alles auswählen

SUB Reconnect
	DIM oDatasource AS OBJECT
	DIM oConnection AS OBJECT
	DIM oSQL_Command AS OBJECT
	oDatasource = thisDatabaseDocument.CurrentController
	IF NOT (oDatasource.isConnected()) THEN oDatasource.connect()
	oConnection = oDatasource.ActiveConnection()
	oSQL_Command1 = oConnection.createStatement()	
	oSQL_Command1.executeUpdate("SET SESSION wait_timeout=120")
	boStop = false
	DO
		WAIT 100000 'Zeitangabe in Millisekunden
		oSQL_Command2 = oConnection.createStatement()
		oSQL_Command2.executeQuery("SELECT NOW()")
	LOOP WHILE boStop = false
END SUB
Gruß

Robert
Roxianna
***
Beiträge: 78
Registriert: Di, 13.10.2020 01:08
Wohnort: Essen
Kontaktdaten:

Re: Base und All-inkl.com

Beitrag von Roxianna »

Hallo,

erstmal Danke für eure Antworten.
Das was ihr mir so schreibt ist für mich nicht nachvollziehbar. Ich verstehe es absolut nicht. Egal erstmal. Beschäftige ich mich später damit.

Bevor ich jetzt noch wochenlang mich mit der Verbindung beschäftige, werde ich jetzt erstmal die Datenbank offline erstellen. Das gibt mir jetzt etwas Zeit. Auch ist die Offline Datenbank dann eine Möglichkeit der Datensicherung . So habe ich es online und offline, falls ich mal keine Internetverbindung habe.

Ich habe die Mitgliederliste erstellt, jetzt werde ich alle Gartengruppen einzeln erstellen. Ich muß mich erstmal mit der Datenbank an sich beschäftigen, denke ich. Wie ich die programmiere weiß ich ja auch noch nicht.

Vielleicht sollte ich jetzt auch erstmal den Serienbrief über Calc machen. Danach habe ich 1 Jahr Zeit mich mit der Datenbank in Bezug auf die Pacht zu beschäftigen.

Allerdings werde ich irgendwann den Posten des Kassierers übernehmen und will dann die Buchhaltung über die Datenbank machen. Bisher wurde es kompliziert über Excel / Calc gemacht.

Aufgrund von Corona habe ich jetzt etwas mehr Zeit mich damit zu beschäftigen, denn die Jahreshauptversammlung wo ich gewählt werden würde, darf ja nicht stattfinden. Daher habe ich für die Buchhaltung mind. noch bis zum Frühjahr Zeit.

Ich hatte es mir irgendwie einfacher vorgestellt.

Gruß

Sylvia
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Base und All-inkl.com

Beitrag von RobertG »

Hallo Sylvia,

zu Vermeidung von Unterbrechungen kannst Du unter Extras → SQL den folgenden Code eingeben:

Code: Alles auswählen

SET SESSION wait_timeout=600;
Damit hast Du bis zur nächsten Abfrage oder ähnlichem 10 Minuten Zeit - aber nur, wenn Dein Server diese Einstellung zulässt.

Mache nicht den Fehler, für alle Gartengruppen einzelne Tabellen zu erstellen. Eine Tabelle, in der die Gartengruppen stehen, und eine Tabelle, in der die Details dazu sind. Die beiden Tabellen werden miteinander verbunden. Denn: Je mehr unterschiedliche Tabellen Du erstellst, desto problematischer wird die Geschichte mit den Serienbriefen. Du möchtest doch nicht für jede Gartengruppe einen gesonderten Serienbrief aufsetzen, oder?

Kopieren kannst Du die Daten von der internen Datenbank zur externen Datenbank später problemlos.

Gruß

Robert
Roxianna
***
Beiträge: 78
Registriert: Di, 13.10.2020 01:08
Wohnort: Essen
Kontaktdaten:

Re: Base und All-inkl.com

Beitrag von Roxianna »

Hallo Robert,

ich habe eine Datenbank wo alle Mitglieder auch den Gärten bzw. den Gartenanlagen zugeordnet sind.

Dann dachte ich , daß ich die Gartengruppen voneinander trenne. Es gibt Gartengruppen die sind privat, die zahlen keine Pacht und andere die zahlen Pacht. Dann gibt es eine Gartengruppe die zahlt nur den Mitgliedsbeitrag des Vereins, weil die weder privat noch städtisch sind.

Vielleicht sollte ich dann 3 Tabellen machen, anstatt 9 . Privat, städtisch und sonstige . Für diese 3 Gruppen muß ich dann 3 unterschiedliche Briefe machen.

Wenn ich dir die Zugangsdaten zu meinem Server gebe, kannst du bitte dann nachschauen, was ich alles mit der Serverdatenbank machen kann?
Du kennst dich damit besser aus.

Gruß
Sylvia
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Base und All-inkl.com

Beitrag von Hiker »

Bleib bei einer Tabelle.
Entweder ergänze ein Merkmal zum Pachttyp oder das Merkmal gehort in eine zweite Tabelle mit Eigenschaften der Anlagen/Gruppen.

Deine 3 Tabellen erhältst Du indem Du nicht die Originaltabelle als Grundlage des Serienbriefs nimmst, sondern z.B. eine Abfrage mit WHERE Typ='privat' die eine spezielle Ergebnistabelle für diesen Zweck erzeugt.

Mfg, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Roxianna
***
Beiträge: 78
Registriert: Di, 13.10.2020 01:08
Wohnort: Essen
Kontaktdaten:

Re: Base und All-inkl.com

Beitrag von Roxianna »

Ok, in der Tabelle Calc war es schon so. Ich hatte es nur gesplittet wegen der Datenbank.

Jetzt habe ich es so eingefügt. Eine Spalte wo drin steht: städtisch, privat , bahn

Mal schauen wie es jetzt weiter geht. Zur Sicherheit lade ich es später erstmal hoch.

Gruß

Sylvia
Antworten