Seite 1 von 1

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

Verfasst: Mi 6. Jan 2021, 15:17
von Acco
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

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

Verfasst: Mi 6. Jan 2021, 15:51
von RobertG
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

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

Verfasst: Mi 6. Jan 2021, 20:43
von Acco
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

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

Verfasst: Do 7. Jan 2021, 21:50
von Wanderer
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

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

Verfasst: Fr 8. Jan 2021, 01:18
von Acco
Danke Wanderer, das hilft mir für demnächst.

Gruß acco