Seite 1 von 1

Re: Datenverfügbarkeit über Formular - wie

Verfasst: Mi 2. Mär 2016, 09:16
von gogo

Code: Alles auswählen

ThisComponent.Drawpage.Forms.getbyname("MainForm").getstring(n)
n ist dabei der Feld-Index der Datenquelle des Formulars, Du kannst damit auf alle Felder der Datenquelle des Formulars zurückgreifen

Code: Alles auswählen

ThisComponent.Drawpage.Forms.getbyname("MainForm").getbyname("MeinTabellenGrid").GetByName("SpalteX").getstring()
n ist dabei der Spalten-Index des TabellenKontrollelements, Du kannst damit auf alle Spalten (auch ausgeblendete) des Tabellen KEs zur zurückgreifen - aber klarerweise nicht auf nicht angelegte.

Unterschiedliche Daten bekommst Du, wenn Du das TabellenKE z.B. mit .CurrentValue abfragst - da wird z.B. bei einem Listenfeld (das etwa die Kategorienamen in Abhängigkeit zur KategorieID anzeigt) der Text angegeben, so wie er angezeigt wird, dasselbe Feld über die Datenquelle abgefragt wird die ID zurückliefern.

Versuche NICHT über die .BoundField-Property eines Listenfeldes auf die zugrundeliegende ID zuzugreifen - ein kommentarloser LO-Absturz ist dabei vorprogrammiert!

edit: Codeblock 2 geändert!

Re: Datenverfügbarkeit über Formular - wie

Verfasst: Mi 2. Mär 2016, 16:35
von gogo
Bockmist ... getstring gibt's bei dem TabellenKE nicht es muss wie Du richtiggestellt hast die Spalte angesprochen werden.

Code: Alles auswählen

ThisComponent.Drawpage.Forms.getbyname("MainForm").getbyname("MeinTabellenGrid").getbyname("Spaltenname").getstring()
Die gestring()-Methode nachher braucht aber keinen Parameter mehr, also .getstring , .getstring() oder einfach .string oder .text - kommt auf das KE an was es anbietet, .currentvalue ist das gängigste und funktioniert glaub' ich bei allen spaltentypen irgendwie...

Re: Datenverfügbarkeit über Formular - wie

Verfasst: Fr 4. Mär 2016, 18:14
von RobertG
Hallo HeiDieLX,

wenn Du in einem Tabellenkontrollfeld Spalten aufführst und anschließend versteckst, dann kann es passieren, dass bei einem Durchlauf mit dem Tabulator der Cursor zwischendurch untertaucht.

Um die Daten des aktuellen Datensatzes eines Formulars zu erhalten benötigst Du keinen Zugriff auf das Tabellenkontrollfeld. Das Formular mit der entsprechenden Abfrage oder Tabelle und der Reihenfolge in dieser Abfrage oder Tabelle müsste maßgebend sein. Die Spaltenzählung beginnt dann bei 1. Für den aktuellen Datensatz eines Formulars kann das also so aussehen:

Code: Alles auswählen

DIM ID AS LONG
DIM sName AS STRING
DIM dValue AS CURRENCY
DIM dEintritt AS NEW com.sun.star.util.Date
ID = oForm.getLong(1)
sName = oForm.getString(2)
dValue = oForm.getDouble(4)
dEintritt = oForm.getDate(7)
"ID" ist das erste Feld der Tabelle/Abfrage. Es hat den Feldtyp "Integer" (Basic-Typ "Long"). In dem Code werden 4 Felder mit entsprechenden Feldtypen abgefragt. Die Datenquelle hat mindestens 7 Spalten, zu sehen daran, dass eben Feld 7 abgefragt werden soll.

Weißt Du nicht die Position, sondern die Bezeichnung des Feldes in der Datenquelle, so geht das folgendermaßen:

Code: Alles auswählen

DIM sName AS STRING
nName = oForm.findColumn("Name")
sName = oForm.getString(nName)
Alles eben schnell aus dem Handbuch kopiert ...

Gruß

Robert