Tabellenfeld manuell mit Werten füllen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

AtzeLenin
*
Beiträge: 17
Registriert: Mi, 03.11.2010 12:56

Tabellenfeld manuell mit Werten füllen

Beitrag von AtzeLenin »

Hallo liebe Leute,

Es gibt ja die Möglichkeit ein leeres Tabellen-Kontrollelement zu erstellen (als ohne eine Verknüpfung zu einer Tabelle, Abfrage oder SQL Befehl)

Zugriff hab ich auf das Element dann z.B. über

Code: Alles auswählen

tab_feld = ThisComponent.Drawpage.Forms.getByName("MainForm").getByName("tab")
Außerdem kann ich ja manuell Spalten hinzufügen und bennennen (z.B. Ort, Name und Datum)

Wir kann ich dann aber konkret Daten in die Tabelle einlesen? Ich dachte an irgendwas wie:

Code: Alles auswählen

tab_feld = ThisComponent.Drawpage.Forms.getByName("MainForm").getByName("tab")
tab_feld.moveToInsertRow()
tab_feld.updateString(1,"Ort")
tab_feld.updateString(2,"Name")
tab_feld.updateString(3,"Datum")
tab_feld.insertRow()
tab_feld.updateRow()
Geht aber leider nicht... Habt ihr Ideen wie ich das umsetzen kann?
Vielen DAnk für die Hilfe!
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Tabellenfeld manuell mit Werten füllen

Beitrag von DPunch »

Aloha

Ich bezweifle, dass das überhaupt geht, ein Tabellenkontrollfeld basiert in OpenOffice (bis jetzt, da wird wohl dran gearbeitet) einzig und allein auf einem RowSet, ohne dieses hast Du keine Daten darin und wirst vermutlich auch keine hinenbekommen.
AtzeLenin
*
Beiträge: 17
Registriert: Mi, 03.11.2010 12:56

Re: Tabellenfeld manuell mit Werten füllen

Beitrag von AtzeLenin »

Und kann ich nicht ein passendes RowSet erstellen und zuweisen? Da muss es doch ne Möglichkeit geben... ggrrrrr
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: Tabellenfeld manuell mit Werten füllen

Beitrag von herz4 »

Guten Morgen,
womöglich ist dem eigentlichen Datenproblem(!) auch in Base beizukommen - ohne exotische Tabelle ...!?
Welcher Art ist dieses?
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
AtzeLenin
*
Beiträge: 17
Registriert: Mi, 03.11.2010 12:56

Re: Tabellenfeld manuell mit Werten füllen

Beitrag von AtzeLenin »

Ich möchte eine Formatierte Ausgabe und die Sortierfunktion nutzen (beim Klick auf die Reiter)

Ich kann den SQL-Befehl aber nicht direkt an das übergeordnete Formular übergeben, weil er schlichtweg nicht ausgeführt wird (ist zu komplex und variabel und geht nur über direkt ausführen / es wird ausserdem nur eine select-anfrage unterstützt (und nicht zum beispiel 2 verschachtelte)...) also muss ich es manuell machen und die daten dann zuordnen.
Zuletzt geändert von AtzeLenin am Mo, 08.11.2010 12:49, insgesamt 1-mal geändert.
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: Tabellenfeld manuell mit Werten füllen

Beitrag von herz4 »

Was hältst Du von einer Dummy-Tabelle - gemeint Datentabelle - die Du per Makro befüllst ...
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
AtzeLenin
*
Beiträge: 17
Registriert: Mi, 03.11.2010 12:56

Re: Tabellenfeld manuell mit Werten füllen

Beitrag von AtzeLenin »

Und das geht wie?

Als Input hab ich einen SQL-Befehl mit bekannten feldern. Wie fülle ich das?

Besten Dank für den Support!
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: Tabellenfeld manuell mit Werten füllen

Beitrag von herz4 »

Zunächst die Datentabelle einrichten, PK nicht vergessen.
Die SQL-Abfrage erstellen, die die Daten für die Befüllung bereitstellt (dürfte schon vorhanden sein).
Aus dieser Abfrage einen Insert-Befehl zur Befüllung der neuen Tabelle erstellen und testen!
Diesen Befehl im Makro entsprechend http://www.ooowiki.de/BaseApi#head-6d60 ... 60dc46f455 oder Beiträgen im Forum ausführen lassen zum Aktualisieren der Tabelle im Formular, eventuell bei seinem Aufruf starten?! Hierbei vor Neu-Befüllung der Tabelle alte Datensätze löschen lassen!
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
AtzeLenin
*
Beiträge: 17
Registriert: Mi, 03.11.2010 12:56

Re: Tabellenfeld manuell mit Werten füllen

Beitrag von AtzeLenin »

Mhh hab eine Vorstellung dazu und das müsste wohl auch gehen.

Meine Frage:

1.) Ist das auch noch angemessen schnell oder krieg ich da ein Probelm (bei einigen hundert einträgen)

2.) mit drop lösch ich die tabelle, aber wie leere ich sie... unter mysql geht es ja mit TRUNCATE TABLE 'table' aber das scheint unter hsqldb nicht zu funktionieren
EDIT: alles klar, habs gefunden: DELETE FROM tabelle ;)

Aber ich glaub, dass kann ich so umsetzen!
Vielen Dank
AtzeLenin
*
Beiträge: 17
Registriert: Mi, 03.11.2010 12:56

Re: Tabellenfeld manuell mit Werten füllen

Beitrag von AtzeLenin »

Ein Problem hab ich noch:

Irgendwie kann ich nicht die Datensätze des Subformulars ein/auslesen...
Das Funktioniert

Code: Alles auswählen


	fo = ThisComponent.Drawpage.Forms.getByName("MainForm")
	fo.moveToInsertRow()
	fo.updateLong(1,123)
	fo.insertRow()
	fo.updateRow()
Und das nicht...

Code: Alles auswählen


	fo = ThisComponent.Drawpage.Forms.getByName("MainForm").getByName("Sub")
	fo.moveToInsertRow()
	fo.updateLong(1,123)
	fo.insertRow()
	fo.updateRow()
verrückt...

EDIT: Mhh hat sich auch erledigt... Lad daran, das der Variablen-Typ irgendwie anders sein sollte. Ekliger Fehler, aber ich habs letztlich gefunden. ;)
Zuletzt geändert von AtzeLenin am Di, 09.11.2010 10:27, insgesamt 1-mal geändert.
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: Tabellenfeld manuell mit Werten füllen

Beitrag von herz4 »

Die Datensätze des Sub- wie auch des Formulars basieren doch wohl auf einer/mehreren Tab bzw. Abfr. Warum sprichst Du die nicht per von mir bereits gewiesener Base-Api an?!
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
AtzeLenin
*
Beiträge: 17
Registriert: Mi, 03.11.2010 12:56

Re: Tabellenfeld manuell mit Werten füllen

Beitrag von AtzeLenin »

Hab ich ja nur eben an anderer Stelle ;)

Dein Vorschlag hat super funktioniert und ist auch ausreichend schnell!

Vielen lieben Dank dafür!
Antworten