BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Makro-Fehlermeldung nach Umstieg auf LO 5.2

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Freischreiber
Beiträge: 755
Registriert: Fr 28. Mär 2014, 10:41

Makro-Fehlermeldung nach Umstieg auf LO 5.2

Beitrag von Freischreiber » Fr 25. Aug 2017, 17:55

Hallo,

ein Makro bringt nach LO-Update von 4.2 unter LO 5.2.7.2 erstmalig die Fehlermeldung
...Type: com.sun.star.sdbc.SQLException
Message: Der Cursor zeigt vor die erste bzw. hinter die letzte Zeile..
beim Öffnen eines Formulars mit einem leeren Datensatz.

Das Makro ist:

Code: Alles auswählen

SUB ChaosOrteAuswahlAktualisieren(oEvent AS OBJECT)
	DIM stSql(0) AS STRING
	oForm = oEvent.Source
	oFeld = oForm.getByName("Chaoslistenfeld")
	inID = oForm.getLong(1)
	stSql(0) = "SELECT ""ChaotischerOrt"", ""ID"" FROM ""t-chaotischeorte"" WHERE ""ID"" NOT IN "
	stSql(0) = stSql(0) & "( SELECT ""ChaotischerOrtID"" FROM ""zt-chaotischerort-auftraege"" ) OR ""ID"" = '"+inID+"' ORDER BY ""ChaotischerOrt"" ASC"
	oFeld.ListSource = stSql
	oFeld.refresh()
END SUB
von RobertG aus diesem Thread: http://www.libreoffice-forum.de/viewtop ... =10#p36755

und markiert ist bei der Fehlermeldung die Zeile
"inID = oForm.getLong(1)"

Offenbar werden vergebene chaotische Orte auch nicht aus der Auswahlliste entfernt, wie das vorher der Fall war.

Gruß
Freischreiber
Freischreiber nutzt seit 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Makro-Fehlermeldung nach Umstieg auf LO 5.2

Beitrag von RobertG » Fr 25. Aug 2017, 18:23

Hallo Freischreiber,

die Meldung, die Du da hast, kommt doch von der Stellung des Cursors im Formular. Aus dem Formular lässt sich kein Wert der zugrundeliegenden Tabelle auslesen, weil der Cursor noch gar nicht in einer Zeile steht, in der auch das Feld einen Inhalt haben kann.
Folgende Punkte würde ich testen:

Ereignis wechseln, in dem Du bisher das Makro angebunden hast. Ich würde es mit dem Datensatzwechsel des Formulars probieren. Das Ereignis taucht auch auf, wenn das Formular geöffnet wurde.
Lass Dir, falls ein Ereignis scheinbar mehrmals auftaucht, hierzu über

Code: Alles auswählen

msgbox oForm.ImplementationName
Die verschiedenen Namen anzeigen und wähle das aus, was erforderlich ist.

Wenn das nichts hilft, dann kannst Du mit

Code: Alles auswählen

IF oForm.isBeforeFirst THEN oForm.first
das Formular anweisen, auf den ersten Datensatz zu rutschen.

Mich würde das aber misstrauisch machen, was da verhindert, dass der erste Datensatz angezeigt wird. Und da bist Du dann wieder bei der Anbindung des Ereignisses.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Freischreiber
Beiträge: 755
Registriert: Fr 28. Mär 2014, 10:41

Re: Makro-Fehlermeldung nach Umstieg auf LO 5.2

Beitrag von Freischreiber » Fr 25. Aug 2017, 18:56

Hallo Robert,

das Makro ist bereits am Datensatzwechsel des Formulars angebunden, genauer gesagt: danach:
Formular-Eigenschaften.png
Formular-Eigenschaften.png (9.46 KiB) 4044 mal betrachtet

Das Listenfeld selbst ist an ein weiteres Makro gebunden, für das Ereignis "Modifiziert":
Eigenschaften Listenfeld.png
Eigenschaften Listenfeld.png (9.75 KiB) 4044 mal betrachtet
Das ist dieses Makro:

