❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ 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. 🤗

Datenverfügbarkeit über Formular - wie

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Datenverfügbarkeit über Formular - wie

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

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!
Zuletzt geändert von gogo am Mi 2. Mär 2016, 16:37, insgesamt 2-mal geändert.
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Datenverfügbarkeit über Formular - wie

Beitrag von gogo » Mi 2. Mär 2016, 16:35

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...
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

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

Re: Datenverfügbarkeit über Formular - wie

Beitrag von RobertG » Fr 4. Mär 2016, 18:14

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
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