Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Verknüpfte Combo-Listen in einem Formular





Frage

Ich arbeite gerade an einer riesigen Datenbank und muß ein Formular erstellen wo man z.B. den Hersteller auswählt und die dementsprechenden Waren und deren Artikel. Das Problem ist das ein Hersteler Viele Produkte Herstellt und dann auch noch verschiedene Modelle davon und alles soll unter dem Gesichtspunkt anwählbar sein, das wenn man den Hersteller wählt, dann das dementsprechende Produkt und das passende Modell anwählbar ist und die Details angezeigt werden. Die Details dachte ich mir könnte ich über ein Unterformular anzeigen lassen, aber der wichtigste Aspekt ist die Select and Search-Fumtion. Die Verknüpfungen habe Ich fogendermaßen gelegt: Hauptkatalog/Hersteller -n:1-Hersteller/Hersteller Hersteller/Hersteller_ID -1:n- Produkte/Hersteller_Id Produkte/ID -n:n- Waren/ID Wer kann mir helfen. Ich stehe kurz vor der Verzweiflung. Bitte helft mir.

Antwort 1 von Teddy7

Hallo !
Wenn ich das jetzt richtig verstanden habe erfolgt der Einstieg in die Suche über den Hersteller.
Also würde ich als erstes eine Abfrage
erstellen über die möglichen Hersteller.
Wenn ein Hersteller mehrmals in der zugrundeliegenden Tabelle steht, dann in der Abfrage gruppieren (dann erscheint er nur einmal).
Über ein Kombi-Feld mit Datenquelle = diese Abfrage kann man dann schonmal den Hersteller fixieren.
Als zweites braucht man eine Abfrage über die Produkte dieses Herstellers.
Also eine zweite Abfrage über die Produkte (gruppieren je Hersteller und Produkt). Die Auswahl des ersten Kombinationsfeldes dient als Einschränkung für diese zweite Abfrage (Hersteller wie 1.Kombi-Feld).
Diese Abfrage ist Datenquelle für ein zweites Kombifeld.
Für die möglichen Modelle eine dritte Abfrage und Kombifeld.
Damit hast Du die Kriterien, die Du brauchst um die Details anzuzeigen.

Möglicherweise geht das noch eleganter,
aber so sollte es funktionieren.

Gruß
Teddy

Antwort 2 von ServerShutDown

Nich ganz. Die Abfragen existieren schon und das Formular mit den Combo-Listen auch. Das Problem ist jetzt nur Wie ich die jetzt voneinander abhängig mache , d. h. wie ich erreiche das ich auch wirklich aus den Produkten und Modellen wählen kann die dieser Hersteller auch wirklich herstellt.
(Doppelte Datensätze habe ich schon in der SQL-Ansicht mit dem SELECT DISTINCT-Befehl ausgemerzt) Ich habe also nicht nur einen Hersteller sondern viele. Intel stellt ja auch nicht nur Prozessoren her und Microsoft ja auch nicht nur das Windows. Und genau da drückt der Schuh.

Antwort 3 von Koebi

Grüezi

Schau einmal in diesem Forum unter dem 2.12.2001 nach:

https://supportnet.de/discussion/listmessages.asp?content=&recno=70377&adminrecno=23

Pascal hatte da ein ähnliches Problem.

Ich habe ihm damals eine kleine Muster-DB gemacht. Wenn Du interessiert bist, kann ich Sie dir mailen, damit Du den Weg nachverfolgen kannst.

Gruss
Köbi

Antwort 4 von ServerShutDown

Danke Köbi. Das wär echt nett.
Ich habe mir diesen Beitrag ausgedruckt und habe meine Beziehungen änlich gestaltet wie dort beschrieben, aber ich komme mit dem Ausdrucksgenerator in der Abfrage nicht klar. Er verlangt von mir das ich Parameterwerte eingebe und das dürfte denke ich mal nicht sein. Das Formular soll in eine Internetseite eingebunden werden und ich denke nicht das man in einem Online-Shop Parameterwerte eingeben möchte. Mir fehlt denke ich mal der komplette Ausdruck. Schick mir bitte die Beispieldatenbank zu. Ich denke Sie wäre äußerst hilfreich für mich.

Antwort 5 von ServerShutDown

Ich kriegs immer noch nicht hin. Übertrage ich den Ausdruck auf ein Formular dann soll ich Parameter eingeben, aber das ist doch völliger Blödsinn. Ich habe die Strucktur der Beispieldatenbank völlig übernommen und trotzdem klappts nicht. Wie muß ich den Ausdruck formulieren und wie sind Ausdrücke aufgebaut(Ich habe vorher noch nie mit Ausdrücken gearbeitet). Wo soll ich denn den Ausdruck anheften und wie sieht der konkret aus? Ich bin völlig verzweifelt.

Antwort 6 von Koebi

Grüezi Verzweifelter

Ich bin eigentlich auch ein wenig erstaunt, dass es nicht funktionieren soll.
Wenn Du die Struktur der Datenbank übernommen hast und die Abfrage gleich erstellt, funktioniert die Sache auch. Die Parameter-Eingabe kann ja höchstens im Zusammenhang mit der Abfrage verlangt werden, mit der Du die Werte des 2. Kombifeldes auf jene im 1. Kombifeld beschränken willst. In dieser Abfrage muss bei den Kriterien auf das Formular verwiesen werden, in der Musterdatenbank mit folgendem Ausdruck "[Formulare]![Kunden]![HerstellerID]".

Zur Ergänzung:
[Formulare] diesen Ausdruck lässt Du unverändert so, keine Namensanpassung. Das ist nämlich der Hinweis auf ein Formular. Kannst allenfalls statt Formulare auch Forms schreiben.
[Kunden] ist der Name des Formulars mit den Kombifeldern. Diesen musst Du Deinem Formularname anpassen.
[HerstellerID] ist der Name des 1. Kombifeldes im Formular Kunden. Auch diesen musst Du dem Namen Deines 1. Kombifeldes anpassen.
Die Bezeichungen sind in eckige Klammer zu setzen [ ], zwischen den Bezeichnungen ein Ausrufezeichen !, nicht ein Semikolon oder sonst was.

Wenns nicht hilft, kannst Du mir gerne Deinen Entwurf der DB schicken. Bitte aber nicht als mdb-Datei sondern gezippt. mdb-Dateien werden von Outlook 2002 als potenziell virengefährlich nicht angenommen.

Gruss
Köbi


Antwort 7 von ServerShutDown

Kann ich die Abfragen auch mit SQL so hinkriegen das der ganze Kram auch auf einem Formular hinhaut?

Antwort 8 von Koebi

Nochmals ich

Ich habe Deine letzte Frage nochmals angeschaut.
Was heisst "Wenn ich den Ausdruck auf ein Formular übertrage......"?
Welchen Ausdruck meinst Du. Die Formulierung des Abfragekriteriums wie oben geschildert? Dieses bleibt bei der Abfrage und die Abfrage selbst, in der Muster-DB mit "Modelle_beschränkt" benannt, dient als Datensatzherkunft für das 2. Kombifeld.
Wenn Du in der Muster-DB die Abfrage einfach so als Abfrage startest, wird auch nach einem Parameter verlangt. Wenn du aber im Formular das Kombifeld anklickst, klappts, eben weil ja in der Abfrage genau auf dieses Kombifeld verweisen wird.

Gruss
Köbi


Antwort 9 von ServerShutDown

Danke Köbi!
Die DB kann ich dir leider nicht schicken weil wir sonst Ärger mit dem Lieranten bekommen.

Antwort 10 von ServerShutDown

Wenn ich das Formular mit diesen Abfragekriterien öffnen will, bekomme ich folgende Fehlermeldung:"Sie wollen eine Abfrage ausführen, die den angegebenen Ausdruck `ID` nicht als Teil der Aggregatfunktion einschließt." Was hat es damit auf sich? Was ist schiefgelaufen? Welchen Fehler habe ich gemacht?

Antwort 11 von Koebi

Guten Abend Andy

Dass Du die DB nicht schicken kannst wegen dem Lieferanten verstehe ich. Evtl. machst Du halt eine neue DB und importierst (Datei / Externe Daten / Importieren) dort hinein nur die relevanten Tabellen, Abfragen und Formulare. Das würde auch genügen und wäre keine Lizenzverletzung.

Aber ich will mich nicht aufdrängen. Sicher hat jemand eine Lösung die Dir besser hilft.

Gruss
Köbi

Antwort 12 von ServerShutDown

Fehler gefunden! Produkt ID war als Ausdruck definiert.

Antwort 13 von Koebi

Grüezi Andy

Funktioniert es jetzt?
Sonst hätte ich hier eine andere Lösung gefunden.
Wiederum aufbauend auf der Muster-DB, die ich Dir gesandt habe, müsstest Du folgendermassen vorgehen:

Beim 1. Kombifeld (HerstellerID) beim Ereignis "Nach Aktualisierung" folgende Ereignisprozedur einfügen (die bisherige löschen, ist jetzt hier integriert):

Private Sub HerstellerID_AfterUpdate()

Me!ModellID.RowSource = "SELECT Modelle.ModellID, Modelle.Modell " _
& "FROM Modelle " _
& "WHERE (((Modelle.HerstellerID) = " & Me.ActiveControl & "));"
Me!ModellID.Requery

End Sub

Beim 2. Kombifeld (ModellID) die Datensatzherkunft völlig löschen. Die Daten werden jetzt in obiger Prozedur definiert.

Bei mir funktionert es so. Das Problem mit der Abfrage (Parameter eingeben, etc.) fällt weg.

Hoffentlich hilfts.

Gruss
Köbi


Antwort 14 von ServerShutDown

