Hallo Stefan,
in vielen (oder sehr vielen) Fällen dürfte das Zusammensetzen des
SQL-Befehls aus Konstanten und Variablen die beste Wahl sein, wenn man
das einmal pro Programmaufruf verwendet, ist es tatsächlich die
günstigste Variante. Und wenn das deine momentane Aufgabe erledigt,
ist das ja gut so.
Wenn man einen solchen Zugriff z.B. in einer Schleife x-mal braucht
für jeweils andere Parameter, dann ist die Version mit Parametern und
Prepare sinnvoll, weil effektiver. Ich bin mir nicht sicher, ob ich
das selbst schon mal in LibreOffice verwendet habe, anderswo mit
Sicherheit, aber wenn das im Base-Handbuch sogar beschrieben ist, hat
Robert das garantiert getestet. Wenn das bei dir nicht funktioniert,
müsste man dem ggf. auf den Grund gehen. Ich will das jetzt auch nicht
ins Blaue hinein weitertreiben, aber wenn das wieder aktuell wird,
melde dich wieder.
Viele Grüße
Gerhard
Am 25.12.2020 um 23:23 schrieb Stefan Deutsch:
Hi Gerhard,Mein Problem war, dass das rowset mit dem prepare
scheinbar nichts angefangen kann und als command den SQL-Befehl mit
Platzhalter auszuführen scheint. Wenn ich anstelle des Platzhalters
einen festen Wert eingefügt habe, hat er sich wie gewünscht
verhalten. Auf die Idee, einfach mitmeinen SQL-Befehl zu bauen, war
ich noch nicht gekommen. Danke!Viele Grüße Stefan--Diese Nachricht
wurde von meinem Android Mobiltelefon mitWEB.DEMail gesendet.
Am 25.12.20, 19:25 schrieb Gerhard
Weydtgerhard.weydt@t-online.de:Hallo Stefan, was stellst du dir denn
vor, was noch einfacher sein sollte als das in deinem Beispiel
verwendete Vorgehen? Ich wüsste nur noch die Möglichkeit, den
SQL-Befehl per Code zusammenzusetzen, also etwas wie:stSQLRowSet =
"SELECT * FROM ""tab_Sub_Kat_1"" WHERE""Sub_Kat_Fremd_ID"" =
"deineVariabeFürDieIdwobei dann natürlich kein Prepare mehr nötig
ist.Das ist kürzer zu schreiben, wenn du das nur einmal (oder wenige
Male) brauchst, wenn die SQL-Anweisung in einer Schleife öfters mit
unterschiedlichen IDs ausgeführt wird, ist die Variante mit Prepare
effektiver. Viele GrüßeGerhard Am 25.12.2020 um 16:04 schrieb Stefan
Deutsch:Hallo zusammen,ich hab mal wieder ein kleines Problem, bei
dem ich nicht weiter komme.Ich möchte in meinem Makro unten dem
erstellten UnoService RowSet einCommand übergeben, dass mit
Platzhaltern ausgestattet ist, die ichvorher befülle. Geht das
überhaupt? Oder geht nur der Weg, der imHandbuch S. 431 für das
Arbeiten mit Platzhaltern beschrieben ist?Sub SubKat1_loeschenREM
Verbindung zum FormularoForm
=thisComponent.drawpage.forms.getByName("frm_Kategorie").getByName("frm_Subkategorie1")
oConnection = oForm.activeConnection()stDataSourceName =
ThisDatabaseDocument.TitlestDataSourceName = Left(stDataSourceName,
len(stDataSourceName)-4)iRow =
oForm.getByName("tabCtrl_SubKat1").RowSet.getRowotxtField
=oForm.parent.getByName("tabCtrl_Kategorie").getByName("txtField_KatID")iEintrag
= otxtField.getCurrentValue()REM SQL-Befehl vorbereitenstSQLRowSet =
"SELECT * FROM ""tab_Sub_Kat_1"" WHERE""Sub_Kat_Fremd_ID"" =
?"oSQLRowSet =
oConnection.prepareStatement(stSQLRowSet)oSQLRowSet.setInt(1,
iEintrag)REM RowSet-Objekt erstellenoRowSet =
createUnoService("com.sun.star.sdbc.RowSet")with
oRowSet.DataSourceName = stDataSourceName.Command =
stSQLRowSet.ResultSetConcurrency
=com.sun.star.sdbc.ResultSetConcurrency.UPDATABLE.ResultSetType =
com.sun.star.sdbc.ResultSetType.SCROLL_SENSITIVE.execute()End WithREM
Löschen der
ZeileoRowSet.absolute(iRow)oRowSet.deleteRowoForm.reloadEnd SubViele
Grüße und frohe Weihnachten euch allen!Stefan Deutsch -- Liste
abmelden mit E-Mail an:
users+unsubscribe@de.libreoffice.orgProbleme?https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/Tipps
zu
Listenmails:https://wiki.documentfoundation.org/Netiquette/de=Listenarchiv:https://listarchives.libreoffice.org/de/users/Datenschutzerklärung:https://www.documentfoundation.org/privacy
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.