Form nach mehreren Parametern filtern

Da ich die Originaldaten nicht veröffentlichen kann, hier eine kleine Abstrahierung meines Problems:

Ich habe eine Tabelle1 :

ID | Postleitzahl | Name
1 | 12345 | Mayer
2 | 34251 | Müller
3 | 12345 | Köhler
4 | 27590 | Bäcker
5 | 34251 | Mustermann

und eine Tabelle2 :

ID | Werbeaktion | Aktionsreichweite
1 | Aktion1 | 12345
2 | Neueröffnung | 12345;34251;27590
3 | Rabattaktion | 27590;12345

In FormA kann eine Werbeaktion aus Tabelle1 in einem Dropdownfeld ausgewählt werden. Ein Button in FormA soll nun FormB aufrufen und ihr die zugehörigen Postleitzahlen übergeben, so dass in FormB nur die Kunden mit einer entsprechenden Postleitzahl angezeigt werden.

Für „Rabattaktion“ müsste die Tabelle in FormB also wie folgt aussehen:

ID | Postleitzahl | Name
1 | 12345 | Mayer
3 | 12345 | Köhler
4 | 27590 | Bäcker

Das ganze unter Access 2007

Mein erster Versuch war, in der Datensatzquelle von FormB einen Parameter als Kriterium für Postleitzahl anzugeben. Jetzt poppt beim Öffnen ein Abfragefenster für den Parameter auf der nach Eingabe einer Postleitzahl die Daten auch korrekt filtert. Leider habe ich keine Ahnung, wie ich:

  • den Parameter direkt übergeben kann (OpenArgs scheint ihn nicht zu interessieren)
  • das ganze für mehrere Postleitzahlen aufbohren kann (die sind in Tabelle2 ja als ein String im Format „PLZ1:stuck_out_tongue_winking_eye:LZ2;…“ gespeichert)

Moin, Floriel,

Access ist auf normalisierte Daten angewiesen, deshalb wird sich deine Fragestellung mit Bordmitteln nicht lösen lassen. Vielleicht ist ja hier ein Freak unterwegs, der das programmtechnisch lösen kann.

Gruß Ralf

Hallo,

versuch mal folgendes:

Lege auf deinem Formular B einen Button „Suchen“ an und ein ungebundenes Textfeld und nenne es Postleitzahltxt

Gib als Code für Schaltfläche „Suchen“ folgendes ein:

Dim Krit As String, SQL As String
Krit = „“
If Not IsNull(Me!Postleitzahltxt) Then Krit = Krit & " AND Postleitzahl LIKE ‚" & Me!Postleitzahl & "*‘"
SQL = „SELECT * FROM tbl_Datenquelle“
If Krit „“ Then SQL = SQL & "WHERE " & Mid(Krit, 5)
Me!FormularB.Form.RecordSource = SQL
Me!Postleitzahl.SetFocus

Gib als Datenquelle für das Formular noch folgendes ein:

SELECT * FROM tbl_Datenquelle WHERE Postleitzahl LIKE ’ *’;

Vllt hilft dir das ja schonmal weiter

Eventuell kannst du dir das ja noch so hinbiegen (oder lassen) das es im zusammenhang mit deinem Formular A funktioniert.

Gruss

Besten Dank, normalisieren + SQL Anweisung dynamisch generieren hat das Problem gelöst