Office: (Office 2007) Filter und Sortierung aus Formular in Unterformular übertragen

Helfe beim Thema Filter und Sortierung aus Formular in Unterformular übertragen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallole, obschon ich seit den 80ern mit HC und PC herummache, habe ich mich nie mit groß mit Datenbanken oder gar Access beschäftigen müssen - weder... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von MarkF, 12. Oktober 2016.

  1. Filter und Sortierung aus Formular in Unterformular übertragen


    Hallole,
    obschon ich seit den 80ern mit HC und PC herummache, habe ich mich nie mit groß mit Datenbanken oder gar Access beschäftigen müssen - weder beruflich noch privat habe ich das benötigt. Das Problem, mit dem ich mich derzeit herumschlage, habe ich lange Jahre mit der alten Home-Version des Datamaker lösen können - ich brauche eine frei konfigurierbare Datenbank für mein spezielles Sammelgebiet - was aber nunmehr nicht mehr geht, weil die Grenze von 200 Datensätzen überschritten ist. Darauf hin habe ich stunden- und tagelang das Netz nach Alternativen durchsucht, habe aber nichts gefunden (etwas Spezielles gibt es ohnehin nicht, aber an frei konfigurierbaren Progs, die das können, was ich mir einbilde zu brauchen (wenn ich schon wechseln muß dann will ich auch z.B. Bilder einbinden können), herrscht ein eklatanter Mangel. Möglicherweise wäre das uralte Datamaker 99 geeignet, aber da es keine Testversion davon gibt müßte ich 80 Euro allein für das Ausprobieren eines über 15 Jahre alten Progs hinlegen - und dazu bin ich nicht bereit. Also habe ich mich der Not und nicht meinen Trieben folgend mit Access beschäftigt.
    Dies zur Einführung und auch gleich als Erklärung dafür, daß ich ziemlich wenig Ahnung davon habe, aber auch keinen Ehrgeiz, Access-Programmierer zu werden (ein kleines stand-alone-Programm wäre mir lieber als die gigantisch MS-Office-Maschine, die ich für sonst nichts brauche, anwerfen zu müssen) sondern nur eine leidlich passende Lösung für mein Problem suche.
    Also: Ich brauche eine Tabellenübersicht über alle ungefähr 18 Datenfelder (Text, Datum, numerisch), die Möglichkeit, diese Ansicht zu filtern und (mehrstufig) zu sortieren und die Anzeige eines einzelnen Datensatzes mit Bild, mit dem ich ebenfalls durch die Datenbank scrollen kann. Also nichts wirklich Weltbewegendes.

    Mit Access 2007 habe ich die vorhandenen Daten (dBASE-Format) importiert und eine entsprechende Tabelle angelegt, ein paar zusätzliche Feder hinzugeführt. Das war einfach, auch wenn das erforderliche Korrigieren der Umlaute genervt hat.
    Dann mit dem Formular"generator" drei Datenblatt-Formulare erzeugt und wie die Ausgangsdatentabelle formatiert. Das erste Formular "Alle" zeigt alle Datensätze, das Formular "Verkauft" zeigt nur die bereits wieder verkauften und das Formular "Vorhanden" zeigt die noch vorhandenen Exemplare. Hierzu habe jeweils mit der unter "Start" verfügbaren Filterfunktion den passenden Filter draufgesetzt. Lieber arbeite ich mit drei Formularen, die ja ohnehin auf dieselbe Datenbasis zurückgreifen, als mir jedes Mal das Filterkriterium neu überlegen zu müssen.
    Sicherlich könnte man das auch mit nur einem Formular und entsprechenden Schaltflächen und "formularinternen" Filtern lösen, aber das übersteigt meine sehr dürftigen Kenntnisse doch deutlich und ein hierfür brauchbares allgemeines Muster/Formular habe ich nicht gefunden.

    Die Einzelanzeige habe ich mit dem allgemeinen Formular "Formular" und entsprechenden Anpassungen realisiert, einschließlich der Anzeige eines dazugehörigen Bildes; nennen wir es "Anzeige". Es wird jeweils aus eine der drei Tabellenformulare "Alle", "Vorhanden" und "Verkauft" aufgerufen durch Doppelklick auf eines der Datenfelder und dem für dieses Ereignis hinterlegten Code

    Private Sub Datenfeld_DblClick(Cancel As Integer)
    DoCmd.OpenForm "Anzeige", , Me.Filter
    Forms!Anzeige.Recordset.FindFirst "ID=" & Me!ID
    End Sub

    Nach viel Irrungen und Gesuche habe ich diesen Weg gefunden, damit nicht nur der jeweilige Datensatz angezeigt wird sondern auch ein Bewegen durch die Datenbank möglich ist (das Me.Filter ist er später in der Hoffnung dazugekommen, dadurch das Filter des Ausgangsformulars auf das Anzeige-Formular zu "übertragen").

    Aber da tut sich schon das erste Problem auf: Diese Bewegung zum nächsten oder vorherigen Datensatz orientiert sich leider an dem primären Schlüsselfeld der ID-Nr. (es gibt leider kein anderes, Datensatz-individuelles Schlüssel-Datenfeld) und nicht an der augenblicklichen Sortierung der Anzeige in dem aufrufenden Formular. D.h. der folgende oder vorherige Datensatz ist nicht derjenige, den ich nach der Sortierung des aufrufenden Tabellen-Formulars erwarte.
    Wie läßt sich das ändern?

    Das gleiche gilt auch für den Filter des aufrufenden Formulars: Es wird nicht in das Anzeigenformular "übernommen", d.h. beim Aufrufen der Einzelanzeige aus dem Tabellenformular "Verkauft" heraus werden beim Bewegen durch die Datenbank alle Datensätze angezeigt und nicht nur die bereits verkauften Exemplare, wie sie in dem aufrufenden Formular "Verkauft" allein angezeigt werden. Natürlich könnte ich jetzt jedes Mal manuell den Filter noch einmal für dieses Anzeige-Formular setzen, was aber offensichtlich ausscheidet. Oder ich könnte für jedes Tabellen-Formular ein eigenes Anzeigeformular mit wie beim Ausgangsformular fest eingestelltem und mitgespeichertem Filter (s.o.) vorsehen, was (wohl funktionieren würde) aber wenig elegant ist und nur als allerletzte Lösung in Betracht kommt (und das Problem der Sortierung auch nicht löst).
    Zweifellos gibt es auch eine "richtige" Lösung für dieses Problem, die ihr als erfahrene Programmierer aus dem Ärmel schüttelt ;-)-

    Ich bitte also um Hilfe.

    :)
     
  2. Moin,
    wenn ich der langen Rede Sinn richtig verstanden habe:
    Den Filter kannst du so übernehmen:
    Code:
    Auf die gleiche Art könntest du ein OrderBy übertragen, wenn es denn im ersten Formular eins gibt. Du sagst ja, ein Sortierfeld sei nicht vorhanden. In dem Fall ist die Sortierung in beiden Formularen rein zufällig bzw. standardmäßig nach ID.
    Evtl. ist ja die ID des ersten Formulars als Fremdschlüssel im zweiten vorhanden.
    Dann könntest du als Datengrundlage für das zweite eine Abfrage nehmen, die nach diesem Fremdschlüssel sortiert ist.

    maike
     
  3. Ich habe das deswegen so ausführlich beschrieben, damit das Problem klar wird.
    Leider funktioniert Dein Lösungsvorschlag nicht. Beim Doppelklick auf das betreffende Feld (im Formular "Verkauft") wird das Anzeige-Formular aufgerufen, zeigt aber "kein Filter" an und auch in den Eigenschaften ist die Filter- und Sortrierrubrik leer. Und natürlich werden beim Blättern durch die Datenbank auch alle Datensätze angezeigt und nicht nur die bereits verkauften. Vorsorglich habe ich alles gespeichert, Access beendet und neu gestartet.

    Deine weiteren Erklärungen habe ich leider nicht verstanden. Die Sortierung in den Tabellen-Formularen ist natürlich nicht zufällig sondern so, wie ich sie je nach Bedarf mit der über die Pfeile zugänglichen Sortiermöglichkeit der Datenbankfelder gewählt habe. Das Feld "ID" habe ich lediglich und erst dann hinzugefügt, nachdem ich verstanden hatte, daß ich zum gezielten Anzeigen eines Datensatzes mit einem Doppelklick auf eines der Felder in den Tabellen-Formularen dieses Schlüsselfeld zur eindeutigen Identifizierung jedes Datensatzes benötige (ich ging stillschweigend davon aus, daß dies von Access unter der Oberfläche von sich aus irgendwie gehandelt wird).
    Natürlich ist das ID-Feld auch im Anzeige-Formular vorhanden. Das Anzeige-Formular wird ja über das Tabellen-Formular aufgerufen, also müssen doch alle dessen Felder auch im Anzeigeformular verfügbar sein (anders würde die Anzeige des jeweils angeklickten Datensatzes auch nicht funktionieren).
     
  4. Filter und Sortierung aus Formular in Unterformular übertragen

    Dann teste doch mal (alles andere auskommentieren):
    Code:
    Das Ergebnis siehst du im Direktfenster (öffnen mit Strg+g).
    Das Feld im Filter muss dann natürlich auch im Anzeigeformular vorhanden sein.

    Und wenn wir schon mal dabei sind *wink.gif* , kannst du versuchen, per
    Code:
    auch den jeweils gesetzen Filter auszulesen.
    Da ich mit den Tabellenfiltern nicht arbeite, weiß ich nicht, ob die so verfügbar sind, das könntest du damit aber testen.

    maike
     
  5. Nachtrag:
    Nach deiner Schilderung fürchte ich, dass die IDs in beiden Tabellen nur rein zufällig übereinstimmen. Diese Übereinstimmung wird normalerweise über ein Fremdschlüsselfeld in der abhängigen Tabelle hergestellt.
    Die im Anzeigeformular selbst verfügbaren Felder hängen von der Datenquelle des Anzeigeformulars ab.
    maike
     
  6. Ich denke es wäre hilfreich eine Musterdatenbank (evtl. nur mit einigen Datensätzen) hier einzustellen. Dann kan man dir leichter helfen.
     
    rainer176, 14. Oktober 2016
    #6
  7. Die Direktanzeige ist leer.
    Sowohl mit
    Debug.Print Me.Filter
    als auch
    Debug.Print Me.OrderBy
    Habe mal testweise auch
    Debug.Print Me!Datenfeld
    eingefügt. Dessen Inhalt wird angezeigt.
    Und der Filter ist aktiv.
    Anscheinend wird die "on the fly"-Filtereinstellung über Access nicht in DB-interne Parameter übernommen (mal laienhaft formuliert).

    Wie kommst Du darau, daß ich mit zwei Tabellen arbeiten würde? Es ist nur eine Tabelle.
    Noch einmal:
    Eine Tabelle. Auf diese setzt das normale Tabellenansichts-Formular auf, das Access standardmäßig als Datenblatt zur Verfügung stellt (Erstellen-Formulare-Weitere Formulare-Datenblatt). Das ganze drei Mal, einmal ohne Filter, einmal mit Fikter ohne verkaufte Exemplare, einmal mit Filter nur verkaufte Exemplare unter Start-Filter eingestellt.
    Im Eigenschaftsblatt des Verkauft-Formulars findet sich unter Formular-Daten-Datensatzquelle:
    SELECT datenbank.* FROM datenbank WHERE (([datenbank].[Preis VK]>=1));
    Diese Tabellenformulare wiederum rufen bei jedem Doppeklick auf eines der Datenfelder das Einzeldatensatzanzeigeformular (Erstellen-Formular bzw. Formularentwurf, entsprechend nach meinen Vorstellungen gestaltet). Bei dem steht im Eigenschaftsblatt unter Formular-Daten-Datensatzquelle nur
    datenbank
    was ja auch nicht anders geht, weil es ja von jedem der drei Tabellenformulare aufgerufen werden werden soll. Eine feste Filter- oder Sortierfunktion kann ich bei den Eigenschaften nicht eintragen, das wäre ja kontraproduktiv.
    Also, es ist nur eine Tabelle, drei hierarchich parallele Formulare teils mit Filtern zur Tabellenansicht, die mit Doppelklick auf eines der Datenfelder wiederum nur ein (immer dasselbe) Einzeldatensatzformular aufrufen. Datenbasis für alle ist datenbank.

    Das ist doch nun wirklich nichts bersonderes, eine absolut simple Datenbankanwendung, eine Tabele, nix Relationales, keine komplizierten Strukturen.
     
  8. Filter und Sortierung aus Formular in Unterformular übertragen

    Moin,
    setz ein Dropdown aufs Formular, mit dem Du die 3 Möglichkeiten anbietest. Je nach Auswahl setzt Du die Datenquelle entsprechend (Ereignis Dropdown.Change), und schon kommen die Daten immer in der Folge, die bei der Datenquelle angegeben ist. Das ist allemal weniger Aufwand als in 3 Formularen Sortfolge und Filter des "aufrufenden" Formulars nachzuziehen.
     
    drambeldier, 14. Oktober 2016
    #8
  9. Könnte ich machen. Aber auch abgespeckt auf 33 Datensätze sind es noch über 6 MB. Keine Ahnung, woher diese Größe kommt, mit 200 Datensätzen sind es nur ein paar KB mehr.
    Das will, denke ich, niemand wirklich.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  10. Ich habe doch eingangs erklärt, daß ich von Access und VB so gut wie keine Ahnung habe.
    Weder weiß ich, was ein Dropdown ist, noch, wie ich DB-intern Filter setzen kann.
    Gib mir einen konkreten Code und sag mir, wo ich den einbaue, dann kann ich das nachbauen. Aber Ratschläge, auf die ich selbst gekommen wäre, wenn ich mich auskennen würde, sind nicht wirklich hilfreich.
    Und für jede Tabellenansicht ein eigenes Anzeigeformular ist zwar nur einmal Aufwand, nämlich beim Anlegen, und auch nur ein paar Minuten, aber das hilft zum Sortierproblem auch nicht, denn die Sortierung ist ja nicht fix sondern mal so und mal so.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  11. Hallo,
    Datensätze werden erst nach Komprimierung wirklich entfernt. Daher DB komprimieren/reparieren (Access Dienstprogramm) und anschließend zippen. Das sollte dann reichen.


    PS:
    Wenn ich Hilfe suchen würde, wäre ich für jeden Hinweis dankbar, auch wenn er mMn nicht passt. Derartige Reaktionen mit solcher Wortwahl finde ich unpassend.
    Das gehört sich nicht, gegenüber Leuten die in Ihrer Freizeit und für umme versuchen Dir zu helfen.
     
    gpswanderer, 14. Oktober 2016
    #11
  12. Hier kommt ein Muster, das gewinnt keinen Schönheitspreis, zeigt aber, dass alles mit einem Formular geht.

    Schau Dir die Ereignisse an und die Eigenschaften des Dropdowns (und erzähl mir nicht, Du weißt nicht, was das ist).

    ps: Holzen bringt Dich auch nicht voran.
     
    drambeldier, 14. Oktober 2016
    #12
  13. Filter und Sortierung aus Formular in Unterformular übertragen

    Danke. Diese Sch...Version 2007, ne halbe Stunde gebraucht um diese versteckte Funktion zu finden.
    Sind immer noch 500kb.

    Du wirst es vielleicht nicht glauben, aber in anderen Bereichen, in denen ich mich auskenne, bin ich der Ratgeber in Foren. Also, denke ich, darf ich mir einen offenen Kommentar erlauben, zumal Deine Reaktion typisch ist, wenn sich ein Ratsuchender erdreistet, für Nicht-Hilfen nicht dankbar zu sein:
    Wenn der Fragesteller klar sagt, daß er keine große Ahnung hat, und auch keine weiteren Ehrgeiz hat sondern nur eine schnelle Problemlösung sucht, dann hast Du als Kundiger zwei Möglichkleiten:
    Du kannst Dich aufs hohe Roß setzten und sagen, daß Du nur Leuten hilfst, die sich einarbeiten wollen. Das ist dann aber keine Hilfe. Dann kannst Du das alles sein lassen.
    Oder Du gibst ihm die konkrete "tu dies und jenes"-Hilfestellung, die er braucht und sein Prob löst und nimmst hin, daß er weiterhin in diese Hinsicht DAU bleiben will, eben weil er nur eine Problemlösung sucht und kein weiteres Hobby.
    Aber ihm Brocken hinzuwerfen, die mit denen er nur etwas anfangen kann, wenn er sich selbst weiter einarbeitet, und auf die er dann definitiv von sich aus kommt - und hier nicht nicht mal erst dann, denn die "Lösung", mit nur einem Tabellenformular zu arbeiten, war mir von vornehrein bekannt, nur eben klar kommuniziert außerhalb meiner Kompetenz und schied daher - ist keine Hilfe.
    Eine Hilfe wäre gewesen, wenn gesagt werden würde, daß sich das Problem nur lösen lasse, wenn nur mit einem Tabellenformular gearbeitet werden würde (wenn es denn so wäre) wäre und dann eine konkrete Anleitung mit Code rübergeschoben wird, wie dies zu erreichen ist, was ja wohl für den Kundigen kein Problem darstellte. Da könnte ich zwar immer noch "meckern", daß ich so tief nicht einsteifen wollte, aber wenn es denn die eiznige Lösung ist, würde mir damit die Möglichkeit an die Hand gegeben werden, es umzusetzen.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  14. Danke, aber ich weiß wirklich nicht, was ein Dropdown in diesem Zusammenhang darstellt. Und Du kannst versichert sein, daß ich Dich mit Fachbegriffen aus meiner Profession und meinen Hobbies zuschütten könnte und Du würdest nur Bahnhof verstehen.
    Zum "Holzen" habe ich mich schon geäußert.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  15. Habe den maßgeblichen Code eingebaut. Die Filterabfrage kommt offenbar in den Formularkopf. Der ist bei der Datenblattanzeige aber nicht vorhanden. Nach Aktivierung des Formularmodus in Eigenschaften läßt sich das Formular "Alle" auf Datenblattmodus umstellen und dort erscheint auch die Filterabfrage im Kopf. Sie funktioniert auch, denn nach Einstellung Alle, Verkauft oder Sammlung werden sowohl beim Durchblättern als auch umgeschaltet auf Datenblattanzeige entweder alle, nur die verkauften oder die noch vorhandenen Exemplare angezeigt.

    Frage: Wie läßt sich in der Datenblattanezige die Filterabfrage unterbringen bzw. zum Erscheinen bringen?

    Aber nach Doppelklick auf eines der Felder und Aufruf des Sub-Formulars "Anzeige" ist die Filterfunktion noch immer nicht aktiv. Und die Kontrollausgabe von
    Debug.Print Me.Filter
    und
    Debug.Print Me.OrderBy
    im Direktausgabefenster beim Doppelklicken auf eines der Felder zeigt nichts.
    Die Kontrollausgaben von
    Debug.Print Me!Filter
    zeigt aber je nach Einstellung Alle, Verkauft oder Sammlung. Was nicht wirklich überrascht, denn das ist ja die entsprechende Eingabe in die eigene Variable Filter.

    Anscheinen wirken sich die beiden Anweisungen
    Form.RecordSource = Form.RecordSource & "where (([Datenbank].[Preis VK]>=1))"
    und
    Form.RecordSource = Form.RecordSource & "where (([Preis VK] Is Null))"
    (so lauten bei mir Filtereinstellungen, denn ich verwende den VK-Preis, so vorhanden, zur Unterscheidung) nicht beim Aufruf des Unterformulars Anzeige aus.

    Ich habe mal versuchsweise den Befehl
    Form.RecordSource = "Select * from Datenbank "
    der ja beim Aufruf des Formulars Alle ausgeführt wird, auch in Anzeige getan und an das Öffnen des Formulars gekoppelt, aber das bringt auch nichts. Auch analog Deines Beispiels im Eigenschaftsblatt die Datensatzquelle auf
    SELECT * FROM Datenbank
    zu setzen brachte nichts.

    Noch eine Frage: Läßt sich die Umschaltung zwischen Formularansicht und den Datenblattansicht auch ereignisgesteuert, also durch einen Code, vornehmen?
     
Thema:

Filter und Sortierung aus Formular in Unterformular übertragen

Die Seite wird geladen...
  1. Filter und Sortierung aus Formular in Unterformular übertragen - Similar Threads - Filter Sortierung Formular

  2. Filter Tabelle über mehrere Zeilen

    in Microsoft Excel Hilfe
    Filter Tabelle über mehrere Zeilen: Hallo! Ich habe folgendes Problem: Ich habe eine Tabelle angelegt mit Stammdaten zu allen Büchern, die ich besitze. Allerdings gibt es auch Bücher, die von mehreren Autor*innen geschrieben wurden...
  3. Text Liste sortieren

    in Microsoft Excel Hilfe
    Text Liste sortieren: Hallo, ich bräuchte dringend eure Hilfe. Ich möchte gerne meine Video-Bibliothek so um ändern das diese für Kodi geeignet ist. Ich habe dafür schon eine passende Excel Tabelle erstellt. Jedoch...
  4. Benutzerdefinierte Sortierung + Filter zurücksetzen

    in Microsoft Excel Hilfe
    Benutzerdefinierte Sortierung + Filter zurücksetzen: Hallo an Alle Vielleicht könnte ihr mir helfen. Ich möchte auf einer Tabelle zuerst den eventuell eingestellt Autofilter wider zurücksetzen und dann benutzerdefiniert sortieren aber es geht nicht...
  5. Bericht fürs Durcken einen Filter und Sortierung mitgeben

    in Microsoft Access Hilfe
    Bericht fürs Durcken einen Filter und Sortierung mitgeben: Hi, ich habe folgendes Problem: Ich öffne einen Bericht zum Drucken und will dem eine Filterung und eine Sortierung mitgeben. Beides lese ich aus einem Bericht aus. Diese funktioniert auch...
  6. Filter Sortierung - Abwertz Sortierung

    in Microsoft Excel Hilfe
    Filter Sortierung - Abwertz Sortierung: Hallo, wie kann ich bei einer Sortierung es so einstellen, das die Null unten angestellt wird? Im Moment ist es so das die null zwischen den + Zahlen und den - Zahlen angezeigt wird. 14 3 2...
  7. Formel für Sortierung oder Filter

    in Microsoft Excel Hilfe
    Formel für Sortierung oder Filter: Hallo wer kann mir helfen Im Anhang ist eine Excelltabelle Preisliste2008. Möchte das in der gelb markierte Spalte die Zahlen absteigend sind. Wie kann ich das machen :?: Filter oder...
  8. Filter / Sortierung kliffliges Problem dass es zu lösen gilt

    in Microsoft Excel Hilfe
    Filter / Sortierung kliffliges Problem dass es zu lösen gilt: Hallo Zusammen und euch einen wunderschönen guten Morgen :D Ich häng euch mal ein Bild an mit dem ich mein Problemchen euch zu erleutern versuche : [img] So auf dem Bild seht Ihr...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden