Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: ---> Tab2HTML: Excel Tabellen ins Forum! <-
Kombifelder sollen Endlosformular (Liste) filtern
zurück: Formular springt nach Berichtvorschau auf ersten Datensatz weiter: Was ist ein Endlosformular Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Offen Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
obroa
Anfänger


Verfasst am:
21. Jan 2010, 10:42
Rufname:

Kombifelder sollen Endlosformular (Liste) filtern - Kombifelder sollen Endlosformular (Liste) filtern

Nach oben
       Version: Office 2003

Hallo und guten Morgen an alle,

ich bin Anfänger, was Access betrifft und neu hier im Forum. Bezüglich meines Problems google ich mich seit zwei Tagen durch dieses und andere Foren - leider bisher ohne Erfolg. Allerdings habe ich viele andere Anregungen erhalten... Very Happy

Folgende Basis: ich habe eine Datenbank mit einer Haupttabelle [Adressen] und zwei Nebentabellen [BER_NUM] und [BL_LK]. Die Hauptabelle wird über ein Formular [Eingabe_Adressen] befüllt, wobei über Kombifelder aus den Untertabellen die Felder für "Berater" und "Bundesland"/"Landkreis" selektiv befüllt werden. Das klappt insoweit wie gewünscht.

Für die Auswertung gibt es ein Formular [Liste_nach_Auswahl], wo diverse Felder aller Datensätze als Endlosliste dargestellt werden. Diese Liste soll nun über die Auswahl in den Kombifeldern [cboBL] und [cboBER] nach "Bundesländer" und/oder "Berater" gefiltert werden.

Leider haben weder die Variante
Code:
Private Sub cboBL_AfterUpdate()
    Me.Filter = "Bundesland=" & Me!Kombi.Column(2) ' 2. Spalte!
    Me.FilterOn = True
End Sub
noch die Anwendung von
Code:
Private Sub cboBER_AfterUpdate()
    ' Den mit dem Steuerelement übereinstimmenden Datensatz suchen.
    Dim rs As Object

    Set rs = Me.Recordset.Clone
    rs.FindFirst "[ID] = " & STR(Nz(Me![cboBER], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
' bzw einfach (edit by Willi Wipp)
'    Me.Recordset.FindFirst "[ID] = " & Str(Nz(Me![cboBER], 0))   
End Sub
zum Erfolg geführt.

Außerdem ist mir nicht so ganz klar, woher ich die Daten für die Kombifelder beziehen soll: aus der Haupttabelle [Adressen] oder aus den jeweiligen Untertabellen [BL_LK] und [BER_NUM] oder direkt aus dem Formular [Liste_nach_Auswahl]? Letzteres wahrscheinlich nicht, da sonst nach Filterung der Datensätze wahrscheinlich nicht mehr alle möglichen Begriffe im Kombifeld angezeigt werden.

Also wahrscheinlich am ehesten aus den Untertabellen. Dabei funktioniert jedoch die Gruppierung in der Auswahlabfrage für [cboBL] bei der Datensatzherkunft nicht und führt zum Fehler Mit ´*´ ausgewählte Felder können nicht gruppiert werden, dabei funktioniert es im Formular [Eingabe_Adressen] doch genau auf diese Weise.

Außerdem sollte es möglich sein, aus der (gefilterten) Liste heraus mittels Doppelklick auf einen der angezeigten Datensätze in den jeweiligen Datensatz im Formular [Eingabe_Adressen] zu springen, um ggf. Änderungen vornehmen zu können. Aber das wäre eigentlich erst der nächste Schritt...

Es wäre toll, wenn jemand eine Lösung für mein Problem hätte! Um es einfacher zu machen, lade ich die Datei anonymisiert hier mit hoch.

Vielen Dank schon mal im voraus und beste Grüße
obroa



Adr_Test.zip
 Beschreibung:

Download
 Dateiname:  Adr_Test.zip
 Dateigröße:  89.81 KB
 Heruntergeladen:  8 mal

Marmeladenglas
komme zurecht


Verfasst am:
21. Jan 2010, 11:19
Rufname:


AW: Kombifelder sollen Endlosformular (Liste) filtern - AW: Kombifelder sollen Endlosformular (Liste) filtern

Nach oben
       Version: Office 2003

Hi,
ganz kurz und knapp, da muß man erstmal das Tabellenkonzept richten, bevor man da überhaupt weitere Schritte geht.
Du mußt nicht die Tabelleninhalte aus deiner Berater bzw. PLZ Tabelle in der Haupttabelle wiederholen. HIer werden lediglich in Fremdschlüsseln die Primärschlüssel aus den Hilfstabellen erfasst. Über die Beziehung, kommst du über Abfragen jederzeit an die Daten ran.
Haupttabelle muß weiter normalisiert werden.
Die vielen YES/NO Felder sind sehr beliebt beim Anfänger, aber in einer DB eher unpraktisch.
Es ist bzgl. der Abfragen hier auch unnötig, für jeden Möglichkeit eine extra Abfrage zu bauen. Diese Abfrage hält man allgemeingültig und übergibt der Abfrage die gewünschten Kriterium (z.b. Bundesland Sachsen oder andere) oder man wendet auf Formularebene einen Filter an.
Üblicher Hinweis an dieser STelle -> Suchformular in 10 Minuten.
Bzgl. der Datensatzherkunft des Kombis (Bundesland) (da hab ich kurz draufgeschaut). du kannst nicht über "*" gruppieren, das gibt dir auch eine Fehlermeldung aus.
Wenn du das Formular "Bearbeiten zulassen" auf Nein stehen hast, wie im Beispiel, dann kannst du in den Kombis nichts auswählen.
Außerdem heißt dein KOmbinationsfeld nicht "Kombi" sondern cboBL
Das zweite Kombi, da stimmt auch eigentlich nix.
Erstens willst du hier filtern und nicht zu einem Datensatz springen:
also .FindFirst führt nicht zum Ziel.
Zudem vergleichst du Äpfel mit Birnen..
Code:
    rs.FindFirst "[ID] = " & Str(Nz(Me![cboBER], 0))
Du sagst mit dieser Zeile: Springe zum dem Datensatz wo Übereinstimmung besteht zwischen der Id (numerisch) und dem ausgewählten Beraternamen im KOmbinationsfeld Confused
Das führt erstens zur Typunverträglichkeit zwischen Text und Zahl und desweiteren nie zu einem Ergebnis, da ein "Apfel" niemals eine "Birne" sein kann Laughing
So wäre es korrekt:
Code:
    rs.FindFirst "Beratername = '" & Nz(Me.cboBL, "") & "'"
Wobei du hier über Primärschlüssel suchen solltest/mußt. Was ist wenn du 2 Berater mit dem gleichen Nachnamen hast ?
Somit schließt sich wieder der Kreis mit dem Eingangshinweis, dass hier dringend das Tabellenkonzept zu überarbeiten ist.
Hiermal exemplarisch der Code für dein Kombi.
1.)ändere die Datensatzherkunft deines Kombis auf diese (also copy and paste)
Code:
SELECT   Bundesland
FROM     BL_LK
GROUP BY Bundesland
ORDER BY Bundesland DESC;
2.) Code hinter dem AfterUpdate-Ereignis
Code:
Private Sub cboBL_AfterUpdate()
   Me.Filter = "Bundesland='" & Me.cboBL & "'" ' 1. Spalte!
   Me.FilterOn = True
End Sub
3.)Formular ´Bearbeiten zulassen ' auf "JA" stellen.
Zumindest funktioniert so die Filterung, unbenommen der Hinweise, die DB neu aufzubauen Wink
obroa
Anfänger


Verfasst am:
21. Jan 2010, 14:55
Rufname:

AW: Kombifelder sollen Endlosformular (Liste) filtern - AW: Kombifelder sollen Endlosformular (Liste) filtern

Nach oben
       Version: Office 2003

Hallo Marmeladenglas,

herzlichen Dank für Deine schnelle Hilfe! Die Filter funktionieren für beide Kombifelder jetzt korrekt. Razz

Kann ich die beiden Filter jetzt auch noch miteinander kombinieren, sprich dass wenn ich nach Bundesland gefiltert habe und auch noch den Berater auswähle wirklich nur dieser Berater bei diesem Bundeland angezeigt wird?

Bei Verwendung der Codes
Code:
Private Sub cboBER_AfterUpdate()
   Me.Filter = "Beratername='" & Me.cboBER & "'" ' 1. Spalte!
   Me.FilterOn = True
End Sub

Private Sub cboBL_AfterUpdate()
   Me.Filter = "Bundesland='" & Me.cboBL & "'" ' 1. Spalte!
   Me.FilterOn = True
End Sub
löscht der eine Filter nämlich jeweils den anderen!

Natürlich hast Du Recht, die Struktur der DB ist nicht so toll und führt zu doppelter Datenhaltung. Ich habe anfänglich auch versucht, mit Beziehungen zwischen Haupt- und Nebentabellen zu arbeiten und die Zuordnung dann über Abfragen zu lösen, hatte jedoch leider nicht wirklich Erfolg damit... Crying or Very sad

Da die DB aber am Ende nicht mehr als ca. 300 Datensätze enthalten soll, habe ich die Redundanz in Kauf genommen. Wenn ich mit dem Studium von Access weiter fortgeschritten bin, kann ich es ja noch mal neu angehen - aber bis dahin wird es so gehen müssen...

Nochmals besten Dank und freundliche Grüße
obroa
Marmeladenglas
komme zurecht


Verfasst am:
22. Jan 2010, 10:17
Rufname:

AW: Kombifelder sollen Endlosformular (Liste) filtern - AW: Kombifelder sollen Endlosformular (Liste) filtern

Nach oben
       Version: Office 2003

Hi,
wie gesagt widme Dich dem Beitrag:
Suchformular in 10 Minuten
Hier wird eine Routine zur Verfügung gestellt über mehrere Kriterien einen Filter zu setzen.
ABER lese dich in Normalisierung ein, Beziehung (1:n, n:m, 1:1 (eher selten)), Primär- u. Fremdschlüssel und bringe das Tabellenkonzept in Ordnung. Das halte ich für viel wichtiger.
Wink
obroa
Anfänger


Verfasst am:
26. Jan 2010, 14:02
Rufname:


AW: Kombifelder sollen Endlosformular (Liste) filtern - AW: Kombifelder sollen Endlosformular (Liste) filtern

Nach oben
       Version: Office 2003

... vielen Dank noch mal an Marmeladenglas für die Hilfe!

Ich habe jetzt eine Variante gefunden, mit der sich beide Kombifelder (oder auch mehr als zwei) gleichzeitig filtern lassen:

Code:
Private Sub cboBL_AfterUpdate()
Dim sKrit As String

sKrit = ""

If Nz(Me![cboBL], "") <> "" Then
   sKrit = sKrit & " AND  Bundesland = '" & Me![cboBL] & "'"
End If

If Nz(Me![cboBER], "") <> "" Then
   sKrit = sKrit & " AND  Beratername = '" & Me![cboBER] & "'"
End If


If sKrit <> "" Then
 sKrit = Mid(sKrit, 5)
End If

Me.Filter = sKrit
Me.FilterOn = True
End Sub

Das gleiche dann noch mal für cboBER_AfterUpdate() eingegeben führt für beide Kombifelder zum gewünschten Ergebnis.

Beste Grüße
obroa
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen




Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Hilfe: Fließtext (Feld) nach mehreren Begriffen (Liste) durchsuchen 7 spaboleo 288 08. Jul 2010, 05:20
dropdown_2404 Fließtext (Feld) nach mehreren Begriffen (Liste) durchsuchen
Keine neuen Beiträge Access Hilfe: Zwischen 2 Formularen Datumspanne und Suchbegriff filtern 0 rosie2000 112 02. Jun 2009, 20:56
rosie2000 Zwischen 2 Formularen Datumspanne und Suchbegriff filtern
Keine neuen Beiträge Access Formulare: Sortieren und anschließendes Filtern verursacht Fehler 4 Insanctus 324 25. Feb 2009, 11:15
Insanctus Sortieren und anschließendes Filtern verursacht Fehler
Keine neuen Beiträge Access Hilfe: Datenzugriffsseite als Endlosformular 3 alexko65 726 31. Jul 2008, 09:39
alexko65 Datenzugriffsseite als Endlosformular
Keine neuen Beiträge Access Formulare: Filtern bricht ab - Datentypproblem? 4 friedrichshain 204 14. Apr 2008, 00:30
Willi Wipp Filtern bricht ab - Datentypproblem?
Keine neuen Beiträge Access Formulare: Durch Wert in Kombifeld neue Kombifelder einblenden 22 jonnyb2006 935 24. Okt 2007, 23:28
jonnyb2006 Durch Wert in Kombifeld neue Kombifelder einblenden
Keine neuen Beiträge Access Formulare: Endlosformular, letzte Zeile! 2 kaydin 318 09. Aug 2007, 12:07
Gast Endlosformular, letzte Zeile!
Keine neuen Beiträge Access Berichte: Daten aus Endlosformular in Bericht übernehmen 32 Spirit -X- 1939 12. März 2007, 15:55
Willi Wipp Daten aus Endlosformular in Bericht übernehmen
Keine neuen Beiträge Access Formulare: Wie setze ich eine Liste auf Leer? 2 Elldel 305 30. Jan 2007, 15:52
Gast Wie setze ich eine Liste auf Leer?
Keine neuen Beiträge Access Formulare: Access Endlosformular 4 Gast1 2983 27. Okt 2006, 14:09
Gast Access Endlosformular
Keine neuen Beiträge Access Formulare: Filtern erzeugt neuen Datensatz 4 Holy Mentor 1115 02. Okt 2006, 18:28
Nouba Filtern erzeugt neuen Datensatz
Keine neuen Beiträge Access Formulare: Endlosformular: Zeilen zweifarbig 1 EnTaroAdun 3711 05. Jun 2006, 19:09
EnTaroAdun Endlosformular: Zeilen zweifarbig
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: HTML CSS