Code: Alles auswählen

SUB ChaosOrteListeSpeichern(oEvent AS OBJECT)
	oFeld = oEvent.Source.Model
	oForm = oFeld.Parent	
	oFeld.Commit
	IF oForm.IsNew THEN
		oForm.insertRow
	ELSE
		oForm.updateRow
	END IF
END SUB
Wo genau müßte ich deine Zeile mit der msgbox einfügen?

Gruß
Freischreiber

Edit: Die Funktion der Makros ist auch nicht mehr gegeben. Ein einem Auftrag zugeordneter Ort ist bisher immer aus dem Listenfeld verschwunden, da er belegt war.
Freischreiber nutzt seit 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Makro-Fehlermeldung nach Umstieg auf LO 5.2

Beitrag von RobertG » Fr 25. Aug 2017, 20:00

Hallo Freischreiber,

die msgbox solltest Du am besten in den das Makro für das Formular einfügen, und zwar vor die Stelle, an der das Makro hängt. Vermutlich bekommst Du da 2 verschiedene Implementationen:
org.openoffice.comp.svx.FormController
com.sun.star.comp.forms.ODatabaseForm

Wenn das Makro stehen bleibt, dann kannst Du gegebenenfalls die Implementation von dem weiteren Ablauf ausschließen, die das Stehen verursacht.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Freischreiber
Beiträge: 755
Registriert: Fr 28. Mär 2014, 10:41

Re: Makro-Fehlermeldung nach Umstieg auf LO 5.2

Beitrag von Freischreiber » Sa 26. Aug 2017, 09:14

Hallo Robert,

die msgbox meldet nur "com.sun.star.comp.forms.ODatabaseForm".

Was ich damit aber machen soll, weiß ich nicht.
Es muß doch im neuen LO irgend etwas anders sein als vorher? An der .odb-Datei habe ich gar nichts verändert.

Gruß
Freischreiber
Freischreiber nutzt seit 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Makro-Fehlermeldung nach Umstieg auf LO 5.2

Beitrag von RobertG » Sa 26. Aug 2017, 09:59

Hallo Freischreiber,

ich habe das jetzt einmal mit einer frischen Datenbank getestet. Dein Makro genommen, eine Tabelle mit einem Formular verbunden und dann einfach nur inID in einer msgbox abgefragt. Alles, was das Listenfeld betrifft, habe ich erst einmal auskommentiert.

Auch bei einem Formular, das erst einmal mit einem leeren Datensatz beginnt (Abfrage z.B. für eine ID, die es noch gar nicht gibt), erhalte ich keine Fehlermeldung.
Erst wenn ich die Abfrage so beeinflusse, dass sie keine Eingabe ermöglicht und auch keinen Datensatz enthält, dann kommt die Fehlermeldung, die Du auch hast. Die Datenquelle zu Deinem Formular ist also zur Zeit leer und lässt es auch nicht zu, dass das Formular Daten hinzufügen kann. Irgendetwas stimmt in der Verbindung zu Deiner externen HSQLDB vermutlich zur Zeit nicht.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Freischreiber
Beiträge: 755
Registriert: Fr 28. Mär 2014, 10:41

Re: Makro-Fehlermeldung nach Umstieg auf LO 5.2

Beitrag von Freischreiber » Sa 26. Aug 2017, 10:50

Hallo Robert,

inzwischen habe ich einmal deine damalige Beispieldatenbank ausprobiert, die unter LO 4.2 funktioniert hat, aus dem obigen Post.
Diese hier: download/file.php?id=3154

Auch da gelingt es mir nicht mehr, etwas zu speichern, und das ist eine interne DB.

