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 [email protected]: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: [email protected]?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
--
Liste abmelden mit E-Mail an: [email protected]
Probleme?
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