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:
Danach öffne ich ein Formular, was auf diese Tabelle zugreift und eine Auswahl von Bestandspositionen für den Transfer ermöglicht.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
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