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

Formular-Größe

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
asearle
Beiträge: 4
Registriert: Mo 12. Mai 2014, 18:04

Formular-Größe

Beitrag von asearle » Mo 12. Mai 2014, 18:12

Liebe Libres,

Ich steige zur Zeit von MS-Access auf LO um und mit Base komme ich recht gut voran (bin positiv überrascht!). Leider aber sind die Formulare bei mir immer nur "Vollbild" und ich würde gerne fragen wie ich Pop-ups und Modale Formulare anbringen kann? (Und die Größe dieser Formulare auch bestimmen) Zum Beispiel, ich würde gerne einen Filter setzen und das Filter-Formular als Pop-up einsetzen: Dabei bleibt das Hauptformular immer sichtbar im Hintergrund.

Hat jemand einen Vorschlag, oder ein Link, oder ein "HOWTO" für mich?

Recht vielen Dank,
Alan (in Köln)

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

Re: Formular-Größe

Beitrag von RobertG » Mo 12. Mai 2014, 21:09

Hallo Alan,

das, was Du suchst, lässt sich nur über Makros erreichen. Du brauchst entweder ein einfaches Eingabefeld (inputbox) - allerdings verschwindet die nach der Eingabe. Oder Du brauchst Dialoge. Ich habe mir so einen Dialog bisher erst einmal geschrieben und entsprechend auch im Handbuch veröffentlicht. Der hatte es dann allerdings gleich in sich.
Vielleicht schaust Du zum Einstieg einmal hier: http://www.starbasicfaq.de/Dialoge.html

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

asearle
Beiträge: 4
Registriert: Mo 12. Mai 2014, 18:04

Re: Formular-Größe

Beitrag von asearle » Di 13. Mai 2014, 09:08

Hallo Robert,

Ja, die Dialoge sehen gut aus und das wäre/ist die Perfekte Lösung. Aber kann ich dort (z.B. in einem Listbox) Daten aus einer Datenbanktabelle einbinden?

Mein Ansatz ist Folgendes: Für einen Filter möchte ich eine Liste der Kunden in dem Dialog anzeigen. Hier müsste ich von dem Dialog aus, auf die Kundendaten zugreifen.

Ich habe aber keine Lasche "Daten" bei den Eigenschaften des Listbox gesehen.

Oder müsste ich die Liste programmatisch befüllen? Das geht auch aber ist etwas umständlicher. Falls dies der Fall sein sollte, hätten Sie für mich ein Link zu einem Programmbeispiel?

Vielen Dank für die Hilfe,
Alan

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

Re: Formular-Größe

Beitrag von RobertG » Di 13. Mai 2014, 11:11

Hallo Alan,

lade Dir einmal das Handbuch und dazu die Beispieldatenbanken herunter. Da steht genau so ein Zugriff für Listenfelder drin. Dort wird mit Hilfe von Dialogen der Inhalt von Tabellen bearbeitet. Nur ist das dadurch, dass wirklich alle Eventualitäten abgefragt werden, ziemlich komplex.
Die Anwendung dafür ist in der Datenbank Medien_mit_Makros.odb enthalten.

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

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

Re: Formular-Größe

Beitrag von gogo » Di 13. Mai 2014, 17:52

asearle hat geschrieben:Ich habe aber keine Lasche "Daten" bei den Eigenschaften des Listbox gesehen.
Ich leider auch noch nicht ;)
asearle hat geschrieben:Oder müsste ich die Liste programmatisch befüllen? Das geht auch aber ist etwas umständlicher. Falls dies der Fall sein sollte, hätten Sie für mich ein Link zu einem Programmbeispiel?
Das eigentliche Problem bei den Listenfeldern ist nicht die Darstellung, sondern es sind die "nicht verbundenen Daten" - d.h. man kann nicht auf "die ID in Spalte 2" zurückgreifen, wie es bei gebundenen Listenfeldern in normalen Formularen möglich ist, sondern immer nur auf die Zeilennummer der Liste, bzw. den Text der dort steht.
Das einfache Füllen der Listbox "MeineListbox" erfolgt im Dialog "Mein_Dialog" so:

Code: Alles auswählen

oLB = gO_Mein_Dialog.GetControl("MeineListbox")
oLB.addItems(Array("Mueller","Maier"),0)
Rueckgabewerte: "Mueller" oder "Maier" (oder beide)

Sollte man Werte einer Tabelle anzeigen wollen, und im Dialog die ID des dazugehörigen Satzes ermitteln wollen, so ist dies mit einem Resultset möglich, das man so lange "vorrätig" hält so lange der Dialog läuft - dann liest man die selektierte(n) Position(en) aus und sucht die dazugehörigen IDs... (Im angegebenen Beispiel ist die ID in Spalte 2)

Code: Alles auswählen

gO_Mein_Dialog = CreateUnoDialog(Dialoglibraries.Standard.Mein_Dialog)

' Ein Resultset generieren, das die Daten beinhaltet die in die Listbox sollen
oStatement               = ThisDatabaseDocument.CurrentController.ActiveConnection.createStatement
oStatement.ResultSetType = com.sun.star.sdbc.ResultSetType.SCROLL_INSENSITIVE
oRes                     = oStatement.executeQuery("Select Kundenname, KundenID from Kunden;")

'Listbox suchen, das Array "Itemliste" mit der Anzahl der anzuzeigenden Datensaetze definieren und dann befuellen
oLB = gO_Mein_Dialog.GetControl("MeineListbox")
oRes.last
dim Itemliste(cint(oRes.row)-1)
   oRes.beforefirst
     do while oRes.next
	Itemliste(oRes.row-1)=oRes.getstring(1)
     loop

'dann die Listbox befuellen:
oLB.addItems(Itemliste(),0)

' ... und den Dialog ausfuehren:
DialogWert = gO_Mein_Dialog.execute()

if DialogWert = 1 then ' ueberprueft ob ueberhaupt etwas ausgewaehlt wurde
	if ubound(oLB.getSelectedItemsPos) = -1 then DialogWert = 0
end if

' Folgende Properties von oLB waeren sinnvoll:  ...ItemS bei Mehrfachselektion!
'SelectedItem              string                     "Herr Mueller"
'SelectedItemPos           integer                                 2
'SelectedItems             ARRAY of Strings
'SelectedItemsPos          ARRAY of Integers (Auch wenn nur EINE Zeile ausgewaehlt wurde!)

' Zeiger auf den Datensatz stellen, der in der Listbox ausgewaehlt wurde
' (+ 1) da oLB.SelectedItemPos bei 0 beginnt, das waere aber der Datensatz .beforefirst - den gibt's ja nicht
oRes.absolute(oLB.SelectedItemPos + 1)

msgbox "Ausgewaehlt wurde '" & oLB.SelectedItem & "'. Die Spalte 2 des Resultsets enthaelt den Wert: " & oRes.getstring(2)

... wie Robert schon sagte: komplex
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

asearle
Beiträge: 4
Registriert: Mo 12. Mai 2014, 18:04

Re: Formular-Größe

Beitrag von asearle » Di 20. Mai 2014, 10:19

Vielen Dank für die ausführlichen Informationen. Das ist eine große Hilfe.

Ja, es scheint komplex zu sein aber ich werde probieren.

Melde mich dann mit etwas Feedback.

Vielen Dank,
Alan


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