Bei meiner externen DB merke ich sonst keine Probleme. Alle Tabellen und Abfragen sind wohl da.
Ich habe einmal nach diesem getlong gegoogelt, aus der Zeile, wo der Fehler auftritt, das bei mir sonst nirgends auftaucht und das hier gefunden:
http://hsqldb.org/doc/src/org/hsqldb/jd ... ltSet.html

Ich hatte nämlich die neue HSQLDB 2.4.0 in Verdacht, obwohl auch die unter LO 4.2 reibungslos lief.

Gruß
Freischreiber
Freischreiber nutzt seit 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Makro-Fehlermeldung nach Umstieg auf LO 5.2

Beitrag von RobertG » Sa 26. Aug 2017, 11:22

Hallo Freischreiber,

ich habe die Beispieldatei noch einmal runter geladen und keine Probleme damit feststellen können.
Wie sieht denn bei Dir die Ansicht auf die Tabellen aus? Kannst Du da Datensätze hinzufügen?

Testversion bei mir hier: LO 5.3.6.1, openSUSE 42.2, 64bit rpm Linux.
ebenso getestet mit LO 5.2.5.1 - die letzte 5.2-Version habe ich hier nicht installiert ...

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Freischreiber
Beiträge: 755
Registriert: Fr 28. Mär 2014, 10:41

Re: Makro-Fehlermeldung nach Umstieg auf LO 5.2

Beitrag von Freischreiber » Sa 26. Aug 2017, 14:28

Hallo Robert,
Kannst Du da Datensätze hinzufügen?
Einwandfrei, sowohl in der t-chaotischeorte als auch in der Zwischentabelle.

Jetzt hab ich mal ausführlicher probiert und muß mich korrigieren:

Das Zuordnen eines Orts zum Auftrag geht, es wird in der Zwischentabelle ein Datensatz gespeichert. Dieser Ort verschwindet dann aber nicht aus der Auswahlliste, wie er das früher getan hat, sondern erst, wenn man das gesamte Auftragsformular schließt und wieder öffnet.

Die Fehlermeldung "Message: Der Cursor zeigt vor die erste bzw. hinter die letzte Zeile.." kommt aber immer, wenn ich auf dem Auftragsblatt auf einen leeren Datensatz gehe, um einen neuen Auftrag einzugeben - auch bei Aufträgen, wo gar kein chaotischer Ort zugeordnet ist.

Gruß
Freischreiber


Edit: Einen deutlichen Unterschied merke ich jetzt bei der neuen Version:
Mein Problem aus: viewtopic.php?f=10&t=15730
(ismodified bemerkt keine Änderungen, bevor man das Feld verlassen hat)
ist jetzt ganz anders! Jede Änderung in einem Textfeld, auch wenn der Cursor noch drin ist, führt dazu, daß das Makro nach Speichern von Änderungen fragt.

Weiß nicht, ob das damit zu tun hat. In dem Speichern-Makro hier kommt "IF oForm.IsNew THEN..." vor, daher komme ich drauf.
Freischreiber nutzt seit 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Makro-Fehlermeldung nach Umstieg auf LO 5.2

Beitrag von RobertG » Sa 26. Aug 2017, 15:45

Hallo Freischreiber,

wenn Du selbst mit der alten Datenbank (interne Datenbank) diese Probleme hast, dann lässt sich das eventuelle für andere Leute besser nachvollziehen. Deshalb schreibe einmal auf, was genau Du bei der internen Datenbank machst und wo das Problem ist (welche Tabelle, welches Formular ...) Mir scheint das mittlerweile ein Problem zu sein, das ich hier nicht nachvollziehen kann, weil es betriebssystemspezifisch ist.

Du hast unter Windows (welche Version?) von einer 32bit-Version zu einer 64bit-Version gewechselt. Wie sieht es mit Java in dem Zusammenhang aus. Dann gibt es hier vielleicht Leute, die das mit der internen Datenbank nachstellen können. Ich kann jetzt höchstens noch nach einem Windows-Bug in diesem Zusammenhang suchen, weil ich diese Probleme eben nicht habe.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten