Abhängige Listenfelder machen Probleme

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Ignis Pugnatur
**
Beiträge: 26
Registriert: Mi, 30.05.2012 11:57

Abhängige Listenfelder machen Probleme

Beitrag von Ignis Pugnatur »

Hallo zusammen,
Ich bin Linux und Libreoffice Neuling.
In MS habe ich in Accsess eine DB erstellt, die sich aber nicht wirklich importieren lässt. Zumindest gehen einige Funktionen dort nicht. Anstatt nun auf Fehlersuche zu gehen habe ich einfach in Base eine neue DB angelegt.

Nun zu meinem Problem:
In der DB geht es um Warenwirtschaft.
Ich habe eine Tabelle mit Artikeln (EAN-Artikelliste), denen ich Kategorien, Beschreibung etc zuweisen möchte.
Der Primärschlüssel liegt auf dem Feld EAN-Code [Feldtyp Zahl-Numeric] da Integer nur 10 Stellig arbeitet.
Die Kategorien habe ich in 2 (sollten eigentlich 3 werden) weiteren Tabellen gespeichert in denen die drin stehen und über Listenfelder angewählt werden können.
Nun möchte ich die Auswahl der zweiten Feldliste einschränken.

Ein Beispiel:
Tabelle 1: EAN-Artikelliste
Felder:
- EAN-Code [Feldtyp Zahl-Numeric] Der Artikelcode
- Firma/Name [ Feldtyp Text (Varchar) ] Beispiel: Milka
- Hauptgruppe [ Feldtyp Text (Varchar) ] Listenfeldauswahl: Lebensmittel
- Gruppe [ Feldtyp Text (Varchar) ] Listenfeldauswahl: Süßwaren
- Untergruppe [ Feldtyp Text (Varchar) ] Noch in Planung
- Menge/Inhalt [Feldtyp Zahl (Numeric)] 100 g
- Artikelbeschreibung [ Feldtyp Text (Varchar) ] Alpenmich
- Datum/Zeit [ Feldtyp Datum/Zeit (Timestamp) ] Soll automatisch eingefügt werden sobald der Datensatz beendet wird (Feld kann im Formular unsichtbar sein)

Tabelle 2: K1-Hauptkategorie Für das Listenfeld Hauptgruppe im Formular
Felder:
- K1-ID [Feldtyp Integer (INTEGER)] ID wir zu Testzwecken manuell vergeben
- Hauptkategorie [Feldtyp Text (Varchar)] Beispiel: Lebensmittel, Haushaltswaren,

Tabelle 3: K2-Gruppe Für das Listenfeld Gruppe im Formular
Felder:
- K2-ID [Feldtyp Integer (INTEGER)] ID wir zu Testzwecken manuell vergeben
- Gruppe [ Feldtyp Text (Varchar) ] Beispiel: Tiefkühl, Konserve Obst, Deko, Reinigung, Hygiene ... etc.
- K1-ID [Feldtyp Integer (INTEGER)] Die ID der zugehörigen Hauptkategorie

Wenn im also im Formular der ersten Tabelle im Listenfeld für die Hauptgruppe Lebensmittel angewählt wird, sollen im zweiten Listenfeld ausschließlich die Gruppen erscheinen die auch zu den Lebensmitteln gehören. Später soll noch ein weiteres Listenfeld zur Auswahl für Untergruppen dazu kommen (erst wenn ich das mit den ersten zwei hin bekommen habe).

Leider werde ich aus den Beschreibungen über Listen und Kombinationsfelder, die ich hier (viewtopic.php?f=8&t=41037) oder in anderen Foren und Artikeln fand. nicht wirklich schlau. Mit Macros habe ich mich bisher auch nie befasst, da in MS-Accsess das meiste vorgegeben war.
Da ist z.B. die Rede davon dass ich in MySQL was auf FOREIGN KEY umstellen soll, aber ich weis nicht mal wie ich in MySQL rein komme ... :oops:

Die Felder
- K1-ID [Feldtyp Integer (INTEGER)] aus K1-Hauptkategorie
und
- K1-ID [Feldtyp Integer (INTEGER)] aus K2-Gruppe
sind in einer 1:n Beziehung

Ich bekomme allerdings die Einschränkung des zweiten Listenfeldes aufgrund der Auswahl im ersten Listenfeld nicht hin.
Im zweiten wird immer alles angezeigt.

Auch wenn hier und anderenorts das Thema schon behandelt wurde, bitte ich doch darum, einem Linux und LO-Noob das ganze etwas genauer zu erläutern. Bitte um Nachsicht für meine Begriffsstutzigkeit ....

Liebe Grüße und danke vorab für eure Hilfe
Ignis

EDIT: Ich habe im Eingabeformular der Tabelle EAN-Artikelliste im Entwurfsmodus das Listenfeld2 (also Gruppe) markiert und doppelt geklickt um in die Eigenschaften zu gelangen.
Unter dem Reiter Daten Zeile "Listeninhalt" habe ich mal rumprobiert und über die hinterste Schaltfläche das Editierfenster für die Abfrageeinstellungen geöffnet.
Dort wird mir die Beziehung angezeigt und unten die eigentliche Abfrage mit Filtermöglichkeiten.
Feld: Gruppe
Alias:
Tabelle: K2-Gruppe
Sortierung: aufsteigend
Sichtbar: ja

Drunter sollte ich über Funktion und Kriterium die Anzeige des zweiten Listenfeldes einstellen können. Ich habe nun schon so einiges versucht, bin aber noch zu keinem Ergebnis gekommen. (Entweder zeigt es mir die Daten an oder es zeigt garkeine an.)
Ich denke, dass man das über eine WENN-DANN Funktion steuern könnte .....
WENN Wert im Listenfeld1 (oder dessen ID) identisch mit der K1-ID von Listenfeld2 dann zeige die werte mit der entsprechenden ID an SONST lasse Listenfeld leer

Oder denke ich nun vollständig verkehrt? Im Moment sehe ich vor lauter Fenster kein Land mehr ...
Gagagagaga .... tüdeldüdel du ..... *Wahnsinnig werd* ..... BITTE UM HILFE ^^

Ignis
Ignis Pugnatur
**
Beiträge: 26
Registriert: Mi, 30.05.2012 11:57

Re: Abhängige Listenfelder machen Probleme

Beitrag von Ignis Pugnatur »

Erst mal danke.
Ich habe erst mal deinen Link überflogen und die einen oder anderen Downloads gemacht und mal "schnell" reingeschaut.
Da ist so einiges dabei wo brauchbar ist.

Das mit Suchen und Filtern ist aber auch nicht das was ich gerade suche.
Da wird über eine Abfrage und Unterformular gearbeitet.
Ich möchte ja nur, dass das was im Listenfeld 1 gewählt wurde entsprechend die Auswahl im Listenfeld 2 einschränkt.
Wurde oft gefragt, aber nie wirklich ordentlich erläutert oder zu ende geführt.
Ich komme einfach mit dem "Editor" für die Filtersachen nicht klar bzw. die Codeerstellung ist mir noch ein Rätsel.

Mein Problem ist, dass diese DB dringend in Gang kommen sollte. Das soll nun nicht heißen, dass ich von euch nur Lösungen und keine Eigeninitiative will. Diese DB wird in Zukunft sehr Komplex werden und da ist noch genug zu tun.
Ich habe mir die Eigenart angewöhnt, Scriptschnipsel zu nutzen und diese dann zu analysieren und auf meine Bedürfnis an zu passen. So habe ich dann den Lerneffekt und das spätere Verständnis.
Ein weiteres Handycap ist, dass ich vor ca 4 Wochen auf Linux umgestiegen bin (mit 4 PCs) und nun auch dort einiges zu "lernen habe" und auch meiner Frau erklären muss.
Umstellung von vielen Dokumenten (Writer, Calc) auf LO da einige Dinge nicht wirklich so angezeigt werden wie unter MS.
(Fehler bei Serienbriefen, verlinkten Tabellen in Calc usw.)
Vor also irgendwer auf die Idee kommen sollte Lernfaulheit zu unterstellen, dann kann er mir das ja gerne alles in der selben Zeit machen. (Sorry dieser Satz, aber ich habe in einigen Foren schon solche Vorwürfe zu lesen bekommen.)

Ich nutze auf allen Systemen:
Distribution: openSUSE 12.1 (i586)
KDE: 4.7.2 (4.7.2) "release 5"
Kernel: Linux 3.1.10-1.9-desktop i686

LibreOffice 3.4.5
OOO340m1 (Build:1505)


Mit Base beschäftige ich mich nun 2 Tage .... :oops: .... und das ist doch alles ein wenig anders wie bei Microsoft.

