🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[gelöst] Base /MariaDB: angeblich kein Ergebnis bei Update-Makro

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Acco
Beiträge: 94
Registriert: Fr 31. Jan 2014, 16:41

[gelöst] Base /MariaDB: angeblich kein Ergebnis bei Update-Makro

Beitrag von Acco » Mi 6. Jan 2021, 15:17

Guten Tag liebe Helfer,

ich versuche mich an meiner ersten Datenbank in MariaDB mit Frontend LibreOffice Base mit direkter Verbindung, siehe auch meine Signatur.
In einem Makro ist folgender Code (Ausschnitt):

Code: Alles auswählen

..... 
' damit die MariaDB boolean-Werte von 'true' (nicht: true) auf 1 gesetzt werden. 
' Sonst erscheinen sie nicht im Select-Ergebnis 
	oDatenquelle = ThisComponent.Parent.DataSource
	oVerbindung = oDatenquelle.GetConnection("","")
	oSQL_Anweisung = oVerbindung.createStatement()
	stSQL = "select""Name"" from ""Namen"" where ""NamenAusw1"" = 'true'"
	oAbfrageErgebnis = oSQL_Anweisung.executeQuery(stSQL)
	
	IF NOT ISNULL(oAbfrageErgebnis) THEN
		oSQL_update = oVerbindung.createStatement()
		stSQL_update = "update ""Namen"" set ""NamenAusw1"" = '1' where ""NamenAusw1"" = 'true'"
		oAbfrageUpdate = oSQL_update.executeQuery(stSQL_update)
	ENDIF
	......
Untenstehender Fehler wird angezeigt, obwohl das Makro ist bis hierher ausgeführt wurde und die update-Werte in der Tabelle entsprechend geändert sind. Im Weiteren wird das Makro jedoch abgebrochen. Wenn ich die IF.. ENDIF Sequenz weglasse und das Makro ohne Null-Prüfung ausführen lasse, kommt die selbe Meldung. Ich stehe jetzt auf dem Schlauch, weiß wer Rat?

Gruß acco

Bild
Dateianhänge
Screenshot_Ausnahme.png
Screenshot_Ausnahme.png (17.34 KiB) 2074 mal betrachtet
Zuletzt geändert von Acco am Mi 6. Jan 2021, 20:43, insgesamt 1-mal geändert.
openSUSE Tumbleweed - LibreOffice 24.8.2.1

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Base /MariaDB: angeblich kein Ergebnis bei Update-Makro

Beitrag von RobertG » Mi 6. Jan 2021, 15:51

Hallo Acco,

fragst Du da ein BOOLEAN-Feld ab oder ist das ein VARCHAR-Feld? 'true' ist jedenfalls in einfache Anführungszeichen gesetzt und dadurch ein Text. Schau einmal hier: https://mariadb.com/kb/en/boolean/ BOOLEAN und TINYINT(1) sind gleich behandelt. Alle, was größer als 0 ist zählt als TRUE.

Zur Maskierung bei MySQL-Abfragen siehe auch das Handbuch. Die normale Maskierung geschieht dort so: `Tabellenname`.`Feldname`. Habe ich jetzt für die aktuelle direkte Verbindung nicht getestet, kenne ich aber auch so von PHPMyAdmin.

Und noch ein Tip zu Deiner LO-Version: Mache so schnell wie möglich ein Update. Vor allem bei gtk3 sind für die Formularfelder so viele Bugs in der neuen Version, dass schon ein Update von 7.0.3 zu 7.0.4 einiges behebt.

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

Acco
Beiträge: 94
Registriert: Fr 31. Jan 2014, 16:41

Re: Base /MariaDB: angeblich kein Ergebnis bei Update-Makro

Beitrag von Acco » Mi 6. Jan 2021, 20:43

Wieder mal: Danke Robert. Du hilfst mir sehr.

Der Tipp "Update LibreOffice auf 7.04" hat in der Tat einige Probleme mit Feldern in externen Formularen gelöst, die in der Warteschleife schon gelauert haben.

Die Spalte "NamenAusw1" war tatsächlich VARCHAR. Ich hatte Daten aus einer internen DB über Calc in MariaDB importiert, da wurde die Spalte automatisch zu VARCHAR, weil die Import-Werte 'true' und nicht 1 oder 2 waren. Das habe ich da nicht geschnallt. Nach Ändern der Werte von 'true' zu 1, konnte die Spalte auf TinyInt umgestellt werden und das Problem war weg und der gepostete Code dadurch überflüssig.

Mit der Maskierung " " wie im geposteten Code gibt es bei direkter Verbindung keine Schwierigkeiten, bisher funktioniert da alles.

Gruß acco
openSUSE Tumbleweed - LibreOffice 24.8.2.1

Wanderer
* LO-Experte *
Beiträge: 909
Registriert: Di 11. Feb 2014, 20:03
Wohnort: Berlin

Re: [gelöst] Base /MariaDB: angeblich kein Ergebnis bei Update-Makro

Beitrag von Wanderer » Do 7. Jan 2021, 21:50

Hallo,

auch wenn Du den Fehler nicht mehr findeen musst: In der Fehlermeldung wird gemeldet, dass kein Resultset zurückgegeben wird, da Du executeQuery verwendest
Acco hat geschrieben:
Mi 6. Jan 2021, 15:17
.....

oAbfrageUpdate = oSQL_update.executeQuery(stSQL_update)
ENDIF
.....
Für SQL-Anweisungen, die keine Ergebnistabelle liefern kannst Du executeUpdate verwenden.

Mfg, Jörn
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit

Acco
Beiträge: 94
Registriert: Fr 31. Jan 2014, 16:41

Re: [gelöst] Base /MariaDB: angeblich kein Ergebnis bei Update-Makro

Beitrag von Acco » Fr 8. Jan 2021, 01:18

Danke Wanderer, das hilft mir für demnächst.

Gruß acco
openSUSE Tumbleweed - LibreOffice 24.8.2.1


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten