Hallo Detlev, D. Wortelker schrieb: > ... Leider kann ich mit ihr nicht viel anfangen, da ich, was > Datenbanken angeht, ziemlicher Anfänger bin. Dann fange mal hier an: - http://ffm.junetz.de/members/reeg/DSP/node6.html - http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0901/de/html/dbfgde9/00000054.htm (http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0901/de/pdf/dbfgde9.pdf#sec-concepts) falls du Englisch kannst: - http://philip.greenspun.com/sql/introduction.html
Ich persönlich habe das Thema mir im Informatikunterricht erarbeitet - allerdings ohne Lehrbuch oder so, was ich jetzt empfehlen könnte. (Dafür gab's ja den Lehrer ;)) >> was möchtest du damit erreichen? > ich möchte per Kombinationsfeld einen Datensatz im Formular auswählen > und somit anzeigen können. Die Datensätze sollen im Formular weder > verändert noch gelöscht werden können. Auch Eingabe nur über die > Tabelle oder ein gesondertes Formular. Das ist doch schon etwas konkreter. Also ist die Spalte, auf die sich das Kombinationsfeld bezieht zugleich auch Primärschlüssel oder zumindest Superschlüssel (= nicht kürzbarer Schlüssel, d.h. um einen Datensatz zu identifizieren reicht die Kenntnis des Wertes aus dieser Spalte.) Würde soetwas darauf zutreffen? Name der Person => Adresse anzeigen (Voraussetzung: Es gibt keine zwei Personen mit gleichem Namen oder zwei Adressen für eine Person). Mich interessiert ein praktisches Beispiel / Ziel, damit ich verstehen kann, worum es geht und ggf. ob es einfacher geht. >> ...Oder möchtest du mit dem Kombinationsfeld nur den Datensatz auswählen >> können? >> Wenn ja, so brauchst wieder zwei Formulare. >> Das Hauptformular beinhaltet jedeglich das Kombinationsfeld und wird aus >> einer Dummytabelle mit genau einer Spalte (Form) erstellt und einem >> Datensatz erstellt. >> Das Unterformular wird mit der eigentlichen Tabelle verknüpft. >> >> Weiter brauchst du eine Abfrage, um das Kombinationsfeld mit Daten >> füttern zu können. >> Diese könnte so aussehen: "SELECT Form, Form FROM Tabelle" . Trage sie >> anschließend bei Listeninhalt im Register Daten von >> Kontrollelementeigenschaften ein... >> > Das habe ich nicht ganz verstanden, habe dennoch mehrere Tage lang > gegoogelt und ausprobiert mit Formular und Subformular - nichts hat > geklappt. Hm. Also zum Lesen könnte eventuell folgendes interessant sein: http://www.oreilly.de/catalog/oobasebasger/index.html Vom Prinzip gilt: Es gibt in Datenbanken Tabellen. (Es gibt Lehren, danach besteht eine Datenbank nur aus Tabellen und bei manchen werden gerade noch Views erlaubt. In OOo enthalten Datenbankdokumente auch Abfrage und ggf. Formulare und Berichte.) Mittels Abfragen (SQL: SELECT - Befehl) kann man daraus dynamisch Tabellen mit z.B. nur bestimmten Spalten oder Datensätzen aus ggf. auch mehreren Tabellen erzeugen. Es gibt auch "Abfragen" (SQL: UPDATE, DELETE, INSERT, ...), welche Daten modifizieren können. Die mittels SELECT abfragten Daten können nicht modifiziert werden. (Für SQL siehe Anleitung für MySQL auf http://www.mysql.com/doc ) OpenOffice.Org Dokumente sind baumartig aufgebaut. Ein Formular ist ein Element im Dokument und bildet zugleich einen Container, welche Anzeigeelemente enthält und mit Daten verknüpft. Es ist unsichtbar. Ein Formular zeigt immer auf einen bestimmten Datensatz seiner Datenquelle. (ausgewählter Datensatz) Eine Spezialität von OpenOffice (nicht im Vgl. zu Access - aber egal ;) ) ist die Funktion, in ein Formular ein weiteres Formular (genannt Subformular oder Unterformular) einzufügen. Das übergeordnete Formular wird meist Hauptformular genannt. Die Spezialität besteht darin, dass diese Formulare verknüpft werden können, und zwar derart, dass, wenn im Hauptformular ein bestimmter Datensatz ausgewählt wird, die für das Subformular zur Verfügung stehenden Datensätze automatisch gefiltert werden. In bestimmten Fällen kann im Subformular dann nur noch ein oder kein Datensatz ausgewählt werden. Es können auf diese Art und Weise nur Formulare verknüpft werden, bei denen das eine Formular unmittelbares Kind des anderen ist. Mit einem Formularelement (Textfeld, Eingabefeld, uvm.) können Daten des ausgewählten Datensatzes angezeigt - und falls es die Datenquelle und das Formular zulassen - auch modifiziert werden. (Man kann im Formular einstellen, dass es seine Datenquelle von seinen Elementen nicht modifizieren lässt.) Eine Auswahl des Datensatzes ist mit den meisten Formularelementen nicht möglich. Es ist daher mit o.g. Funktionalität nur indirekt möglich, eine Datenquelle zu filtern, nämlich über die Subformularfunktionalität. Und da kommt auch schon die erste Ausnahme: Das Tabellenformularelement. Mit diesem kann man auch Datensätze auswählen. Ist allerdings kein Kombinationsfeld (die Spalte in Kombinationsfeld umzuwandeln bringt nichts, weil man damit nur den einzelnen Datensatz beabeiten kann.) Vielleicht reicht es dir ja, wenn an der Seite eine Leiste (Tabelle mit einer Spalte) ist, über die man den Datensatz auswählen kann. (die anderen Felder werden als "normale" Textfelder angezeigt) >> >> ...Weiter wäre möglich, dass zweite Formular wegzulassen und das >> Kombinationsfeld mit keinem Datenfeld zu verknüpfen. >> Dann könnte per Macro auf das Formular ein Filter angewendet werden, >> immer wenn im Kombinationsfeld ein neuer Wert ausgewählt wird. >> Du könntest auch einfach mit dem Button Filter, AutoFilter oder Suchen >> in der Formularnavigationsleiste (Symbolleiste, nicht das >> Formularelement) Suchen oder Filtern, dabei wird allerdings keine Liste >> zum Auswählen angeboten... >> > Eine meiner ersten Ideen war, da ich per formularbasiertem Filter > genau das was ich wollte, erreicht habe, diesen Filtervorgang als > Makro aufzunehmen, einen Schaltfläche ins Formular einzubauen und der > Schaltfläche dieses Makro zuzuweisen. Dies scheiterte allerdings > daran, das das Ausführen des Makros nichts veränderte - es passierte > nichts. Hm. Zunächst ist es ja mit einem einfachen Button nicht getan, du möchtest doch sicher auch noch Daten aus einem Kombinationsfeld auslesen und daraus den Filter erstellen. Dann könnte man den Button gleich durch das Kombinationsfeld ersetzen und das Makro immer dann ausführen, wenn im Kombinationsfeld ein anderer Datensatz ausgewählt wird. Auf jedenfall braucht man ein Kombinationsfeld, ein Button schadet nicht. Die Makrozuordnung geht, indem an jedes Formularelement verschiedene Ereignisse "gesendet" werden können (durch das Betriebsysstem bzw. die OpenOffice Software) und man ein Makro zu jedem verarbeiteten Ereigbnis zuordnen kann. (Nicht jedes Ereignis wird bis an das Element weitergeleitet oder kann durch ein Makro überschrieben werden, ggf. weil es in der Implementation so festgelegt wurde z.B. wie ein Formularelement zu zeichnen ist.) Nach dem dein Makro nun aus dem Kombinationsfeld die Daten gelesen hat, muss es den Formularfilter setzen und aktivieren (Objekteigenschaft "Filter" und "FilterEnabled" oder so des Formulars.) Eventuell muss das Formular anschließend mit seiner Methode "reload" aktualisiert werden. Für alle Attribute und Methoden von Klassen kann man gut auf http://api.openoffice.org suchen. Hinweis: Es gibt immer zwei Klassen für "ein Formularlement", die eine beschäftigt sich mit der Aufgabe als Formularbestandteil ( oder Objekt ) und die andere nur mit der Darstellung (Model). Dies hat mich am Anfang sehr irretiert und brauchte immer Zeit, bis ich das richtige Objekt / Model hatte. Als Anlaufpunkt für alle Makrofragen kann man sich gut an http://www.oooforum.org wenden (Englisch). [Ich weis nicht wie gut du programmieren kannst, aber ich würde immer mit OOo Basic anfangen Makros zu schreiben: weils einfach einfacher und übersichtlicher ist. Für Grundlagen der Basicprogrammierung kann man auch im OOo Handbuch oder bei Anleitungen für "Pascal"/"Pyhton"-Programmierung gucken. Letztlich ist die Programmierung überall ähnlich.] Mit freundlichen Grüßen, Michael Braun -- PS: Bitte die Rechtschreibung nicht so genau nehmen, es ist hier ja nur eine Mailingliste.
smime.p7s
Description: S/MIME Cryptographic Signature