Um der Datenbank mal eine Erklärung zukommen zu lassen....
Es soll ein Haushaltsbuch werden mit Artikel-genauer Buchführung über EAN-Codes, Wareneingang & Warenausgang (also das was verbraucht wurde) um den "Warenbestand" zu bekommen und aus einer Liste mit Sollwerten dann einen Einkaufszettel zu machen. Es soll das Suchen was den nun alles Fehlt erleichtern.
Später sollen Erweiterungen kommen wie: Meldungen über Verfallsdaten oder wann etwas eingefroren wurde und bald verbraucht werden sollte. Eine Art Rezepteplaner - Essen wählen, Personenanzahl eingeben und die fehlenden Artikel erscheinen auf der Einkaufsliste etc.
Das ganze soll natürlich auch mit den Finanzen gekoppelt sein (also die Haushaltskasse) und noch etwas später über Touch-Screenmonitore an den entsprechenden Stellen vernetzt werden.

Nennt mich nun Wahnsinnig oder so .... :lol: ..... aber das Projekt ist schon fast so was wie ein Hobby geworden.
In Accsess gingen ca 70% davon (es fehlten also noch einige Erweiterungen) - Nun muss ich das eben auf LO umstellen und habe gleich die Möglichkeit frühere Schönheitsfehler aus zu bügeln.
Um etwas Zügig voran zu kommen hoffe ich hier auf Hilfe ohne mich durch 1000 Dokumente wälzen zu müssen.
Den Lerneffekt habe ich dann, wenn was geht ....

Bisher habe ich ja schon mal raus bekommen wie ich Formulare mit Schaltflächen öffne, und ein Startformular erstellt das beim DB-Start geöffnet wird. Ich hänge nun am Prinzip, wie ich Listen- oder Kombinationsfelder voneinander abhängig bekomme.
Ich brauche diese Funktion in etlichen Formularen, sollte also verstehen wie das geht.
Mit einer einfachen Lösung für das einleitend genannte Beispiel wäre ich schon glücklich.
Damit könnte ich dann alle benötigten weiteren Schritte selbst machen.

Noch mal in aller Kürze:
In Tabelle 1 sollen über ein Formular die Daten erfasst werden.
Darin sind 2 Listenfelder deren Inhalt aus Tabelle 2 und Tabelle 3 kommen.
Mein Problem:
Die Liste von Listenfeld 2 (Tabelle 3) mit dem gewählten Wert aus Listenfeld 1 (Tabelle 2) ein zu schränken.

Tabelle 2:
ID1 | Hauptgruppe

Tabelle 3:
ID2 | Gruppe | ID1


ID1 von Tabelle 2 und ID1 von Tabelle 3 stehen in einer 1:n Beziehung

Nun weis ich aber nicht wie ich die Anzeige von Tabelle 3 (Listenfeld 2) einschränken kann, damit die Sucherei durch hunderte von Daten ein Ende hätte.

