Hallo Hubert-Leo,

zumindest scheint jetzt klar zu sein, dass du mit einem Base-Dokument arbeitest. Es hängt sehr davon ab, wo dein Makro aufgerufen wird. Das Base-Dokument selbst kennt keine Drawpage, nur die einzelnen Formulardokumente innerhalb eines Base-Dokuments kennen diese Variable. Aus welchem Formulardokument rufst du das auf? Sind alle Variablen dort durch das Select de formulars bekannt?

Gruß

Gerhard

Am 03.10.2019 um 22:48 schrieb Leo-Hubert Kappes:
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+unsubscr...@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

Antwort per Email an