Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Kombinations-Feld aktualisiert nicht

Begonnen von apfel, Oktober 08, 2014, 03:13:18

⏪ vorheriges - nächstes ⏩

apfel

Hallo,
ich bastle derzeit an einer Fahrzeugdatenbank und versuche diese zunächst an einer Probedatenbank zum Laufen zu bringen.
Da diese etwas komplex zu erklären ist, stecke ich sie mal in den Anhang.
(Fertig und besonders schön ist die Probedatenbank noch nicht!)

Das Hauptformular (frm_KFZMOTOR) müsste sich automatisch öffnen.
Zunächst möchte ich, dass die obere Leiste mit der Sortierung (über 6 Kombinationsfeder) von links nach rechts funktioniert.
Also:
1. Wähle Art aus
2. Abhängig von (1) wähle Klasse aus
3. Abhängig von (2) wähle Hersteller
4. Abhängig von (3) wähle Modell
usw. bis 6.

Dabei funktioniert die Sortierung von KFZ-Klasse auf Hersteller nicht ganz: Wenn ich eine KFZ-Klasse auswähle, wird immer die erste KFZ-Klasse ausgewählt, unabhängig von dem was man anklickt. Und dementsprechend wird in Hersteller auch nur dasselbe (zu dem ersten zugehörigen) angezeigt.
Die Sortierung funktioniert über Abfragen, da die Datenbankstruktur relativ komplex mit vielen Tabellen und Beziehungen ist. Weiter als bis zum cmb_hersteller habe ich die Verbindungen noch nicht gesetzt. Die anderen Bedienflächen (alle bis auf die cmb-Felder) sind erstmal nicht von Belang.




Was habe ich falsch gemacht bzw. wie erstellt man so ein funktionierendes Kombinationsfeld?
Ich schätze es hat was mit dem VBA-Code zu tun; da kenne ich mich noch so gut wie gar nicht aus.

MaggieMay

Hallo apfel,

die Angabe der Access-Version wäre sinnvoll, ebenso die Komprimierung der DB vor dem Zippen und Hochladen.

Morgen evtl. mehr, falls bis dahin nicht schon jemand anderes einen Lösungsvorschlag machen konnte.
Freundliche Grüße
MaggieMay

apfel

Hallo MaggieMay,

ich benutze Access 2010 und zu der Komprimierung kann ich nicht viel sagen, da ich mich damit nicht wirklich auskenne. :(
Ich habe es einfach in ein ZIP-Archiv über winrar gepackt.

Funktioniert meine hochgeladene Datei? Sie ist ungepackt 2480 kb groß.

Sollten zum Verständnis noch irgendwelche Fragen offen sein, versuche ich sie zu beantworten!

DF6GL

Hallo,

der Wunsch nach Auswahl mittels abhängiger Kombifelder über die angegeben "Arten" ist nicht realisierbar, weil es bei diesen Tabellenbeziehungen keine Abhängigkeit zwischen Klasse, Hersteller und Modell gibt.

Insofern wäre zunächst das Datenmodell zu ändern.

MaggieMay

Hallo,

alle Eigenschaften sind direkt oder indirekt auf die Fahrzeuge bezogen, so dass sich daher durchaus Abhängigkeiten und eine Einschränkung der Auswahl herleiten lassen sollte.

Meinem Verständnis nach hat jedoch der KFZ-Hersteller nichts in der tbl_mm zu suchen, oder was ist der Grund dafür? Und welchen Zweck dient ID_modell in tbl_antriebsstrang?
Auch ich habe den Eindruck, dass die Tabellenbeziehungen noch nicht stimmig sind.
Freundliche Grüße
MaggieMay

apfel

Die zusätzlichen Fremdschlüssel sind für eine bessere Übersicht gedacht, damit man einen Antriebsstrang, etc. besser zurückverfolgen kann. Die werden in der fertigen Version entfernt, da ja die ganze Organisation und Anzeige über das Formular geregelt werden soll.


Zitat von: MaggieMay am Oktober 09, 2014, 11:58:15
alle Eigenschaften sind direkt oder indirekt auf die Fahrzeuge bezogen, so dass sich daher durchaus Abhängigkeiten und eine Einschränkung der Auswahl herleiten lassen sollte.

Das stimmt und lässt sich ganz einfach praktisch belegen:

Mein Problem ist, dass wenn man in KFZ-Klasse etwas anderes als den ersten Eintrag ("Kompakt") anklickt, dass cmb trotzdem "Kompakt" anzeigt und darauf in cmb_hersteller nur die Hersteller anzeigt die Kompakt-Fahrzeuge anbieten.
Wenn man nun qry_2_kfzart_hersteller öffnet wird ein Wert nach den cmbs KFZ-Art und KFZ-Klasse gefragt (man sollte dafür das Hauptformular am besten schließen oder die cmbs unangerührt lassen, sonst werden die Werte übernommen). Gibt man für den ersten Wert "1" (Pkw) und für den zweiten auch "1" (Kompakt) bekommt man dasselbe Ergebnis wie auch im Formular ("Volkswagen"+"Fiat"). Schließt und startet man die Abfrage neu und gibt man im zweiten Wert allerdings "2" zeigt einem die Abfrage die Hersteller an, die Mittelklasse-Fahrzeuge anbieten (Nur "Volkswagen"). Oder "3" für alle Oberklasse-Fahrzeuge ("Opel"), usw.
Also so wie es eigentlich geplant ist. Nur übernimmt cmb_klasse nicht die eingegebene Auswahl und springt stattdessen immer auf "1".

Demzufolge sehe ich den Fehler (bis zum cmb_hersteller zumindest) weniger in der Datenstrukturierung, sondern in dem immer "zurückspringen" auf den Wert "1" (Kompakt) im cmb_klasse.

Ich schaue mir trotzdem nochmal an, wie ich die Datenbank umstrukturieren könnte, vielleicht ist es doch das Problem.

MaggieMay

#6
Hallo,

der Fehler liegt in der Abfrage "qry_1_kfzart_kfzklasse", die Spalten "tbl_kfzart.ID" und "tbl_kfzart.Fahrzeugart" haben dort nichts zu suchen.
Überhaupt ist die Verknüpfung zur Tabelle "tbl_kfzart" überflüssig, da die Spalte "ID_kfzart" ja auch in der Tabelle "tbl_kfzklasse" enthalten ist.

Wenn du an der Abfrage festhalten willst, so wähle zumindest die richtigen Spalten für die Datensatzherkunft des Kombifeldes. ;)

ZitatDie zusätzlichen Fremdschlüssel sind für eine bessere Übersicht gedacht
Ich halte das weiterhin für einen Fehler, wie willst du diese Datenfelder denn überhaupt (korrekt!) pflegen?
Freundliche Grüße
MaggieMay

apfel

Zitat von: MaggieMay am Oktober 09, 2014, 15:29:32
wie willst du diese Datenfelder denn überhaupt (korrekt!) pflegen?
Indem ich diese Datenfelder einfach lösche ;D Die sind jetzt auch eher unwichtig.

Die Spalte "tbl_kfzart.ID" in "qry_1_kfzart_kfzklasse" hat ja ein Kriterium, was die Sortierung im Formular (von KFZ-Art auf KFZ-Klasse) erst ermöglicht. Wenn ich die beiden Spalten entferne funktioniert die Sortierung im ersten Schritt ja nicht mehr (-> Alle 5 KFZ-Klassen werden angezeigt obwohl es nur 4 sein müssten). Wo setze ich dann das Kriterium (und wie sieht das dann aus), wenn ich die beiden Spalten entferne?

Spontanes Rumprobieren hat nicht geholfen. (Ihr habt vielleicht schon gemerkt, dass ich ein Anfänger bin :D )

MaggieMay

Wie gesagt, ist die Spalte "ID_kfzart" in der Tabelle "tbl_kfzklasse" enthalten und diese kannst du ebensogut zum Filtern einsetzen.
Mit der Sortierung hat das eher weniger zu tun.
Freundliche Grüße
MaggieMay

apfel

#9
So ich habe jetzt die überflüssigen Spalten in den Abfragen entfernt und die Filterung angepasst. Und...irgendwie funktioniert es genauso wie vorher  :D

Das cmb_klasse lässt sich immer noch nicht umschalten und bleibt auf der ersten Möglichkeit "Kompakt" stehen.

Ich probiere weiter herum, vielleicht hat ja noch jemand einen Denkansatz.
Vielleicht muss einfach die ganze Datenbankstruktur über den Haufen geworfen werden.
Bzw.: Wie würde man so eine 6 cmb Sortierfunktion profesionell anlegen?

MaggieMay

Du hast anscheinend nicht verstanden, worin der Fehler liegt. Schau dir doch das Ergebnis der Abfrage, die du als Datensatzherkunft des Kombifeldes einsetzt, einfach mal an - bzw. zeige den Code.

PS:
Datenfelder nach denen gefiltert wird, müssen nicht in der Feldliste einer Abfrage enthalten sein.
Freundliche Grüße
MaggieMay