Wenn ich die Kriterien in Hersteller in meiner Abfrage eingebe und auf die Kombo-Liste übertrage dann zeigt mir das Formular überahupt nichts mehr an.
Visual Basic programmieren kann ich nicht und soll ich auch nicht weil das nur im Internetexplorer angeziegt werden würde. Soll ich jetzt sowas mit `nem Makro machen? Aber es müsste djoch auch so laufen wie du mir beschrieben hast. Ich blicke da immernoch nicht ganz durch und ich muß das bis nächste Woche Freitag fertig haben, denn da ist mein Praktikum vorbei. Die ursprüngliche Datenbank wurde glaube ich mit SQL oder Delphi erstellt und ich habe diese in Acces importiert. Es ist also ursprünglich nicht in Access 2000 erstellt worden. ich soll sie in dIeser Hinsicht weiterverarbeiten. Gibt es unter diesem Aspekt irgendwelche Einschränkungen? Ich weiß zwar das man mit Ausdrücken rechnen kann aber Listboxen verknüpfen ist in meiner Literatur nicht beschrieben. (... und ich habe mir viel Literatur aus dem Internet besorgt um mir Sachen die ich nicht kann oder nicht in der Schule gelernt habe selbst anzueignen)Irgendwie muß ich das aber schaffen. Egal wie. (Ich brauch ja schließlich `ne gute Praktikumsbewertung um das als Referenz auszulegen wenn ich mich mal wieder um eine Lehrstelle bewerbe)

Antwort 15 von Koebi

Also, jetzt nicht nervös werden. Du wirst Dein Praktikum schon noch retten!:-)

Du hast Dich weiter oben schon einmal nach Ausdrücken erkundigt. Sieh mal in der Access-Hilfe unter "Verweise auf Objekte und Eigenschaften in
Ausdrücken" nach.

Die Datenbank hast Du also in Access importiert. Sie wird ja nicht nur aus diesen Kombifeldern bestehen, welche hier Probleme machen. Funktionieren denn die anderen Teile jetzt unter Access? Das wäre ja dann schon einmal gut. Andernfalls müsste man wahrscheinlich beim Importieren anfangen mit suchen. Auch darüber findest Du in der Hilfe einen Abschnitt unter "Importieren oder Verknüpfen von SQL-Datenbanktabellen oder Daten aus anderen ODBC-Datenquellen". Aber wie gesagt, wenn die DB unter Access schon mal grundsätzlich funktioniert, fehlt es meiner Ansicht nach nicht beim Importieren.
Hast Du die Version gemäss meinem Beitrag von heute Vormittag schon versucht?

Kannst Du die obigen Punkte einmal kurz beantworten? Dann können wir weitersehen.

Gruss
Köbi





Antwort 16 von ServerShutDown

Die Tabellen laufen alle. Die Hauptabelle umfast 23075 Datensätze, dann habe ich kleine Tabellen angefertigt gemäß meinen Kombi-Feldern und miteinander verknüpft.(nach deinem Beispiel) Wegen deines Beitrags von Heute Vormittag soll ich die ereignisse in einem Makro schreiben oder wie läuft das jetzt? Insgesamt sind es 3 Kombifelder die ich erstellen soll,undzwar Hersteller, Produktgrugge udn Warengruppe. Stellenweise blicke ich auch da nicht durch, weil die ganze geschichte zeimlich komplex ist. Ich habe zwar schon viel über Access gelernt, aber studiert habe ich es nun mal nicht. (deshalb auch die viele Literatur die ich bestellt habe um die ganze Geschichte auch verstehen zu können und alles kann man ja auch nicht wissen sondern muß es nachlesen und lernen)

Antwort 17 von Koebi

Mal sehen.
Was ich Die heute unterbreitet habe ist kein Makro, sondern eine Ereignisprozedur oder ein Klassenmodel wenn Du so willst.
Ich könnte Dir wahrscheinlich besser helfen, wenn Du mir die Haupttabelle und die kleinen Tabellen sowie das Formular mit den Kombifeldern in eine leere Datenbank importierst und schickst. Die Tabellen kannst Du selbstverständlich ohne Daten importieren, das lässt sich bei den Import-Optionen so einstellen. So bleibt der Daten- und der Lizenzschutz gewahrt.
Wenn Du das nicht darfst, müsstest Du mir wenigstens die Tabellen genau beschreiben:
Tabellennamen
Namen und Typ der Primärfelder
Namen und Typ der Felder für die Produktegruppen und Warengruppen
allenfalls weitere Felder, die Du für die Kombifelde verwendest
Namen der Kombifelder

Auch wäre ich froh, wenn wir diesen Dialog über email fortsetzen können. Ich kann nicht ständig die neuesten Einträge im Supportnet überwachen.

Gruss
Köbi


Antwort 18 von Koebi

An interessierte Tipp-Geber

Unser Dialog ist hier abgebrochen und das Problem wohl noch nicht gelöst. Vielleicht bin ich zu kompliziert oder was weiss ich.

Ich möchte drum andere Tipp-Geber einladen, Andy zu helfen.

Gruss
Köbi

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: