🙏 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. 🤗

Substring längste/kürzeste Worte auslesen

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Dru Drury
Beiträge: 13
Registriert: Fr 7. Okt 2016, 02:08

Substring längste/kürzeste Worte auslesen

Beitrag von Dru Drury » Do 30. Mai 2024, 03:25

Geschätzte Libristen,

nachdem ich mittels Suche hier schon oft Lösungen für das eine oder andere Datenbankproblem gefunden habe (meinen herzlichen Dank den fleißigen Helfern!), nun nach längerer Zeit mal wieder eine Aufgabe, bei der ich nicht recht weiß, wie anstellen...

Es geht grob formuliert darum, einen Substring aus mehreren Spalten einer Tabelle auszulesen und ihn mittels Abfrage (?) quasi per Knopfdruck im jeweils aktuellen Datensatz irgendwie (bin da offen) anzeigen zu lassen, um ihn zu kopieren und in anderen Programmen einzupflegen/weiterzubearbeiten.

Zwei Schwierigkeiten hab ich da, die erste und vermutlich kniffligste ist das konkrete Auslesen eines Teiles des Substrings, quasi der SubSubstring.... also der Tanga unterm Schlüpper :o kleiner Scherz am frühen Morgen :D Die zweite Schwierigkeit dreht sich dann um die Anzeige/Aufbewahrung dieses Substrings in der Datenbank und die werde ich lieber separat posten, damit das nicht durcheinanderläuft und anderen, die ein ähnliches Problem haben, dann zukünftig besser zugänglich ist.

Also worin besteht die Kniffligkeit? Das liegt an einem konkreten Textfeld, das vom Substring zu Teilen erfaßt werden soll:

Der Substring soll zunächst in einem Feld/Spalte die ersten Zeichen bis zum Auftauchen eines (immer vorhandenen) Kommas zurückgeben. Soweit ok, läuft. Als nächstes die ersten vier Zeichen eines anderen Feldes/Spalte, tutti paletti. Dann noch ein ganzes Feld/Spalte, nitschewo problem. Beim vierten Feld/Spalte, das ausgelesen werden soll, wird's dann aber gemein: Das Feld enthält unterschiedlich lange und grundverschiedene Texte. Aus diesen Texten benötige ich die ein-zwei längsten Wörter oder aber wenigstens ein Destillat, bei dem alle kürzeren Wörter und Satzzeichen rausfliegen und alle längeren stehen bleiben (s.u.). Und da hab ich irgendwie keine rechte Idee, wie man das anstellen könnte.

Als vielleicht brauchbarer Ansatz erscheint mir die Überlegung, daß man alle Leerzeichen entfernen könnte und mittels Vergleich der Zeichenanzahl zum ursprünglichen Text schon mal die Anzahl der Worte rauskriegt (womit zugleich auch ein Wert für die mittlere Zeichenanzahl der im Textfeld enthaltenen Worte dargestellt werden könnte, so daß man immerhin wüßte "oberhalb" welchen Wertes die längeren Worte, bzw. unterhalb welchen Wertes die kürzeren Worte des Feldes angesiedelt sind).

fiktives Beispiel:

Textfeld: "Die Rolle Japans beim Untertunneln des Mariannengrabens"

= 55 Zeichen, davon 6 Leerzeichen, ergo 7 Worte, deren mittlere Länge bei knapp über 6 liegt, alles über SQL leicht zu ermitteln. Es steht damit also fest, daß wenigstens ein Wort über 6 Zeichen enthalten ist - das/die will ich. Nur wie komm ich an das Ding/die Dinger ran?

Hat jemand von euch guten Geistern eine Idee/Lösungsansatz, wie das in SQL zu bewerkstelligen wäre?

Ich hab schon überlegt, ob man sich nicht von Rechts und Links an das längste Wort ranpirschen kann, indem man die Leerzeichen der Reihe nach und von beiden Seiten abklappert und die zurückgelegte Wegstrecke im Feld dann von der Gesamtzeichenzahl abzieht - irgendwann stößt man so dann ja aufs längste Wort, aber die Umsetzung in SQL wäre vermutlich dermaßen häßlich, daß man sich sehr zusammenreißen müßte um nicht entweder in den Bildschirm zu speien, oder alternativ: irre vor dem Code zu werden.

Noch zur Erläuterung: Das fragliche Textfeld ist zwar von Datensatz zu Datensatz völlig verschieden befüllt und im Prinzip in der Länge unbegrenzt, es reicht für mich aber aus, wenn man etwa auf der Länge des o.g. Beispieles - also unter den ersten 50-70 Zeichen arbeitet. Das ist ja auch leicht umsetzbar, also darüber keine Gedanken machen...

Nachsatz:
Jetzt hatte ich doch gerade den schönen feuchten Traum, man könnte mit REPLACE und wildcards einfach den Mittelwert der Zeichenanzahl als Grundlage für die Löschung aller Worte mit einer Zeichenanzahl unterhalb dieses Wertes nehmen, nur leider leider sehe ich nun, das REPLACE keine wildcards unterstützt (grrrr!). Aber dieser umgekehrte Ansatz - die von der Zeichenanzahl unterhalb des Durchschnittswertes liegenden Worte zu entfernen, statt die längsten herauszufiltern, mag vielleicht dennoch eher möglich sein?! Evtl. würde es auch schon reichen (quasi als dritter Lösungsansatz) alle 2-, 3- und 4-buchstabigen Wörter zu entfernen....nur - gleiches Problem - wie greife ich die da mit SQL raus, wenn Anzahl und Position der Leerzeichen einfach schwer variabel ist? Ich komm einfach auf keine gescheite Idee....

Beste Grüße,
Dru Drury

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

Re: Substring längste/kürzeste Worte auslesen

Beitrag von RobertG » Do 30. Mai 2024, 08:39

Spontan fällt mir dazu erst einmal auch wenig ein. Aber eine zwei wichtige Informationen fehlen mir.
  • Wenn Du so intensiv mit SQL arbeitest kann es sein, dass Du eventuell nicht mit der internen HSQLDB arbeitest und da dann noch weitere Möglichkeiten in der Wahl der benutzen Datenbank stecken.
  • Wäre es nicht einfacher, so etwas über Makros zusammen zu bauen? Da gibt es schließlich auch Schleifen, die zumindest die Interne Datenbank nicht kann.
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

Dru Drury
Beiträge: 13
Registriert: Fr 7. Okt 2016, 02:08

Re: Substring längste/kürzeste Worte auslesen

Beitrag von Dru Drury » Do 30. Mai 2024, 13:03

Hallo Robert,
danke für die schnelle Rückmeldung! Ich arbeite schon mit der eingebauten Datenbank... SQL flutscht so langsam, allerdings sind die Sachen, die ich da in meiner Datenbank mache, bislang nicht allzu avanciert.

Ich habe im Prinzip kein Problem damit, daß über ein Makro zu lösen, nur da bin ich doch weitestgehend blank... Ich habe ein Makros zu laufen, die auf Knopfdruck Formulare öffnen, über die bei Bedarf Listenfelder mit neuen Daten gefüttert werden können - im Grunde genommen hier aus dem Forum copy-paste rausgeholt und dann mit Gefummel an meine Datenbank angepaßt, laufen stabil, aber das war's dann auch schon.

Solltest Du mal ein Makro gebastelt haben, das ein beliebiges Wort von zunächst unbestimmter Länge und an unbekannter Position aus einem Textfeld fischt, kann ich mir das ja mal anschauen, ob ich damit klar komme.... Ich fürchte aber, ich brauchte da doch relativ viele Erläuterungen zur Syntax.

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

Re: Substring längste/kürzeste Worte auslesen

Beitrag von RobertG » Do 30. Mai 2024, 16:24

Versuche einmal mit diesem Makro weiter zu kommen, Das funktioniert erst einmal ohne die Datenbank. Um das Einlesen der Daten aus der Datenbank und die Weitergabe des Ergebnisses kümmern wir uns später:

Code: Alles auswählen

SUB LaengesterString
	DIM stText AS STRING, stString1 AS STRING, stString2 AS STRING
	DIM i AS INTEGER, inLenMax AS INTEGER, inLenMax2 AS INTEGER, inCount AS INTEGER
	DIM ar
	stText = "Die Rolle Japans beim Untertunneln des Mariannengrabens"
	ar = Split(stText)
	inLenMax = 0
	inLenMax2 = 0
	stString1 = ""
	stString2 = ""
	FOR i = 0 TO UBound(ar())
		inLen = Len(ar(i))
		IF inLen > inLenMax THEN inLenMax = inLen
	NEXT	
	FOR i = 0 TO UBound(ar())
		inLen = Len(ar(i))
		IF inLen = inLenMax THEN inCount = inCount + 1
	NEXT
	IF inCount = 1 THEN	
		FOR i = 0 TO UBound(ar())
			inLen = Len(ar(i))
			IF inLen > inLenMax2 AND inLen < inLenMax THEN inLenMax2 = inLen
		NEXT
	ELSE inLenMax2 = inLenMax
	END IF	
	FOR i = 0 TO UBound(ar())
		inLen = Len(ar(i))
		IF inLen = inLenMax AND stString1 = "" THEN 
			stString1 = ar(i)
		ELSEIF inlen = inLenMax2 AND stString2 = "" THEN 
			stString2 = ar(i)
		ELSE
		END IF
	NEXT
	msgbox stString1 & ", " & stString2
END SUB
Ich gehe den String über ein Array mehrmals durch. Einmal um den längsten String zu finden, danach den zweitlängsten String. Sollte der zweitlängste String genauso lang sein wie der längste String, so muss das Maß für die zweite Länge genauso groß sein. Im dritten Durchgang werden dann die beiden Strings mit der größten Länge heraus gesucht. Existieren bereits zwei Strings mit einer gleichen Länge am Anfang, dann fallen die anschließenden Strings mit gleicher Länge allerdings durch das Netz.
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

Dru Drury
Beiträge: 13
Registriert: Fr 7. Okt 2016, 02:08

Re: Substring längste/kürzeste Worte auslesen

Beitrag von Dru Drury » Di 4. Jun 2024, 01:33

Hallo Robert,

also erst mal ganz herzlichen Dank für die Mühen, die Du Dir mit dem Makro für mich (und die geneigte Leserschaft) gemacht hast! Dein Makro tut in der Tat was es soll und nahezu auch genau was ich brauche (s.u.), auch wenn ich die Befehlsstruktur mangels Makro-Kenntnissen nur ansatzweise verstehe. Leider habe ich nicht die Zeit mich richtig tief in die Makrosprache reinzuknien (würde gerne, aber is halt nicht), weshalb ich letzten Endes doch ein wenig im Nebel rumstocher... kleiner Triumph: ich hab doch sofort sehen können, wo ich das Komma rausnehmen muß in der Ausgabe des Strings (brauche die Kommata nicht für eine Weiterverarbeitung, es sollen wirklich nur die Worte mit Leerzeichen getrennt ausgegeben werden) und ich verstehe (auch wenn ich es nicht nachformulieren kann), daß Du den Suchtext zweimal durchläufst und bei einem eventuellen dritten Durchlauf der Code deutlich anschwellen würde (wird aber nicht benötigt, dies schreibe ich nur zur Erläuterung meiner Lektüre Deines Makros). Letzteres ist deshalb egal, weil ich mit den zwei längsten Worten hervorragend klarkomme und auch die Limitierung auf die ersten zwei Vorkommen einer maximalen Zeichenanzahl kein Problem für mich darstellt : es geht wirklich nur um "zwei längste" Worte, wobei völlig egal ist, ob da jetzt noch sechs weitere Worte mit der gleichen Zeichenanzahl folgen. Zum Hintergrund: Ich benötige längere Worte dafür, um Suchergebnisse in anderen Datenbanken/Suchmaschinen auf eine kleinere Ergebnismenge zu reduzieren, da komme ich mit den zwei längsten (oder zwei der längsten) Worten eigentlich immer dorthin, wo ich möchte. Also soweit ist Dein Makro perfekt für meine Bedürfnisse geeignet!