In den Eigenschaften des zweiten Listenfeldes (Register Daten | Listeninhalt steht folgendes:
SELECT "K2-Gruppe"."Gruppe" FROM "K2-Gruppe", "K1-Hauptkategorie" WHERE "K2-Gruppe"."K1-ID" = "K1-Hauptkategorie"."K1-ID" ORDER BY "K2-Gruppe"."Gruppe" ASC



Ich verstehe nun die Rot markierten Einträge nicht.
Grob klingt das ganze wie eine IF-THENE-ELSE Geschichte ....
Im entsprechenden Listenfeld ändert es aber nichts an der Anzeige der Einträge.
RobertG
********
Beiträge: 2066
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Abhängige Listenfelder machen Probleme

Beitrag von RobertG »

Hallo Ignis,

zwei kleine Einwürfe zu deinem Listenfeld-Problem:

- Mir fällt auf, dass Du in der ersten Tabelle nicht den Fremdschlüssel (also die ID) aus der Tabelle abspeichern willst, sondern stattdessen das Inhaltsfeld nimmst. Damit blähst Du den Datenbestand unnötig auf.
- Wenn Du auf jeden Fall die Nutzung von Hauptformular und Unterformular (oder ähnliche Konstruktionen) nicht möchtest, so wirst Du an Makros auf keinen Fall vorbei kommen. Woher soll sonst ein Listenfeld in einem Formular erkennen, welchen Wert Du in einem anderen Listenfeld eingestellt hast. Das Mindeste, was ein Makro da erfüllen muss, ist nach Betätigung des ersten Listenfeldes auf den Wert des Listenfeldes per Makro für die Erstellung und Aktualisierung des zweiten Listenfeldes zuzugreifen.

Ich gehe gleich auf einzelne Teile Deines vorherigen Beitrags noch weiter ein.

Gruß

Robert
RobertG
********
Beiträge: 2066
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Abhängige Listenfelder machen Probleme

Beitrag von RobertG »

Hallo Ignis,
Ignis Pugnatur hat geschrieben: In den Eigenschaften des zweiten Listenfeldes (Register Daten | Listeninhalt steht folgendes:
SELECT "K2-Gruppe"."Gruppe" FROM "K2-Gruppe", "K1-Hauptkategorie" WHERE "K2-Gruppe"."K1-ID" = "K1-Hauptkategorie"."K1-ID" ORDER BY "K2-Gruppe"."Gruppe" ASC
Ich fange 'mal damit an:
Das, was Du da aufzeigst, ist erst einmal kein Listenfeld sondern ein Kombinationsfeld. Listenfelder haben die folgende Struktur:
SELECT "Anzeigefeld", "Weitergabefeld" FROM "Listentabelle"
Angezeigt wird bei Listenfeldern in der Regel etwas anderes als an die Tabelle des Formulars weitergegeben wird. In die Tabelle "Formulartabelle" des Formulars wird also der Wert "Weitergabefeld" eingetragen.
Kombinationsfelder haben die folgende Struktur:
SELECT "Feld" FROM "Listentabelle"
Der angezeigte Wert wird weitergegeben, ein anderes Feld nicht gelesen. Es kann deshalb auch ein neuer Wert eingetragen werden, der aber nicht in die Listentabelle sondern nur in die "Formulartabelle" eingetragen wird. Kombinationsfelder werden typischerweise als Vorschlagsfelder eingesetzt. Sie definieren keine feste Beziehung zwischen zwei Tabellen.
Nach "FROM" stehen bei Dir zwei Tabellen aufgelistet. Mit WHERE regelst Du die Beziehung dieser beiden Tabellen miteinander. Es sollen nur die Felder "Gruppe" angezeigt werden, die bereits in "K1_Hauptkategorie" eine Entsprechung finden. In der Tabelle "K2-Gruppe" existiert hier ein Fremdschlüssel aus der Tabelle "K1-Hauptkategorie". Wenn Du die Hauptkategorie ausgewählt hast ist damit die Gruppe eingegrenzt.
Das Ganze soll jetzt noch aufsteigend sortiert werden (ASC, ascending) - und zwar nach dem Eintrag "Gruppe", den das Kombinationsfeld anzeigt.

Gruß

Robert
paradigma
***
Beiträge: 51
Registriert: Fr, 15.04.2011 10:35
Wohnort: Zürich
Kontaktdaten:

Re: Abhängige Listenfelder machen Probleme

Beitrag von paradigma »

Hallo Ignis

Ich habe mal "ins Blaue" ein Beispiel erstellt, denke aber, dass es grundsätzlich das sein sollte, was du suchst. Habe das Beispiel unabhängig von deinen detaillierten Erklärungen erstellt.

Schaus einfach mal an, dann wirst du schnell erkennen, ob du es brauchen kannst.

Gruss
Beni
Dateianhänge
Beispiel Auswahl Listfeld 2 abhängig von Listfeld 1.odb
(12.99 KiB) 720-mal heruntergeladen
Ignis Pugnatur
**
Beiträge: 26
Registriert: Mi, 30.05.2012 11:57

Re: Abhängige Listenfelder machen Probleme

Beitrag von Ignis Pugnatur »

Nun Stop ... jetzt bin ich ganz verwirrt ..... @ RobertG :D

Im Eingabeformular habe ich 2 Listenfelder erstellt deren Bezug auf die entsprechenden Felder der Haupttabelle haben und die Daten aus Tabelle 2 ("K1-Hauptkategorie") und Tabelle 3 ("K2-Gruppe") beziehen.
Das wird so auch gemacht.

Nachdem ich im Entwurfsmodus einen Doppelklick auf das Listenfeld gemacht habe öffnen sich die Eigenschaften mit drei Registern. Nun habe ich das Register "Daten" geöffnet und hinter dem Eingabefeld "Listeninhalt" auf die Schaltfläche geklickt.
Es öffnet sich ein weiteres Fenster in dem ich die Beziehungen und weiter Dinge für das Selektierte Listenfeld einstellen kann.
Da habe ich einige Dinge gemacht die demnach den obigen Eintrag erzeugt hat. Wie der Editor aus einem Listenfeld nun ein Kombinationsfeld machen kann weis ich nicht.

Mir war bisher nur bekannt:
  • Aus einem Listenfeld kann nur ein Wert genutzt werden der anderweitig dem Feld zur Verfügung gestellt wird (Extra Datentabelle, Spalte einer Tabelle, Eingabe der Werte in den Eigenschaften unter Werteliste). Ausschließlich diese Daten können genutzt werden.
  • Mit einem Kombinationsfeld hat man die Möglichkeit wie bei einem Listenfeld nur dass der Nutzer noch Daten eingeben kann die nicht in der Liste stehen. Diese Daten werden nur im Zugehörigen Feld der Formulartabelle gespeichert.
Um die Datenlisten für beide Felder zu erweitern, muss entweder in der entsprechenden Tabelle der Wert eingegeben werden oder in den Eigenschaften (je nach Datenherkunft). Ich löste das über Extratabellen auf die man mit einem Button zugreifen kann (oder besser auf ein Formular der Tabelle).

Ich habe das Listenfeld nun gelöscht und wie oben beschrieben neu erstellt.
In den Eigenschaften-Listeninhalt steht nun folgendes:
SELECT "Gruppe", "Gruppe" FROM "K2-Gruppe"
Demnach soll das Listenfeld aus der Tabelle "K2-Gruppe" und dem Feld "Gruppe" seine Werte beziehen.

Und nun sehe ich mir mal die Daten von paradigma an .....

An alle erst mal ein großes Danke für eure schnelle Hilfe ....

Ignis
Ignis Pugnatur
**
Beiträge: 26
Registriert: Mi, 30.05.2012 11:57

Re: Abhängige Listenfelder machen Probleme

Beitrag von Ignis Pugnatur »

Haaaaa - Jubel
paradigma, das ist genau das was ich suchte.
Nun muss ich das nur noch analysieren und auf meine DB umbauen.
Ich melde mich sobald ich das habe.

Oh Oh - Kommando zurück ..... was bei dir geht, geht bei mir nicht.
Ich habe auch die Tabellen neu erstellt und die Beziehung neu gemacht.
Alle Eigenschaftsfelder verglichen ....
*grübel*
Kann ich schon einen Fehler beim erstellen der Felder gemacht haben?

EDIT: Nach einigem suchen bin ich auf ein Makro gestoßen .... OK - nun heißt es analysieren, aber nicht mehr heute ...
Ich melde mich wieder

EDIT 2:
Ich habe nun versucht das ganze auf meine DB um zu schreiben .....
Allerdings geht das ganze immer noch nicht .
Das Macro ist bei dir dem ersten Listenfeld (AuswahlArtikelgruppe) zugeordnet (Feldeigenschaften - Reiter Ereignisse - Modifiziert)

Ich habe es genauso gemacht - Nur kommt bei mir ein Fehler wenn ich das erste Listenfeld anklicke.
BASIC_Laufzeitfehler
Es ist eine Ausname aufgetreten
Typ: com.sun.star.container.NoSuchElementException
Message:.

Nach dem Klick auf den OK-Button öffnet er das Macrofenster und markiert die Zeile:
oForm = oDoc.Drawpage.Forms.getByName("FormArtikel")
Natürlich habe ich alle Elemente des Macros auf meine Bezeichnungen geändert .....

Ich starte nun mal noch einen anderen Versuch ....
Ich nehme deine Beispieltabelle (eine Kopie davon) und baue meine Elemente drum herum ..... ohne was an deinen Teil zu ändern ...
Sollte es dann gehen, dann ligt der Fehler irgendwo bei mir. (wie so oft ... bin immer ich Schuld :lol: )
Ignis Pugnatur
**
Beiträge: 26
Registriert: Mi, 30.05.2012 11:57

Re: Abhängige Listenfelder machen Probleme

Beitrag von Ignis Pugnatur »

Ich habe nun versucht die Datei von dir zu modifizieren / erweitern.
Nun scheiterte es daran, dass ich eine Tabelle erstellt habe in die die Daten der Formulare geschrieben werden sollten und ich deinen Listenfeldern das entsprechende Feld nicht zuweisen konnte.
Ich habe im Anhang einfach mal meine DB hoch geladen .....

Beschreibung dazu:
Tabellen:
  • EAN-Artikelliste - Soll Artikeldaten speichern die später über eine EAN-Codeeingabe mittels Handscanner im Haushaltsbuch (nach einem Einkauf) zugewiesen werden sollen.
  • L-Wert - Datenliste für das Listenfeld Wert im Formular EAN_Artikelliste (hinter Inhalt/Menge)
  • Li-K1 - Datenliste für das Listenfeld Hauptkategorie im Formular EAN_Artikelliste
  • Li-K2 - Datenliste für das Listenfeld Gruppe im Formular EAN_Artikelliste
Formulare:
  • EAN_Artikelliste - Eingabe der Artikel
  • Hauptmenue - Startmenü, das sich über das Makro "open-main_from" beim Dokumentenstart öffnet
  • L-Wert - Eingabeformular für Werte
  • Li-K1 - Eingabeformular für die Daten des Listenfeldes der Hauptgruppe
  • Li-K2 - Eingabeformular für die Daten des Listenfeldes der Gruppe
Ein zweites Makro "evCtl_OpenFrom" ist für die Schaltflächen zuständig, das über einen Eintrag der Schaltflächeneigenschaft - Allgemein - Zusatzinformation das dort eingetragene Formular öffnet.

Ich habe nun verschiedene Wege versucht ....
  • Ändern deines Makros auf meine DB (Bezeichnungen der Tabellen und Felder geändert). - Vermutlich habe ich dort einen Fehler, da wie im oberen Thread Fehlermeldungen erzeugt.
  • Öffnen einer Kopie deiner DB um diese zu erweitern. - Nach erstellen einer Tabelle lassen sich die gewählten Daten deiner Listenfelder der erstellten Tabelle nicht zuweisen. (zumindest nicht per Auswahl im Eigenschaftsfenster - Daten)
  • Erstellen eigener Listenfelder in der Kopie deiner DB um die Daten in den Eigenschaften mit den von deinen Listenfelder zu vergleichen / an zu gleichen. - Auch nach dem kopieren der in deinen Listenfeldern hinterlegten Daten kommen Fehlermeldungen (meine Listenfelder habe ich wie deine benannt und deine umbenannt).
Ich weis, dass ich irgendwo einen Denk- oder Scriptfehler im Code habe .....
Ich versuche es nun weiter und hoffe auf einen Tipp eurerseits wo in meinem Hirn der Bug begraben liegt ... :? .

In der hochgeladenen DB von mir ist das Makro noch nicht drin.

LG Ignis
Dateianhänge
Haushaltsbuch 2012 Vers 0.01.odb
(68.55 KiB) 274-mal heruntergeladen
paradigma
***
Beiträge: 51
Registriert: Fr, 15.04.2011 10:35
Wohnort: Zürich
Kontaktdaten:

Re: Abhängige Listenfelder machen Probleme

Beitrag von paradigma »

Hallo Ignis

Hab mal kurz in dein Beispiel reingeschaut.

Ich würde versuchen, eine saubere Tabellenstruktur zu erstellen, bevor du versuchst, das Listfeldproblem zu lösen, da zwischen beiden durchaus ein Zusammenhang besteht.

Du brauchst sicher noch eine vierte Tabelle (Li-K3 für Untergruppe), dann setzt du von K2 auf K3 eine Beziehung, wie du sie von K1 auf K2 gesetzt hast.

Eine weitere Beziehung musst du dann noch von K3 auf Artikelliste setzen (über Untergruppe).

Falls du Probleme hast - ich schaue heute abend nochmals ins Forum.

Gruss
Beni
Ignis Pugnatur
**
Beiträge: 26
Registriert: Mi, 30.05.2012 11:57

Re: Abhängige Listenfelder machen Probleme

Beitrag von Ignis Pugnatur »

Deine Vermutung mit K3 - Untergruppe ist richtig.
Ich dachte, dass ich die hinzufügen kann wenn ich das Prinzip K1-K2 verstanden habe.
Oder ist es Sinnvoller den Gaul von hinten auf zu zäumen? Also erst K2-K3 und dann K1-K2?
Ich mache mich mal dran um die zu erstellen.
Ich mache mir mal in Calk eine Tabelle in der alle Einträge drinstehen und lade dir die dann mal hoch damit du den Aufbau hast wie ich mir das vorstelle.

Ich werde auch nochmal an meiner DB etwas feilen und die Tabellen und Spaltenbeschriftungen etwas verständlicher hin zu bekommen.
Das was ich hoch geladen habe ist ja nur mal zum Testen .... Ich bastele nie in einer fertigen DB sondern immer nur an Kopien oder Ausschnitten rum bis ich verstanden habe wie was zusammenhängt.

Gegen später werde ich die beiden Dateien mal hoch laden.

Übrigens einen ganz lieben dank für deine Hilfe.

Ignis (Patric)
Ignis Pugnatur
**
Beiträge: 26
Registriert: Mi, 30.05.2012 11:57

Re: Abhängige Listenfelder machen Probleme

Beitrag von Ignis Pugnatur »

Hier habe ich mal die Calk-Tabelle.
Auf den Blättern 1 - 3 habe ich der Reihe nach die Schritte für die Datenlisten aufgeführt.
Auf Blatt 3 ist das dann so wie es in Base aussehen sollte.

Allerdings sind längst nicht alle Gruppierungen in der Liste .....
Die können dann bei der Eingabe mit eingearbeitet werden.
Da würde ich hinter den Listenfeldern eine Schaltfläche setzen, die auf das entsprechnde Formular verweist,
über das man dann Via Kombinationsfeld den fehlenden Wert einfügen kann.

Nun aber noch ein kleines Beispiel:
Ich möchte einen Artikel in die Liste aufnehmen.
Ich scanne den EAN-Code - 4311596436088 - Hier der Artikel
oder
3045140105502 - Hier der Artikel
Nun werden die weiteren Daten in die entsprechenden Felder aufgenommen.
Für die Gruppierung nutze ich dann die Listenfelder.
1.) So kann nicht irgendwas falsches in den Feldern landen
2.) Schreibfehler werden vermieden
3.) Tipparbeit und Zeiteinsprung

