collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 71
  • Punkt Versteckte: 1
  • Punkt Mitglieder: 1

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 14071
  • stats Beiträge insgesamt: 67549
  • stats Themen insgesamt: 9101
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: "Filtern" eines Unterformulars  (Gelesen 4432 mal)

Offline Klaus S. aus B

  • Access-Profi
  • **
  • Beiträge: 238
"Filtern" eines Unterformulars
« am: Februar 19, 2014, 17:37:15 »
Hallo Gemeinde,

ich steh' mal wieder auf dem Schlauch.

Ich habe ein Formular mit Unterformular. Wenn im HF (über ein Listfeld) ein Wert ausgewählt wird, zeigt das UF die dazugehörigen DS.
Soweit so gut, das geht einfach über verknüpfen der beiden Felder in HF und UF.

Aber, jetzt will ich, dass beim Öffnen des Formulars das UF alle DS anzeigt. Im Moment ist das UF ja leer, weil kein Wert ausgewählt ist.
Mit Standardwert "*" geht es nicht, da bekomme ich einen Fehler.

Wie bekomme ich das gelöst?
???

Gruß
Klaus
 

Offline Hondo

  • Administrator
  • Access Guru
  • *****
  • Beiträge: 4643
  • Balu
    • Access Hilfe
Re: "Filtern" eines Unterformulars
« Antwort #1 am: Februar 19, 2014, 18:11:29 »
Hallo,
wenn du die Eigenschaften Verknüpfen von/nach gesetzt hast, ist dies nicht möglich, du musst dies per VBA machen.
Ich empfehle dir ein neues Endlos-Formular zu erstellen, falls noch nicht vorhanden, welches alle Datensätze anzeigt.
Nimm dies als Herkunftsobjekt für das Unterformular-Steuerelement.

Wenn du dann im Hfo einen Datensatz auswählst, setzt du die Eigenschaften verknüpfen von/nach und machst ein Requery auf das Ufo.
Die Eigenschaften heißen LinkChildFields und LinkMasterFields.

Gruß Andreas
 

Offline Klaus S. aus B

  • Access-Profi
  • **
  • Beiträge: 238
Re: "Filtern" eines Unterformulars
« Antwort #2 am: Februar 19, 2014, 18:50:30 »
Hallo Andreas,

ich hadere etwas mit der Syntax und finde auch nirgends vertsändliche Beispiele.

Grundsätzlich sieht die Syntax folgendermaßen aus?
me![mein_unterformularname].LinkChildFields = [das Schlüsselfeld im HF]

Das ganze kommt in den VBA Code de HF?

Wo und wie definiere ich das MasterField ? Im HF oder im UF?

Ich habe jetzt schon alle möglichen Versione probiert, bekomme aber immer Fehler.

Gruß
Klaus
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23445
Re: "Filtern" eines Unterformulars
« Antwort #3 am: Februar 19, 2014, 19:36:08 »
Hallo,

--- Schau Dir in der VBA-Hilfe die Beispiele zu den Eigenschaften ( des UFO-Steuerelementes) "LinkChildFields" und "LinkMasterFields" an..

--- Statt die o. g. Eigenschaften zu verwenden, könntest Du dem UFO eine Abfrage in dessen Datenherkunft mitgeben, die alle DS liefert (und damit vom Formular angezeigt werden).

Beim Klick-Ereignis des Listenfeldes im HF filterst Du in dessen Ereignisprozedur das UFO:


Sub lstListenfeld1_Click()
Me![Ufo-Steuerelementname].Form.Filter =  "ID = " & Me!lstListenfeld1.Column(0)
Me![Ufo-Steuerelementname].Form.FilterOn = True
End Sub

(Anpassen der Namen und der Listenfeld-Einstellungen nicht vergessen!)

 

Offline Klaus S. aus B

  • Access-Profi
  • **
  • Beiträge: 238
Re: "Filtern" eines Unterformulars
« Antwort #4 am: Februar 20, 2014, 09:14:54 »
Hallo Franz,

die Filtervariante funktioniert (natürlich, wenn es von Dir kommt). Vielen Dank.

Aber rein aus sportlichem INteresse würde mich schon interessieren wie das mit den "linkChildField" funktionieren würde. Die VBA Hilfe hilft mri nicht weiter. Ein Beispiel ist nicht drin und der "Text erschliesst sich mir nicht".  ;)
Ich habe auch im Internet (und auf Access-o-mania) nichts gefunden, was mir weiterhilft.

Gruß
Klaus
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7426
Re: "Filtern" eines Unterformulars
« Antwort #5 am: Februar 20, 2014, 09:25:02 »
Hallo,
die Übergabe erfolgt als String.
me![mein_unterformularname].LinkChildFields = "das Schlüsselfeld im HF"[mein_unterformularname] muss dabei der Name des Unterformularsteuerelements sein, nicht das Herkunftsobjekt.
Der Aufruf erfolgt aus dem Hafo.
Gruß
Klaus
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23445
Re: "Filtern" eines Unterformulars
« Antwort #6 am: Februar 20, 2014, 09:44:30 »
Hallo,


ein Zitat aus der VBA-Hilfe (2010):
Zitat
Access-Entwicklerreferenz
SubForm.LinkMasterFields (Eigenschaft)
Alle anzeigenAlle anzeigen
Alle ausblendenAlle ausblenden
Sie können mit der LinkMasterFieldsLinkMasterFields-Eigenschaft (und der LinkChildFieldsLinkChildFields-Eigenschaft) festlegen, wie Microsoft Access Datensätze (Datensatz: Eine Sammlung von Daten über eine Person, einen Ort, ein Ereignis oder ein anderes Element. Datensätze sind die logischen Entsprechungen von Zeilen in einer Tabelle.) in einem Formular (Formular: Ein Access-Datenbankobjekt, in das Sie Steuerelemente für die Ausführung bestimmter Aktionen oder für die Eingabe, Anzeige und Bearbeitung von Daten in Feldern platzieren.) oder Bericht (Bericht: Ein druckbares Access-Datenbankobjekt, das Informationen enthält, die in der von Ihnen festgelegten Formatierung und Anordnung gedruckt werden. Beispiele für Berichte sind Verkaufsberichte, Telefonlisten und Adressetiketten.) mit Datensätzen in einem Unterformular (Unterformular: Ein Formular, das innerhalb eines anderen Formulars oder eines Berichts enthalten ist.), Unterbericht (Unterbericht: Ein Bericht, der in einem anderen Bericht enthalten ist.) oder eingebetteten (Einbetten: Eine Kopie eines OLE-Objekts aus einer anderen Anwendung einfügen. Bei der Herkunft des Objekts, dem so genannten OLE-Server, kann es sich um eine beliebige Anwendung handeln, die OLE (Object Linking and Embedding) unterstützt. Änderungen an einem eingebetteten Objekt werden im Originalobjekt nicht widergespiegelt.) Objekt, wie z.B. einem Diagramm (Diagramm: Eine grafische Darstellung von Daten in einem Formular, einem Bericht oder einer Datenzugriffsseite.), verknüpft. Wenn diese Eigenschaften festgelegt sind, aktualisiert Microsoft Access automatisch die verknüpften Datensätze im Unterformular, wenn Sie zu einem neuen Datensatz in einem Hauptformular (Hauptformular: Ein Formular, das ein oder mehrere Unterformulare enthält.) wechseln. StringString-Wert mit Lese-/Schreibzugriff.
Syntax

Ausdruck.LinkMasterFields

Ausdruck   Eine Variable, die ein SubForm-Objekt darstellt.

Anmerkungen


Sie können die Eigenschaften LinkChildFields und LinkMasterFields für das Unterformular, den Unterbericht oder das eingebettete Objekt folgendermaßen festlegen:

Die LinkChildFields-Eigenschaft. Geben Sie die Namen der Felder des Unterformulars, Unterberichts oder eingebetteten Objekts an, die als Verknüpfungsfelder dienen sollen.


Die LinkMasterFields-Eigenschaft. Geben Sie die Namen der Felder oder Steuerelemente (Steuerelement: Ein Objekt der grafischen Benutzeroberfläche (z. B. ein Textfeld, ein Kontrollkästchen, eine Bildlaufleiste oder eine Befehlsschaltfläche) zur Steuerung des Programms durch den Benutzer. Mithilfe von Steuerelementen können Daten bzw. eine Auswahl angezeigt werden, bestimmte Aktionen ausgeführt sowie die Lesbarkeit der Benutzeroberfläche vereinfacht werden.) des Hauptformulars oder Hauptberichts an, die als Verknüpfungsfelder bzw. -steuerelemente dienen sollen.



Wobei es


me![mein_unterformularname].LinkChildFields = "das Schlüsselfeld im [color=red]UFO[/color]"
"Master": Verknüpfen nach
"Child":   Verknüpfen von

lauten muss. Es können auch mehrere Felder, getrennt durch Semikolons, angegeben werden:
Me![mein_unterformularname].LinkChildFields = "UfoFeld1;UfoFeld2;UfoFeld3"
Me![mein_unterformularname].LinkMasterFields = "HfoFeldx;HfoFeldy;HfoFeldz"

Offline Klaus S. aus B

  • Access-Profi
  • **
  • Beiträge: 238
Re: "Filtern" eines Unterformulars
« Antwort #7 am: Februar 20, 2014, 09:56:27 »
  ::) :-[

...es sind die kleinen Dinge im Leben...

Vielen Dank für die Hilfe.

Ich war schon auf dem richtigen Pfad. Es hat nur nie geklappt, weil ich die "" weggelassen hatte.

Gruß
Klaus