Hallo an alle,
ich habe jetzt mal viel gelesen und getestet und komme (nicht ganz) zu
meinem gewünschten Ziel.
Folgende Variante funktioniert aus dem BASIC-Editor heraus, wenn ich den
Prozedurschritt ausführe:
Sub Fuett_anfuegen
DIM oDatasource AS OBJECT
DIM oConnection AS OBJECT
DIM oSQL_Statement AS OBJECT ' das Objekt, das den SQL-Befehl ausführt
DIM stSql AS STRING ' Text des eigentlichen SQL-Befehls
DIM oResult AS OBJECT ' Ergebnis für executeQuery
DIM iResult AS INTEGER ' Ergebnis für executeUpdate
oDatasource = thisDatabaseDocument.CurrentController
IF NOT (oDatasource.isConnected()) THEN oDatasource.connect()
oConnection = oDatasource.ActiveConnection()
oSQL_Statement = oConnection.createStatement() 'Statementobjekt erzeugen
stSql = "INSERT INTO ""tbl_Fuetterung_Uebergabe"" ( ""StockNr"",
""Datum"", ""Jahr_ID"", ""Futterart_ID"" ) SELECT
""tbl_StockGrunddaten"".""StockNr"", ""tab_Vorg_Fuet"".""Datum"",
""tab_Vorg_Fuet"".""Jahr_ID"", ""tab_Vorg_Fuet"".""Futterart_ID"" FROM
""tab_Vorg_Fuet"", ""tbl_Vorg_Jahr"", ""tbl_Vorg_Futterart"",
""tbl_StockGrunddaten"" WHERE ""tab_Vorg_Fuet"".""Jahr_ID"" =
""tbl_Vorg_Jahr"".""ID"" AND ""tab_Vorg_Fuet"".""Futterart_ID"" =
""tbl_Vorg_Futterart"".""ID"" AND ""tbl_StockGrunddaten"".""Marke"" =
TRUE AND ""tbl_StockGrunddaten"".""Abgangsjahr"" = 0;"
iResult = oSQL_Statement.executeUpdate(stSql) 'Anfügeabfrage ausführen.
End Sub
Aus dem Formular heraus funktioniert das Makro allerdings nicht !
Nun habe ich den Ablauf nach Anleitungen und Beispielen der Handbücher
so abgeändert, dass er aus dem Formular heraus funktionieren sollte.
Das sieht dann meiner Meinung nach so aus:
Sub Fuett_anfuegen
DIM oForm AS OBJECT
DIM oDatasource AS OBJECT
DIM oConnection AS OBJECT
DIM oSQL_Statement AS OBJECT ' das Objekt, das den SQL-Befehl ausführt
DIM stSql AS STRING ' Text des eigentlichen SQL-Befehls
DIM oResult AS OBJECT ' Ergebnis für executeQuery
DIM iResult AS INTEGER ' Ergebnis für executeUpdate
oForm = thisComponent.Drawpage.Forms.getByName("MainForm")
oConnection = oForm.ActiveConnection()
oSQL_Statement = oConnection.createStatement() 'Statementobjekt erzeugen
stSql = "INSERT INTO ""tbl_Fuetterung_Uebergabe"" ( ""StockNr"",
""Datum"", ""Jahr_ID"", ""Futterart_ID"" ) SELECT
""tbl_StockGrunddaten"".""StockNr"", ""tab_Vorg_Fuet"".""Datum"",
""tab_Vorg_Fuet"".""Jahr_ID"", ""tab_Vorg_Fuet"".""Futterart_ID"" FROM
""tab_Vorg_Fuet"", ""tbl_Vorg_Jahr"", ""tbl_Vorg_Futterart"",
""tbl_StockGrunddaten"" WHERE ""tab_Vorg_Fuet"".""Jahr_ID"" =
""tbl_Vorg_Jahr"".""ID"" AND ""tab_Vorg_Fuet"".""Futterart_ID"" =
""tbl_Vorg_Futterart"".""ID"" AND ""tbl_StockGrunddaten"".""Marke"" =
TRUE AND ""tbl_StockGrunddaten"".""Abgangsjahr"" = 0;"
iResult = oSQL_Statement.executeUpdate(stSql) 'Anfügeabfrage ausführen.
End Sub
Allerdings bekomme ich hier bei der Zeile: oForm =
thisComponent.Drawpage.Forms.getByName("MainForm")
den
BASIC-Laufzeitfehler.
Eigenschaft oder Methode nicht gefunden: Drawpage.
Drawpage ist aber im Handbuch als Container der Formulare beschrieben
uns sollte vorhanden sein, wenn man aus einem Formular heraus das Makro
aktiviert.
Oder sehe ich da noch was falsch?
MfG L-H
--
Liste abmelden mit E-Mail an: discuss+unsubscribe@de.libreoffice.org
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/discuss/
Datenschutzerklärung: https://www.documentfoundation.org/privacy
Context
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.