Neuigkeiten:

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

Mobiles Hauptmenü

Filtern von Daten in einem Formular

Begonnen von victore2611, August 23, 2012, 18:12:30

⏪ vorheriges - nächstes ⏩

victore2611

Hallo Ihr!

Ich habe noch eine weitere Frage:
Ich möchte ein Formular generieren mit einem Kombinationsfeld, das aber auf dessen Auswahl entsprechend meine Daten aus der Abfrage filtert, so dass nur noch bestimmte weitere Daten in Frage kommen.
Bsp abfrage tabelle          meier 2 hund hans
                                         meier 3 katze jürgen
                                         meier 4 vogel jürgen
wenn ich nach der 3.spalte im formular filtern könnte (und ich möchte keine datenblattansicht), so dass bei "vogel" auswahl nur noch "meier 4 vogel jürgen" in Frage kommt. (und bei dem nächsten Kombintationsfeld der 4.spalte nur Jürgen auszuwählen ist).
Ich hoffe, ihr habt das problem verstanden und könnt mir Tips geben?

Danke!!!!


victore2611

ja, das mag sein, nur leider verstehe ich davon kein wort.
ich weiss weder wo ich die kommandos eingeben soll, noch wie genau ich das mache.
Die Tabelle, die ich filtern will, stammt von einer Abfrage, aber von verschiedenen tabellen, natürlich.
Vielleicht kannst du mir das in verständlichen einzelnen Schritten mal erklären.

vielen dank!

DF6GL

Hallo,
wie stellst Du Dir das vor? Was ist für Dich "verständlich"?   Wenn Du die Beschreibung von Donkarl nicht verstehst, dann kann ich Dir die auch nicht (hier im Forum) weiter erklären.


Ich rate Dir eher zu einem vorangehenden Durcharbeiten eines Tutorials oder Buches, wenn Du überhaupt ensthaft zum Ziel kommen willst und damit man überhaupt in der gleichen Sprache reden kann.

So "schnell mal in Access ein DB erstellen" ohne elementare Grundkenntnisse ("ich weiss weder wo ich die kommandos eingeben soll, noch wie genau ich das mache.")  hat bis jetzt noch keine(r) geschafft.





oma

Hallo,

Franz hat Recht, wenn du von den angemerkten Beispielen kein Wort verstehst, wird es ziemlich schwierig (aber mit Anstrengung natürlich machbar)
Ich habe mal ein kleines Beispiel gemacht, das vielleicht etwas einfacher ist, als das Beispiel aus dbwiki.

Versuche es Schritt für Schritt durchzuarbeiten u. gegebenfalls nachzufragen.

Gruß Oma

[Anhang gelöscht durch Administrator]
nichts ist fertig!

victore2611

Liebe Oma,

danke, dass Du hilfst.
leider erscheint bei mir und der Auswahl Dropdown liste schon mehrfach der gleiche Begriff, weil es bei der abfrage öfter dann den gleichen begriff in der einen spalte gibt. Bei deinem Beispiel gibt es ja auch mehrere Kunden aus München. Wie kann ich die Auswahl so einstellen, dass sie nur die nichtübereinstimmenden begriffe zeigt?
Ich bin völlig am Verzweifeln. Dachte eigentlich, ich hätte das im Studium einigermaßen gelernt, aber sowas Komplexes übersteigt dann doch meine Fähigkeiten.
Kann ich das denn dann weiter problemlos hinkriegen, dass ich filtern kann? Dann ist wenigstens mein ausgedachtes Auswahl und Tabellensystem in Ordnung....

Vielen Dank für Eure Hilfe!

victore2611

HA, das mit dem distinct habe ich sogar selber rausgefunden...
jetzt mache ich mich an die filter versuche...
danke für die beispieldb, ich komm bestimmt gleich mit mehr fragen  :'(

oma

Hallo,

ZitatIch bin völlig am Verzweifeln. Dachte eigentlich, ich hätte das im Studium einigermaßen gelernt, aber sowas Komplexes übersteigt dann doch meine Fähigkeiten.

um mal gehässig zu sein, so sehr komplex ist das Filtern von Datensätzen eigentlich nicht, eher eine übliche Standardaufgabe ;D

mal Spaß beiseite, mit ein bischen Wissen aus dem Studium kommt man bei der Entwicklung einer DB eben nicht zurecht (ich denke, dass war ja kein Informatikstudium)
Wissen über relationale Datenbanken, SQL und VBA und deren Zusammenwirken muss man erst mal zusammenbekommen.

Im Forum hat sich aus sehr praktisch erwiesen, wenn Anfänger (sorry, wenn ich dich so bezeichne) Ihre DB mit ein paar Musterdaten und den Aufgabenprofil ins Forum zu stellen.
Dann kann bei konkreten Fragen auch eine konkrete Hilfestellung in Form von Code o.a gegeben werden.

Gruß Oma
nichts ist fertig!

pahiti78

Hallo Oma,
deine Datenbank ist ja echt klasse.
Genau so etwas benötige ich auch noch, in meiner.... Bis dato habe ich mich um die Formularfilter gedrück. Aber das ist echt klasse. Also werde ich mich gleichmal selbst ranwagen. Ich habe dazu bestimmt ganze viele Fragen.
Meine erste Frage lautet:
1.Warum ist im Formular Kunden das Unterformular Kunden. Würde es nicht ausreichen ein formular zu führen? ich bin nicht faul oder so....aber ich möchte den Vorteil erkennen.
2. Beim Klicken auf Auswahl läuft das Ereignis/Befehl "DoCmd.OpenForm FormName:="KundenAuswahl".....Wieso wird das Formular nicht über den Standardbefehl doCmd.openForm "Form_KundenAuswahl...Wenn diesen Befehl eingebe kommt nämlich auch ein Fehler, welchen ich mir auch nicht erklären kann.

Du siehst ich bewege mich wirklich am Anfang...doch ich habe Riesenspass an der Entwicklung von solch "kleinen" Helfern....
Gruß
Matze

Beaker s.a.

Hallo Pahiti,
Zitat"DoCmd.OpenForm FormName:="KundenAuswahl".....
Das ist ein so genannter "benannter Parameter". Die sind hilfreich,
wenn es viele Parameter gibt, da brauch man
1. die ganzen "leeren" Kommas nicht, und
2. sich auch nicht um die Reihenfolge zu kümmern.
Ich verwende diese Schreibweise inzwischen durchgehend.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

oma

Hallo Pahiti,

Zitat1.Warum ist im Formular Kunden das Unterformular Kunden


Diese Art der Gestaltung mache ich immer bei meinen Anwendungen.
Das Formular Kunden ist ein ungebundenes Formular, d.h. ein Formular ohne Datenherkunft, es dient lediglich zur Aufnahme des Unterformulars Kunden_UF. In diesem Formular befinden sich die Daten zur Ansicht, Erfassung und Änderung. Der Vorteil, ich kann die Daten zunächst in einer "Tabellenform" mit den wichtigsten Feldern einsehen.  Ich kann dann horizontal scrollen , um alle Felder zu sehen und vertikal scrollen, um alle Datensätze zu sehen.  Ich  kann aber auch, wenn ich z.B alle Felder auf einem Blick benötige, die Ansicht ändern u. zu einer Einzelformulardarstellung wechseln. So kann ich beliebig zwischen Formular- oder Datenblattansicht wechseln.
Zusätzlich kann ich im ungebundenen Hauptformular eine Reihe von Buttons anbringen, um verschiedene Befehle zu realisieren.
So sind alle Formulare in meinen Anwendungen aufgebaut u. als Button kann man immer einheitlich Neu, Löschen, Auswahl.... usw erstellen.

2. Wie Ekkehard schon bemerkt hat, verfügen viele VBA-Funktionen und  Methoden der Office-Objekte sogenannte "benannte Argumente".

