Seite 1 von 1

Filter bei Formularen und Abfragen

Verfasst: Mo 17. Apr 2023, 09:33
von Susi93
Hallo,

ich habe hier einige Probleme mit der Filterfunktion von Base.

Nehmen wir an ich habe Kunde "A" mit dem Schlüssel "1" in einer separaten Tabelle, und möchte in einer anderen Tabelle "Projekte" arbeiten, die auf diesen Kunden verweist.
Möchte ich jetzt die Projekte von Kunde "A" im Formular suchen, muss ich in die Suchmaske "Kunde 1" eingeben. Anders in Abfragen, die ich in Formulare umwandle, da kann ich einfach nach "A" filtern, aber die Daten nicht bearbeiten.
Wie kann man das lösen?

Re: Filter bei Formularen und Abfragen

Verfasst: Mo 17. Apr 2023, 11:44
von RobertG
Arbeite besser mit einer separaten Filter-Tabelle. Werte in dieser Tabelle liest dann eine Abfrage aus, die Du auch bearbeiten kannst. Wie so etwas geht - auch ohne Makros – steht im Handbuch.

Wenn Du das Ganze direkt mit den Funktionen des Formulars lösen willst, dann geht das natürlich auch über eine editierbare Abfrage. Damit die Abfrage editierbar bleibt muss sie die Primärschlüsselfelder der betreffenden Tabellen enthalten.

Re: Filter bei Formularen und Abfragen

Verfasst: Mo 24. Apr 2023, 14:27
von Susi93
Danke, aber jetzt muss ich einige Begrifflichkeiten klären:
Ist eine "Filter-Tabelle" ein Formular, das auf Grundlage einer Abfrage erstellt wurde?
Wie enthält die Abfrage die Primärschlüsselfelder der betreffenden Tabellen? Tut sie das nicht, wenn man in der Bearbeitungsansicht die entsprechenden Beziehungen setzt?

Re: Filter bei Formularen und Abfragen

Verfasst: Di 25. Apr 2023, 12:31
von RobertG
Lade Dir das Handbuch herunter. Da habe ich alles mögliche zu den Filter-Tabellen beschrieben.

1. Es wird eine Tabelle erstellt, die nur einen Datensatz speichern soll. Diese Tabelle ist die Filtertabelle. Primärschlüssel kann ein Ja/Nein-Feld sein. Mal angenommen der Name der Tabelle ist "tbl_Filter" und der Name des Primärschlüsselfeldes ist "ID".
Die Tabelle wird mit ID='ja' (einmal klicken) mit dem entscheidenden Datensatz versorgt.

2. Diese Filtertabelle wird durch ein "Nebenformular" mit Daten versorgt. Das heißt: Alle Werete, die in der Filtertabelle geändert werden sollen, sind auch als Felder in diesem Formular vorhanden. Das Formular ändert also nur den Datensatz mit ID='ja'.

3. Dein eigentliches Formular beruht bisher auf einer Tabelle? Dann wird das jetzt eine Abfrage:

Code: Alles auswählen

SELECT * 
FROM "Tabelle" 
WHERE "Fremdschlüssel_ID" = COALESCE(
(SELECT "Fremdschlüssel_ID" FROM "tbl_Filter" WHERE "ID" = TRUE), 
"Fremdschlüssel_ID")
Auf so einer Abfrage beruht also jetzt Dein eigentliches Formular. Ist in der Tabelle "tbl_Filter" ein Wert für das Feld "Fremdschlüssel_ID" vorhanden, dann werden nur die Daten zu diesem Schlüssel angezeigt. Sonst werden alle Daten angezeigt, die in "Tabelle"."Fremdschlüssel_ID" einen Inhalt haben.

Re: Filter bei Formularen und Abfragen

Verfasst: Mi 26. Apr 2023, 21:57
von Wanderer
Susi93 hat geschrieben:
Mo 24. Apr 2023, 14:27
Danke, aber jetzt muss ich einige Begrifflichkeiten klären:
Ist eine "Filter-Tabelle" ein Formular, das auf Grundlage einer Abfrage erstellt wurde?
Das mit den Filter-Formularen fand ich in diesem Video damals sehr verständlich vorgeführt:
https://youtu.be/Jy9CV1yD7ew
Wie enthält die Abfrage die Primärschlüsselfelder der betreffenden Tabellen?
DU wählst sie mit aus.
Nimm 3 Felder ID, NAME, VORNAME in Tabelle TAB an, dann kann das Ergebnis von

Code: Alles auswählen

SELECT ID, NAME, VORNAME
bearbeitet werden, während das Resultat von

Code: Alles auswählen

SELECT NAME, VORNAME
eben NICHT bearbeitet werden kann. Stell es Dir einfach so vor, dass die Datenbank wissen muss, wohin die Daten zurückgeschrieben werden sollen, wofür der Primärschlüssel benötigt wird.

Relationen regeln die Verbindung zu weiteren Tabellen.