Openoffice Base Listenfelder

Liebe/-r Experte/-in,
ich bin gerade dabei, über oo Base eine Datenbank für eine Personaleinsatzplanung einer Zeitarbeitsfirma zu erstellen. Ich hab ein wenig Erfahrung mit Access, jedoch mich noch nie an die Erstellung eines Formulars gemacht.

Folgender Fall:
Ich habe bereits ein Formular erstellt, in der die jeweiligen Mitarbeiter angezeigt werden. per Listenfeld kann man die jeweilige Berufssparte (z.B. Elektro, Sachbearbeiter, Gas-und Wasser,etc.) der Angestellten auswählen. Nun gehört aber zu jeder Sparte je Mitarbeiter ein entsprechender Beruf.

Meine Frage:
Gehen wir mal davon aus, das zu jeder Sparte etwa 10 Unterschiedliche Berufe gehören. Über das Formular möchte ich die Eingabe jetzt so vereinfachen, dass über zwei Listenfelder die Erfassung funktioniert. Wenn bei dem ersten Listenfeld z.B. Sachbearbeiter ausgewählt wird, dann soll beim zweiten Listenfeld Berufe nur noch die Berufe auswählbar sein, die die vorangegangene Sparte betreffen.

Beispiel:
Listenfeld 1: Sachbearbeiter
Listenfeld 2: Bürokaufmann, Industriekaufmann, ungelernt, etc.

Listenfeld 1: Elektro
Listenfeld 2: Meister, Geselle, Hochspannung, etc.

Ich schätze mal, dass ich das über unterschiedlich Tabellen dementsprechend in Bezug setzen muss, komm aber nicht darauf, wie genau. Google mat mir bis jetzt auch nicht helfen können.

Momentan ist nur eine Beziehung gepflegt:
SparteID -> ID mit Sparte

Für jede noch so kleine Hilfe bedanke ich mich im Vorraus.

Gruß
Tobias

Hallo Tobias,

neben der Haupttabelle (für das Formular) benötigst Du mindestens (a) zwei weitere Tabellen. (Da sag’ ich Dir wohl nix Neues, oder?) Die heißen dann in Deinem Fall wohl „Berufssparte“ und „Berufe“. Die müssen über „ein gemeinsames“ Feld verknüpft werden. (b) Es ginge auch mit einer Tabelle und einer Abfrage.

Zu (a) müssten folgenden Tabellenstrukturen vorliegen:

 Tbl Berufssparte Tbl Berufe
 ----------------- -----------
 SparteID: AutoIndex BerufeID: AutoIndex
 Sparte: Textfeld {V..} Berufsbez.: Textfeld
 Sparte: {Verknüpfung}

Problematisch bei dieser Konfiguration ist v.a. das Einpflegen der Daten!

Ich hielte (kombinierte) Möglichkeit (b) für einfacher:

 Tbl Berufe
 -----------
 BerufeID: AutoIndex
 Branche: Textfeld (Mehrfachwerte erlaubt)
 Berufsbezeichnung: Textfeld (Werte einzigartig)

 Qry Berufe
 -----------
 (wie oben, nur sortiert nach Branche oder Berufsbez.)

Außerdem ist zu überlegen…

Listenfeld 2: Meister, Geselle, Hochspannung, etc.

…ob nicht der „Status“, in dem sich ein AN befindet (also ungelernt, Geselle, Meister, Dipl.-Ing./FH, Dipl.-Ing. usw.), nicht besser in einer separaten Tabelle aufgehoben wäre, da dies die Auswahl bei der „Berufsbezeichnung“ (einzigartig) vereinfacht. (Denn unter Elektro/Hochspannung hast Du ja auch Meister und Gesellen etc.)

Vielleicht kann ich Dir noch einen Tipp geben…?
Die Arbeitsagentur pflegt Ihre „Kunden“ anhand deren Befähigungen ein, jeweils mit einer 5- oder 6stelligen Schlüsselziffer. Die Liste ist ein paarhundert Zeilen lang… vielleicht kannst Du Dir diese Liste einmal besorgen.

Gruß und gutes Gelingen
DannyFox64

PS: Um den Überblick zu behalten: Für die Bezeichnungen von Tabellen, Abfragen und Formularen empfehle ich Dir unbedingt von vornherein eindeutige Bezeichnungen festzulegen, am besten mit Präfixen, wie in der Programmierung allgem. empfohlen: „tbl“ für Tabellen, „qry“ für Abfragen und „frm“ für Formulare. - Die Namen sähen dann z.B. wie folgt aus: „tbl_Berufe“, „qry_Berufe“, „frm_Personal“. (So stellt man sicher, sich nicht zu vertun.)

Hallo Tobias,

hier findest du ein Video zum Thema Beziehungen. Vielleicht hilft das schon.

http://www.kostenloses-training.de/base/Base_Beziehu…

Grüße aus Nümbrecht
Henning

Folgender Fall:
Ich habe bereits ein Formular erstellt, in der die jeweiligen
Mitarbeiter angezeigt werden. per Listenfeld kann man die
jeweilige Berufssparte (z.B. Elektro, Sachbearbeiter, Gas-und
Wasser,etc.) der Angestellten auswählen. Nun gehört aber zu
jeder Sparte je Mitarbeiter ein entsprechender Beruf.

Meine Frage:
Gehen wir mal davon aus, das zu jeder Sparte etwa 10
Unterschiedliche Berufe gehören. Über das Formular möchte ich
die Eingabe jetzt so vereinfachen, dass über zwei Listenfelder
die Erfassung funktioniert. Wenn bei dem ersten Listenfeld
z.B. Sachbearbeiter ausgewählt wird, dann soll beim zweiten
Listenfeld Berufe nur noch die Berufe auswählbar sein, die die
vorangegangene Sparte betreffen.

Beispiel:
Listenfeld 1: Sachbearbeiter
Listenfeld 2: Bürokaufmann, Industriekaufmann, ungelernt, etc.

Listenfeld 1: Elektro
Listenfeld 2: Meister, Geselle, Hochspannung, etc.

Ich schätze mal, dass ich das über unterschiedlich Tabellen
dementsprechend in Bezug setzen muss, komm aber nicht darauf,
wie genau. Google mat mir bis jetzt auch nicht helfen können.

Momentan ist nur eine Beziehung gepflegt:
SparteID -> ID mit Sparte

Für jede noch so kleine Hilfe bedanke ich mich im Vorraus.

Gruß
Tobias

Hallo Henning,

danke für die Antwort.

Ich habe mir deine Tutorials bereits angeschaut und sie sind echt super, wenn man sich in Materie einfinden muss.(Ich z.B. hab ich vor 8 Jahren meine letzte Access DB erstellt und sie haben mir bereits sehr gut geholfen, wieder rein zu kommen.)

Leider konnten sie mir bei diesem Problem nicht helfen, da ich nicht mal weiß, ob Base das überhaupt kann. Ich habe die gleiche Anfrage einmal in ein OO Forum gesetzt, da könnte ich auch ein Bild hochladen:

http://www.oooforum.de/viewtopic.php?f=8&t=39124&sid…

Vielleicht hilft das, meine Anfrage auch besser zu verstehen.

Gruß
Tobias

Hallo Tobias,

ich selbst habe ein solches Formular noch nicht erstellen müssen. Aber das Datenmodell würde ich nicht unbedingt normalisieren sondern nur eine Tabelle mit den Berufen und ihren Übergriffen definieren.

MfG Georg V.

Hallo Danny,
vielen Dank für deine ausführliche Antwort.

Die Idee, den Status nochmal extra auszugliedern, habe ich bereits umgesetzt. (Danke!)

Die Liste der BfA hab ich mir angeschaut, die ist mir aber zu vielseitig. Ich möchte gar nicht, dass es soviel Auswahlmöglichkeiten gibt, da sonst die Abfragen zu speziell werden würden. Es sollen max. 10 Berufe je Sparte zur Verfügung stehen. Deswegen kann ich deine Möglichkeit 2 nicht verwenden, denn sonst würden (bei einem Text) im Laufe der Zeit zigtausend Bezeichnungen für ein und den selben Beruf herauskommen.

Wie Möglichkeit a habe ich es mir fast gedacht, nur kann ich die Felder „Sparte“ (beide VARCHAR) nicht in Beziehung setzen. Was mache ich falsch?

Gruß Tobias

P.S.: Ich habe in einem OO-Forum die Anfrage noch etwas spezieller gestellt, mit einer Skizze des Formular. Vllt. hilft das.
http://www.oooforum.de/viewtopic.php?f=8&t=39124&sid…

Hallo Tobias,

tut mir leid, da kann ich dir leider nicht helfen. Wünsche trotzdem viel Erfolg,

Grüße,

Mathias.

Hallo Tobias,

Dein Ansatz ist richtig. Du brauchst zwei Tabellen.

  1. Tabelle: Berufssparte
  2. Tabelle: Berufe

Die beiden Tabellen müssen verknüpft werden. Dabei ist es wichtig in Tab2 ein Feld anzugeben zu welcher Berufssparte es gehört (in der Regel eine Kategorie!) Diese Kategorie wird nun über den Datensatz-ID der Tab1 verknüpft.
Jetzt braucht man noch eine Abfrage die die Berufssparte mit den Daten aus Tab2 auflistet.
Im Formular muss die Abfrage eingebunden werden und über die Auswahl im Dropdown-Feld Berufssparte wird in einem zweiten Dropdownfeld aus der Abfrage generiert die Berufe gelistet.
In der Personaltabelle werden nun nur noch die IDs der Tab1 und der Abfrage gespeichert- was aber im WYSIWYG modus nicht erkennbar sein wird.

Viel Glück.

Hallo Thomas,

in der Tat müsste erstmal die Berufe-Sparte-Beziehung definiert werden, geschickterweise in zwei Tabellen:

Sparte
SpartenID, Bezeichnung

Berufe
BerufID, SpartenID, Bezeichnung

Im Formular lassen sich dann in der Berufe-Liste die Einträge eingrenzen, über > Kontrollfeld… > Daten. Bei „Art des Listeninhalts“ laesst sich beispielsweise SQL verwenden.

Für Deinen Fall eignet sich wohl am Besten ein Unterformular.
Du solltest hier nähere Infos erhalten:
http://www.ooowiki.de/EinsZuVieleBeziehung

Viel Erfolg,
Sascha