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

Kein Zugriff auf temporary table über Formular

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
doko
Beiträge: 1
Registriert: Di 12. Mai 2020, 20:33

Kein Zugriff auf temporary table über Formular

Beitrag von doko » Mi 13. Mai 2020, 13:31

Hintergrund:
Ich schreibe eine Datenbankanwendung zur Depotverwaltung. Für die Auswahl aus einem Bestand zum Zwecke eines Depotübertrags erstelle ich per Macro eine temporäre Tabelle:
sub createTransferBestand(pDepot_oid as Long)
DIM oDatenquelle AS OBJECT
DIM oVerbindung AS OBJECT
DIM oSQL_Anweisung AS OBJECT
DIM stSql AS STRING

oDatenQuelle = thisDatabaseDocument.CurrentController
If NOT (oDatenQuelle.isConnected()) Then
oDatenQuelle.connect()
End If

oVerbindung = oDatenQuelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()

stSQL = "DROP temporary TABLE IF EXISTS Temp_TransferBestand"
oSQL_Anweisung.execute (stSQL)

stSQL = "create temporary table Temp_TransferBestand (oid int(11) NOT NULL AUTO_INCREMENT , primary key (oid), Menge decimal(14,2) DEFAULT 0, Alles boolean) "
stSQL = stSQL + "select * from vDepotposition where Depot_oid = " + pDepot_oid
oSQL_Anweisung.execute (stSql)

oSQL_Anweisung.close()
end sub
Danach öffne ich ein Formular, was auf diese Tabelle zugreift und eine Auswahl von Bestandspositionen für den Transfer ermöglicht.

Mein Problem:
Das Formular sagt, es kennt diese Tabelle nicht. Sie wird auch nicht unter dem Reiter Tabellen (base) angezeigt. Ich kann aber über eine SQL-Abfrage auf die Tabelle zugreifen.
Ich habe also aus der temporären eine normale Tabelle gemacht (die ich auch für die Formularerstellung verwendet habe). Alles funktioniert wunderbar, auch wenn ich den Macro von normal auf temporary umstelle (solange die Session geöffnet bleibt). Ich kann sogar die normale Tabelle in der DB löschen und es funktioniert noch.
Nur wenn ich Base verlasse und wieder starte, kennt das Formular die temporäre Tabelle nicht (obwohl der Macro sie ja in der Session erstellt).
Work-around ist, dass ich die Tabelle als normale Tabelle ohne Einträge in der DB belasse und in Base mit der temporary table arbeite (das geht, weil die temporary table sich quasi vor die normale Tabelle legt, solange sie existiert).

Gibt es einen anderen Weg, um in Base mit einem Formular auf einer temporären Tabelle zu arbeiten?

Meine Umgebung:
MySQL Workbench Community (GPL) for Linux/Unix version 6.3.8 CE build 1228 (64 bit)
Configuration Directory: /home/er/.mysql/workbench
Data Directory: /usr/share/mysql-workbench
Cairo Version: 1.15.10
OS: Linux 4.15.0-99-generic
CPU: 12x Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz (3162.399MHz) - 31,35GiB RAM
Distribution: Ubuntu 18.04.4 LTS

MariaDB Server version 5.5.57-MariaDB

mysql Ver 14.14 Distrib 5.7.30, for Linux (x86_64) using EditLine wrapper

LibreOffice Version: 6.3.6.2

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

Re: Kein Zugriff auf temporary table über Formular

Beitrag von RobertG » Mi 13. Mai 2020, 16:15

Hallo doko,

ich hatte das auch schon einmal für das Base-Handbuch mit der MariaDB durchprobiert. Das habe ich dann so auch im Handbuch hinterlegt:
Leider zeigt Base die temporären Tabellen nicht im Tabellencontainer an. Es kann über Abfragen auf diese Tabellen zugegriffen werden. Der Zugriff ist allerdings nur lesend möglich, so dass neue Inhalte für diese Tabellen nur über die direkte SQL-Eingabe oder über Makros erfolgen kann.
Du könntest also das Formular gegebenenfalls über eine Abfrage mit Daten versorgen.

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


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