Access 2007-Filter Unterformular Basierend Auf Feld Im Hauptformular?
Ich wurde beauftragt mit der Erstellung einer einfachen app verwalten eines Benutzers collectibles-Sammlung mit Access 2007. Es gab einige Anfragen, die ich erstellt und implementiert. :
- Ein Haupt-Formular mit der Liste seiner Sammlerstücke
- Selben Hauptformular hat ein Registerkarten-Steuerelement unten, mit der jedes Register enthält ein Unterformular, das in-Effekt "filtern" von Daten basierend auf unterschiedlichen Kriterien, die von der Haupt form. Zum Beispiel, das 1. Unterformular nimmt den Namen der Sammler-Figur in der main-form, und blendet alle anderen Einträge mit diesem Namen im Unterformular. In anderen Worten, wenn die Figur "Darth Vader", das Unterformular würde eine Liste aller Sammelobjekte, die den Namen "Darth Vader".
Ich habe die Anwendung wie pro Benutzer-Anforderung, aber es gibt eine Sache, die stört uns beide so weit. Das Unterformular Erster Datensatz ist der gleiche wie der Haupt-form. Wir beide finden, dass das überflüssig und ärgerlich. Zugegeben, meine Access Fähigkeiten ist schwach am besten, so kann dies eine einfache Lösung, aber ist es ein Weg, um entfernen Sie den doppelten Datensatz im Unterformular? Ich habe versucht, die Umsetzung einer where-Klausel in das Unterformular Angabe, damit Sie nicht die "Bild-ID" in der Haupt-form. Problem ist, es benimmt sich wie eine Parameter-Eingabeaufforderung gefragt, ob das Hauptformular FigureID, wenn ich öffnen Sie das Unterformular oder das Hauptformular. Wenn ich in der Bild-ID, es funktioniert, aber die Eingabeaufforderung ist etwas, das offensichtlich nicht wollte.
FYI:
- Das Hauptformular basiert auf einer Abfrage, die im Grunde wählt alle Datensätze aus der "Zahlen" - Tabelle und andere Verwandte Tabellen
- Das Unterformular erstellt wurde, wenn ich ließ das Unterformular-Steuerelement auf die Registerkarte Steuerung, wo ich Verband die notwendigen master und die untergeordneten Felder
Hi HansUp! Eine kurze Momentaufnahme: Jede Figur gehört zu einer Serie, jede Serie gehört zu einer Linie, eine Linie gehört zu einem Hersteller. So als Beispiel: Mfr: Hasbro Linie: Transformers-Serie: Armada Figur: Optimus Prime
Es gibt auch andere Tabellen, wie das Land und die Größe da eine bestimmte Zahl genannt werden kann, mit dem gleichen Namen in der gleichen Serie, aber in der unterschiedlichen Größe der Verpackung.
Lassen Sie uns versuchen einen anderen Ansatz. In Ihrer wichtigsten form, Sie haben eine Entität namens "name". Anscheinend "name" als Feld Verknüpfung zwischen dem Hauptformular und ein Unterformular ... und das Unterformular zeigt alle Zeilen, wo "name" mit dem Wert von "name" für den aktuellen Datensatz im Hauptformular.
... Aber der kicker ist, dass Sie nicht wirklich wollen, das Unterformular zur Anzeige von alle Zeilen, in denen "name" mit dem Wert von "name" für den aktuellen Datensatz im Hauptformular. Stattdessen möchte man alle Zeilen außer, dass bestimmte "Namen" - Zeile, die die wichtigste form aktuellen Datensatz. So dass das Feld (oder eine Kombination von Feldern), die Sie verwenden, um zu unterscheiden, welche das Unterformular "name" Zeilen ist, die Sie nicht wollen, enthalten?
InformationsquelleAutor JPM | 2011-07-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sagen, Sie haben ein Formular mit dem Namen frmMain. Das Formular enthält zwei Felder in Ihrer Datenquelle: FigureID; und Figure_name. Das Formular enthält auch ein Textfeld-Steuerelement mit der Bezeichnung txtFigureID, die gebunden ist an die FigureID record-source-Bereich.
frmMain enthält auch ein Unterformular-Steuerelement auf einem Formular namens frmSub. Die Datenquelle für frmSub enthält auch FigureID und Figure_name Felder. Das Unterformular-Steuerelement - link-master - /Kind-Feld-Eigenschaft ist Figure_name. Daher frmSub zeigt alle Zeilen, in denen Figure_name entspricht, wird der entsprechende Wert in der frmMain zum aktuellen Datensatz.
Nun, wenn Sie wollen frmSub auszuschließen, die bestimmten Datensatz (erkennbar an der einzigartigen FigureID Wert), die den aktuellen Datensatz in frmMain, fügen Sie eine WHERE-Klausel, um frmSub Datensatzquelle-Abfrage:
Ich bin nur raten hier, aber hoffe, die Beschreibung ist nahe genug, um Ihre aktuelle situation, um nützlich zu sein. Wenn nicht, zeige uns den SQL verwendest du als Datenherkunft für dein Unterformular.
Bearbeiten: Sie erhalten die parameter-Eingabeaufforderung nur, wenn Sie zum ersten mal öffnen frmMain. Danach können Sie navigieren zwischen Datensätzen in frmMain, und frmSub zeigt Sie nur die Datensätze, die Sie möchten, um zu sehen ... ohne zu Fragen, Sie wieder um einen parameter zu liefern Wert.
Dem Grund, dass passiert ist, weil das Unterformular geladen vor das übergeordnete Formular ... so ein Steuerelement im übergeordneten Formular ist nicht verfügbar, wenn das Unterformular geladen.
Ich denke, die Heilung kann es sein, speichern Sie das Unterformular ohne die WHERE-Bedingung in Ihrer Datensatzquelle. Dann, wenn das Hauptformular geladen, es kann wieder schreiben das Unterformular-Datensatz Quelle, um die WHERE-Bedingung.
So, in frmMain load-Ereignis:
Watch out für subformControlName. Es ist eine Kontrolle, nicht eine form. Das Unterformular-Steuerelement kann haben den gleichen Namen wie die form, die es enthält. Aber es könnte einen anderen Namen.
OK. Ich glaube, dass ich endlich verstehen, was Los ist. Siehe edit ich habe gerade.
Hallo Hans! Danke für die Hilfe, es funktionierte wie ein Charme. Die ganze Zeit dachte ich, es war meine Anfrage, es war doch die subfrom zuerst geladen das war das problem verursacht. Danke, spart mir EINE MENGE Kummer Hans, ich wirklich zu schätzen. 🙂
InformationsquelleAutor HansUp