Für ein Öffnen des Formulars für Mitarbeiter aus Berlin kann man schreiben:
DoCmd.OpenForm "frmMitarbeiter", , , "Wohnort='Berlin'"  
Hier siehst du, dass z.B. für OpenForm der Formularname als 1. Argument und eine Bedingung als Letztes Argument verwendet werden muss, gleichzeitig müssen für die weiteren zulässigen Bedingungen die Kommas mit angeführt werden.
Die Schreibweise mit benannte Argumente benutzt für die einelnen Argumente den Argumentnamen, so wird aus obigen Befehl:
DoCmd.OpenForm WhereCondition:="WohnOrt='Berlin'", FormName:="frmMitarbeiter"
Man kann also auf die nichtbenutzten Argumente verzichten und die Reihenfolge (wie im Beispiel) beliebig vertauschen.

Gruß Oma



nichts ist fertig!

pahiti78

Hallo Oma,

danke für die ausführliche Erklärung.
Ich habe jetzt im Sql Filter erkannt, dass du die Objekte mit Me! ansprichts. Worin liegt eigentlich der Unterschied ob ich ein Objekt mit Me. oder me! anspreche. Bisher habe lediglich Eigenschaften mit Me. festgelegt. Wahrscheinlich gibt Me! einen Wert zurück. Lieg ich da richtig?
In der einen oder anderen Codierung, welche ich diesem Forum entnommen habe, stand ausserdem ein Nz vor den Objekten. Was hat es denn damit auf sich?
Gruß
Matze

Beaker s.a.

Hallo Pahiti,
Wegen . und ! schaust Du hier
http://www.donkarl.com?FAQ6.3
Obwohl das teilweise immer noch,
oder wieder heiss diskutiert wird.
Wegen Nz schaust Du in die OH.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

bahasu

Hallo,

Zitat von: oma am August 29, 2012, 22:38:53
Ich kann dann horizontal scrollen , um alle Felder zu sehen und vertikal scrollen, um alle Datensätze zu sehen.  Ich  kann aber auch, wenn ich z.B alle Felder auf einem Blick benötige, die Ansicht ändern u. zu einer Einzelformulardarstellung wechseln.

und noch eine Idee:
Die obigen Eigenschaften lassen sich durch den Einsatz von synchronisierten (http://www.donkarl.com?FAQ4.3) Formularen kombinieren:
z.B. links die Tabellen-Darstellung mit wenigen Spalten (die zum raschen Erkennen dienen) und rechts die Formular-Darstellung mit allen Feldern (das bietet sich im Zeitalter der "ultrabreiten" Monitore geradezu an :D).

Durch Klicken auf einen Datensatz in der Tabellen-Darstellung sind die Daten im Formular anzeigbar.

Harald
Servus

pahiti78

Hallo,
ich habe das Formular und mein Unterformular soweit erstellt.
Bei Oma in der Db läuft mit Klicken auf den Button Details folgende Prozedur ab.

Private Sub btnDetails_Click()
  Me!frm_Kunden_UF.SetFocus
    If Me!frm_Kunden_UF.Form.CurrentView = 2 Then
       DoCmd.RunCommand acCmdSubformFormView
       Me!btnDetail.Caption = "Tabelle"
    Else
      DoCmd.RunCommand acCmdSubformDatasheetView
      Me!btnDetail.Caption = "Detail"
    End If
End Sub

Wie ihr seht hab ich lediglich die Formularnamen auf meine DB angepasst. Leider mekkert Acces beim Kommando
"DoCmd.RunCommand acCmdSubformFormView" und meldet das diese Ansicht nicht verfügbar wäre. Muss ich im Unterformular noch irgendetwas einstellen?
Und was bedeutet die Eigenschaft Me!frm_Kunden_UF.Form.CurrentView = 2?
Ich danke vorab schonmal.
Gruß
Matze