Nach einigen Wochen Datenbankbetrieb sind die wichtigsten Artikel drin und es müssen immer seltener neue Artikel eingelesen werden.
Nach dem Einkauf wird im Haushaltsbuch nur noch der EAN-Code eingelesen, Datum soll automatisch gesetzt werden, der Einkaufsort (auch über Listenfeldauswahl), Stückzahl und Preis eingegeben werden.
Nach einer Vorherigen "Inventur" und Eingabe der aktuellen Finanzen etc
lässt sich dann auch eine Artikelbestandsliste, über ein weiteres Feld (das dem Artikel als Sollbestand noch hinzugefügt werden soll) kann auch ein automatischer Einkaufszettel erstellt werden.
Natürlich ist das ganze noch um vieles erweiterbar .... aber das kommt alles später noch.
An der aktuellen DB bessere ich noch rum um alles etwas besser hin zu bekommen.
Die reiche ich noch nach.
Dateianhänge
Hilfslisten Haushaltsbuch_1-1.ods
(16.04 KiB) 295-mal heruntergeladen
RobertG
********
Beiträge: 2066
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Abhängige Listenfelder machen Probleme

Beitrag von RobertG »

Hallo Ignis,

ich habe mir die Liste kurz angeschaut. Mir fehlt da irgendwie die stringente Zuordnung.
Du hast lediglich 2 Hauptkategorien, werden aber doch vermutlich noch mehr dazukommen. Dann hast Du in den Unterkategorien bereits die ersten Überschneidungen. Von der Logik her passt zu Tiefkühlprodukten im Bereich der Lebensmittel noch Frischprodukte und Konserven sowie Getränke. Dann bin ich aber ganz schnell am Ende. Gemüse gibt es als Konserve, Frischprodukt und Tiefkühlprodukt. Und so setzt sich das bei vielen anderen Elementen fort.
Eine stringente Kategorisierung würde so aussehen, dass von der Hauptkategorie zur ersten Unterkategorie und dann zur zweiten Unterkategorie die Daten immer weiter zunehmen würden. Die Einträge von der zweiten Unterkategorie lassen rückschließen auf die erste Unterkategorie und die Hauptkategorie. Die Daten der zweiten Unterkategorie sind also die einzigen, die in der Tabelle mit dem Produkt einzutragen sind. Und zwar so, dass sie eindeutig sind: Mit dem Primärschlüssel der zweiten Unterkategorie, nicht mit dem Namen, wenn da doch laufend "Tiefkühl", "abgepackt" und "frisch" auftaucht.
Letztlich bräuchtest Du also nur ein Listenfeld in Deinem Formular. Da kannst Du bequem alle 3 Kategorien gleichzeitig darstellen und die zweite Unterkategorie abspeichern.

Gruß

Robert
paradigma
***
Beiträge: 51
Registriert: Fr, 15.04.2011 10:35
Wohnort: Zürich
Kontaktdaten:

Re: Abhängige Listenfelder machen Probleme

Beitrag von paradigma »

Hallo Patric
Ich habe es genauso gemacht - Nur kommt bei mir ein Fehler wenn ich das erste Listenfeld anklicke.
BASIC_Laufzeitfehler
Es ist eine Ausname aufgetreten
Typ: com.sun.star.container.NoSuchElementException
Message:.
Nach dem Klick auf den OK-Button öffnet er das Macrofenster und markiert die Zeile:
oForm = oDoc.Drawpage.Forms.getByName("FormArtikel")
Natürlich habe ich alle Elemente des Macros auf meine Bezeichnungen geändert .....
Ich tippe darauf, dass der interne Name deines Formulars nicht "FormArtikel" heisst. Vermutlich heisst es "MainForm".

Formulare haben einen externen und einen internen Namen. Der externe ist der, den du am Bildschirm siehst, wenn du in Base auf Formulare klickst.

Der Interne siehst du, wenn du das Formular im Entwurfsmodus öffnest und auf den Formularnavigator klickst. Ich verwende jeweils für beide die gleiche Bezeichnung, damit ich mir nur einen Namen merken muss.

Diese Makrozeile greift auf den internen Namen zu, deshalb solltest du zuerst diesen Namen überprüfen.

Gruss

Beni
paradigma
***
Beiträge: 51
Registriert: Fr, 15.04.2011 10:35
Wohnort: Zürich
Kontaktdaten:

Re: Abhängige Listenfelder machen Probleme

Beitrag von paradigma »

Hallo Robert

Ich wollte Patric eigentlich grad schreiben, dass für mich die Struktur in der Tabelle 3 sauber aussieht, da habe ich deinen Eintrag gesehen.

Wenn dein Hinweis im ersten Teil deines Beitrages den Ihnhalt der Kategorien betrifft, kann ich das zuwenig beurteilen.

Rein von den Beziehungen sehe ich aber keinen Fehler.

Er stellt doch die Beziehung über den jeweiligen Fremdschlüssel zur "qusi Übergeordneten Kategorie" her.

Vielleicht habe ich dich ja auch falsch verstanden.

Gruss

Beni
Ignis Pugnatur
**
Beiträge: 26
Registriert: Mi, 30.05.2012 11:57

Re: Abhängige Listenfelder machen Probleme

Beitrag von Ignis Pugnatur »

Danke für die Info @ RobertG

Die Tabelle ist längst nicht vollständig und die Sortierung ist auch noch nicht perfekt.
Was deinen Punkt betrifft mit dem Beispiel Tiefkühl ..... gebe ich dir auch bedingt recht.
Das allerdings ist Ansichtssache (denke ich mal).
Beispielsweise kann ich Frischeartikel mit unter K2 rein nehmen und dann Obst, Gemüse, Fisch etc entsprechend ablegen.
Ginge aber auch anders herum.
Dann müssten Tiefkühl oder Frisch (jetzt in K3) nach K2 verlegt werden.
Jetzt steht in K2 Fisch und zur Auswahl dann Frisch, TK oder abgepackt (Dosenfisch würde ja wieder unter Konserven fallen). Dann würde der Fisch in der K3-Kategorie mehrfach auftauchen ....
Also eigentlich egal wie man es macht, es wird immer irgendwo Überschneidungen geben.

Ist eine Überlegung wert .... aber wie gesagt ...
Ist alles auch ein wenig Ansichtssache wenn es ins Detail geht.
Alles nochmal Nachsortieren muss ich natürlich noch ....

Mir ging es nun erst mal darum ein Beispiel zu haben um die Datenmenge zu verdeutlichen,
damit ich das Problem mit den Listenfeldern in den Griff bekomme.
Mit der Sortierung und der späteren Übername in Base werden noch einige Std und Diskussionen mit meiner Holden Frau verggehen.
Auch die Daten in der kommenden Base-DB sind nur Versuchsdaten.

@ paradigma
Ich werde das nochmal prüfen.
Das sind oft so relevante kleinigkeiten die kaum wo zu finden sind und die man erst mit der Zeit lernt.

Wenn ich das nun hin bekomme dass das Makro geht,
ist der Aufabau für das dritte Listenfeld gleich (also K3 zeigt nur das an was zu K2 gehört)?
Sind das in dem Falle 2 Makros oder muss das in das eine dann rein?

Danke ich melde mich wieder.

LG Patric
Antworten