Ich habe den zu durchsuchenden String (Japans Untertunnelung des Mariannengrabens) in dem Makro jetzt ein paar mal mit anderen Beispielen aus meiner Datenbank ersetzt...Als Ergebnis kommt ganz grundsätzlich genau heraus, was ich umsetzen möchte. Kleine Einschränkung: Da im Makro wohl nur nach Leerzeichen gesucht/getrennt wird, bleiben andere Satzzeichen bei der Ermittlung der längsten Teilstrings noch enthalten (was ja auch nachvollziehbar ist). Diese Zeichen will ich eigentlich nicht haben, da Sie in der Weiterverarbeitung relativ viel Arbeit bei der Entfernung verursachen. Ließen diese sich schon im Makro entfernen/ausschließen? Im Prinzip reichte es die häufigsten Satzzeichen irgendwie zu eliminieren: Punkt, Komma, Bindestrich (der normale), doppelte Anführungszeichen und Doppelpunkt, also [ .,-"": ] Alle anderen Satzzeichen können in dem Feld zwar auch auftreten, das ist aber nur in einem so verschwindend geringen Teil der Datensätze der Fall, so daß das auch händisch in der Weiterverarbeitung korrigiert werden kann.

Ein anderer Punkt, der mich umtreibt: Die Ausgabe des Strings in Deinem Makro wird ja über einen Dialog (?) geliefert. Soweit so gut, damit kann ich im Prinzip gut arbeiten, aber das hieße doch in diesem Fall, daß die anderen 3 Teilstrings ([1.] erste 4 Zeichen einer Spalte, [2.] alle Zeichen vor erstem Komma/Leerzeichen eines weiteren Feldes/Spalte sowie [3.] ganzes Feld/Spalte) in das Makro mit aufgenommen werden müßten? Das würde ich vermutlich nicht selbst hinkriegen. Wenn das Makro aber eingebunden werden kann in eine SQL-Abfrage, die die anderen 3 Teilstrings mit Leerzeichen getrennt ausgibt (kriege ich hin), dann wären wir eigentlich schon am Ziel.

Vllt. nochmal kurz zur praktischen Handhabung/gewünschtem Ablauf: Ich befülle eine Tabelle via Formular, mit allen für den Substring erforderlichen Daten (1. Schritt). In diesem, gleichen Formular müssen nachher aber Daten eingetragen werden, die (2. Schritt) eine Recherche in anderen Suchmaschinen/Datenbanken erfordern. Dazu würde ich gerne einfach nach Eingabe der für den Substring erforderlichen Daten auf einen Button drücken können, der mir dann diesen aus vier Feldern zusammengesetzten Substring zum einfachen copy/paste liefert, oder ihn (optimale Lösung) in ein editierbares Textfeld des gleichen Formulars (bzw. der zugrundliegenden Tabelle) hineinschreibt.


Beste Grüße und nochmals ein dickes Dankeschön! Dru Drury

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

Re: Substring längste/kürzeste Worte auslesen

Beitrag von RobertG » Mi 5. Jun 2024, 09:23

Andere Zeichen raus nehmen würde ich so machen:

Code: Alles auswählen

	stText = "Die Rolle Japans,: beim Untertunneln: des; Mariannengrabens"
	stText = Join(Split(stText,","))
	stText = Join(Split(stText,";"))
	stText = Join(Split(stText,":"))
Direkt nach dem Text für jedes Zeichen, das Du raus nehmen musst, den String aufteilen und ohne Zeichen wieder zusammenführen.

Jetzt möchtest Du das Ganze natürlich so einbinden, dass aus der Datenbank die anderen Feldinhalte gelesen und mit diesem zusammengefügt werden. Du braucht ja sowieso ein Formular um damit vernünftig arbeiten zu können. Ich gehe einmal von einem Formular aus, in dem ein Button und die zugrundeliegende Tabelle als Formulardatenquelle vorhanden ist. Das Makro soll durch den Button ausgelöst werden.

Code: Alles auswählen

SUB LaengsterString(oEvent AS OBJECT)
     oForm = oEvent.Source.Model.Parent
     stText1 = oForm.getString(oForm.findColumn("Tabellenfeld1"))
     stText2 = oForm.getString(oForm.findColumn("Tabellenfeld2"))
So liest Du den Inhalt der Felder aus, auch z.B. das "stText" aus dem Beispiel.

Code: Alles auswählen

     stGesamttext = stText1 & " " & stText2
     oForm.updateString(oForm.findColumn("Tabellenfeld Gesamttext"),  stGesamttext)
END SUB
Damit fügst Du den Gesamttext in die Tabellenspalte "Tabellenfeld Gesamttext" ein. Jetzt könntest Du noch automatisch abspeichern, aber das ist etwas komplizierter, da unklar ist, ob es sich dabei um einen neuen oder einen bestehenden Datensatz handelt.

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

Dru Drury
Beiträge: 13
Registriert: Fr 7. Okt 2016, 02:08

Re: Substring längste/kürzeste Worte auslesen

Beitrag von Dru Drury » Mi 5. Jun 2024, 23:45

Hallo Robert,
was soll ich sagen, das funktioniert ganz wunderbar. Und war auch nicht allzu schwierig mit ein wenig try/error nachzuvollziehen. Ich hatte deutlich Schlimmeres befürchtet. Das Makro habe ich jetzt so angepaßt/zusammengebastelt, daß es das in der Tabelle hinter dem Formular liegende Textfeld auf die zwei längsten Worte durchsucht, nachdem bestimmte Satzzeichen entfernt worden sind. Ergänzt wird der String dann noch um ein ganzes Feld, das vollständig ausgelesen wird. Hab das Makro sodann einem Button im Formular zugeordnet und das entsprechende Feld im Formular für diesen konstruierten String wird fein säuberlich gefüllt und kann bearbeitet werden, falls Bedarf. Funktioniert genauso, wie ich es brauche.

Noch Kopfzerbrechen macht mir lediglich, wie ich in dieses Makro die zwei anderen Felder hineinbekomme, von denen ich sprach. Das geht vermutlich nicht ganz analog, denn ich hatte nicht daran gedacht (weil ich von SQL her kam), daß die Felder aus verbundenen Tabellen kommen, die Listenfelder des Hauptformulares befüllen. Für den Suchstring brauche ich leider nicht die abgespeicherten INTEGER-Werte (sonst wäre hier dank Deines Makros schon Schluß), sondern die angezeigten Werte bzw. Teile davon.

Hierbei geht es einmal um die ersten vier Zeichen eines auf diese Weise mit der Tabelle hinter dem Hauptformular verbunden Feldes, ein anderes Mal um alle Zeichen bis zum Auftauchen eines Kommas oder Freizeichens einer anderen, auf die gleiche Weise verbunden Zelle. Immerhin verstehe ich dank Deines Makros mittlerweile, wie ich die letzte Bedingung (Freizeichen ODER Komma) im Makro reduziere auf das Auftauchen nur einer der zwei Zeichen (split & join)... Ich hatte jetzt eine Weile im Forum gesucht, bin aber nicht recht fündig geworden, was diese 2 Probleme anbelangt (mag aber an mir liegen). Wenn Du da vielleicht eine hier behandelte Lösung erinnerst, bin ich natürlich auch für einen bloßen Link dorthin dankbar! Sieht doch so aus, daß ich mir daß dann hinfummeln könnte im Makro.

Beste Grüße & nochmals vielen Dank für die Hilfe bislang!
Dru Drury

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

Re: Substring längste/kürzeste Worte auslesen

Beitrag von RobertG » Do 6. Jun 2024, 08:34

Zeige einmal die Abfrage, mit der Du bisher Dein Formular bestückst. Die Abfrage muss ja editierbar sein, damit Du den entsprechenden Inhalt speichern kannst. Die Fremdschlüssel (Integer) deuten ja auf einen anderen Textinhalt hin. Den musst Du nur auslesen. So etwas geht in Abfragen gut mit korrelierenden Unterabfragen:

Code: Alles auswählen

SELECT "a".*, (SELECT "Name" FROM "Tabelle2" WHERE "ID" = "a"."Tabelle2_ID") AS "NameTab2" FROM "Tabelle1" AS "a"
So erhältst Du das Feld "Name" aus der 2. Tabelle und siehst das in der Abfrage, die eigentlich nur die erste Tabelle zum Editieren zur Verfügung stellt. Du musst der "Tabelle1" für so eine Konstruktion ein Alias (hier: "a") zuweisen. Sonst ergibt die Unterabfrage kein eindeutiges Ergebnis.

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

Dru Drury
Beiträge: 13
Registriert: Fr 7. Okt 2016, 02:08

Re: Substring längste/kürzeste Worte auslesen

Beitrag von Dru Drury » Sa 8. Jun 2024, 20:55

Also hier mal zwei SQL-Abfragen, mit denen die Listenfelder und damit die hinter dem Formular liegende Tabelle typischerweise befüllt werden:

Code: Alles auswählen

"SELECT "corp_body_name", "ID_corp" FROM "tbl_corp" AS "institution_1_ID" ORDER BY "corp_body_name" ASC"
(angezeigt wird: "corp_body_name", gespeichert wird "ID_corp")
oder

Code: Alles auswählen

SELECT "publisher", "ID_publisher" FROM "tbl_publisher" ORDER BY "publisher" ASC
(angezeigt wird: "publisher", gespeichert wird "ID_publisher")

Das tut alles was es soll. Editierbar sollen die Listenfelder im Hauptformular nicht sein, sie werden einfach in eigenen Formularen befüllt, die ich bei Bedarf über Buttons mit Makros öffne. Deinen SQL Code benutze ich also im Prinzip wie Du ihn beschrieben hast, nur ohne zwingend einen Alias zu vergeben.

Was ich brauche, ist das Auslesen eines Strings aus diesen Tabellen, und zwar jeweils aus dem Feld, daß im Listenfeld angezeigt (!) wird. Ich habe versucht, eine solche SQL-Anweisung in das Makro zu schreiben, aber ich nehme an, da fehlen mir doch deutlich die Kenntnisse für. Die reine SQL-Anweisung ist kein Problem.

Was ich probiert habe, ist, Dein Makro zu ergänzen um

Code: Alles auswählen

DIM strSQL AS STRING

und

strSQL = "SELECT ""a"".*, (SELECT ""name"" FROM ""tbl_person"" WHERE ""ID_persons"" = ""a"".""persons_1_ID"") AS ""Name_tbl_person"" FROM ""tbl_hauptformular"" AS ""a"""

und es dann ranzuhängen an den existierenden string

stGesamttext = stString1 & " " & stString2 & " " & stText2 & " " & stText3 & " " & strSQL[/code]

aber das retourniert nur die SQL-Expression an sich...

Dru Drury
Beiträge: 13
Registriert: Fr 7. Okt 2016, 02:08

Re: Substring längste/kürzeste Worte auslesen

Beitrag von Dru Drury » Sa 8. Jun 2024, 22:42

Ich habe jetzt mal mithilfe Deines Handbuches folgendes Makro gebastelt. Es stellt nur auf die Einbettung des SQL-Befehls ab (funktioniert in SQL sauber), die anderen (oben gelösten Fragen) habe ich rausgenommen, damit es erstmal übersichtlich bleibt.

Code: Alles auswählen

SUB SearchStringTEST(oEvent AS OBJECT)
DIM oSQL_Statement AS OBJECT 
DIM stSql AS STRING
DIM oResult AS OBJECT
stSql = "SELECT ""a"".*, (SELECT ""name"" FROM ""tbl_person"" WHERE ""ID_persons"" = ""a"".""persons_1_ID"") AS ""Name_tbl_person"" FROM ""tbl_warenbestand"" AS ""a"""
oSQL_Statement = oConnection.createStatement(stSql)
oResult = oSQL_Statement.executeQuery(stSql)
stGesamttext = oResult & " funzt "
oForm.updateString(oForm.findColumn("search_text"), stGesamttext)
END SUB
Resultat ist aber: "BASIC-Laufzeitfehler. Objektvariable nicht belegt." In dieser Zeile:

Code: Alles auswählen

oSQL_Statement = oConnection.createStatement(stSql)
Was fehlt da oder ist falsch?


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