Daten in Access filtern ohne Datenbankänderung

Hallo!

Ich hab schon wieder ein Problem bei dem ich nicht weiterkomme:

Ich hatte ein Formular erstellt, welches eine Anzahl von Computern beinhaltet.
In diesem Formular befindet sich ein Listenfeld, dass sämtliche IP-Adressen des gerade angezeigten Computers auflistet. (Werden aus einer weiteren Tabelle geholt.)
Viele von den IP-Adressen kommen aber in der Liste doppelt vor, bzw. es werden Lücken in der Liste angezeigt (das hängt mit den Daten in der Datenbank zusammen).

Ich könnte zwar grundlegende Änderungen an der Datenbank vornehmen, aber z.Z. möchte ich lieber die Daten „in Echtzeit“ filtern - also immer wenn ein neuer Datensatz angezeigt wird, soll eine Schleife prüfen wo in der IP-Liste Dopplungen vorkommen bzw. leere Einträge sind und diese dann löschen.

Hat jemand eine Idee wie man das Codetechnisch bewerkstelligen kann?

Im Voraus schonmal Danke für all eure Hilfe!

Florian

Hallo Florian,

Hat jemand eine Idee wie man das Codetechnisch bewerkstelligen
kann?

Erstelle eine Löschabfrage für die leeren Datensätze.
Erstelle eine Dublettenabfrage für die doppelten Datensätze.

Wann du diese ausführst, ist vom Ablauf der Aktualisierung abhängig.
Leider beschreibst du diesen Vorgang nicht.

In VBA kannst du die Funktion: docmd.openquery „Abfragename“ verwenden um die Abfrage dann auszuführen.

Bei den Dubletten mußt du dann noch entscheiden, ob du jeweils den ersten, oder den zweiten Fund löschen willst.

Grüße aus Schwerin
Wolfgang
(Netwolf)

Moin,

irgendwie beschleicht mich das Gefühl, dass es in deiner Datenbank ein kleines Designproblem gibt. Stichwort Normalisierung und relationale Beziehungen.

Wenn dein Dropdownfeld als Quelle eine Access-Abfrage hat:
Funktionen anschalten -> Gruppierung
Optionen der Abfrage -> Keine Duplikate = Ja
Das abgefragte Feld [zusätzlich] mit dem Kriterium „is not null“ prüfen

Wenn dein Dropdownfeld als Quelle eine SQL-Abfrage hat:
„Select DISTINCT xy from xyTabelle
where …
group by xy“

Angezeigte Felder müssen entweder mit gruppiert werden oder über Funktionen (wie Sum(), Max(), Min(), Avg() …) berechnet werden.

Hoffe das hilft dir ein Stück weiter
Gruß
Daniel

Hallo!

Erstmal danke für eure Hilfe, die Idee mit dem „duplikate ausblenden“ war ja super genial und dabei super einfach. (Ich hab die Zeilen zwar vorher im SQL-Editor geschrieben, aber es sprach nix dagegen einfach in den Entwurfsmodus zu wechseln und die Eigenschaft auszuwählen - im SQL-Code ist dann das Wort „distinct“ hinzugekommen - wieder was dazu gelernt.)

Wegen dem leere Felder rauslöschen konnte ich dir leider nicht so ganz folgen, aber ich hab mir selbst darüber nochmal umfassende Gedanken gemacht:

Meine SQL-Abfrage sieht so aus:

SELECT DISTINCT IP\_ADRESSE
FROM NETZKARTEN\_TABELLE
WHERE [NETZKARTEN\_TABELLE]![COMPUTER\_ID]=[Formulare]![Eingabeformular]![ID];

Ich kann doch da bestimmt in der WHERE-Klausel noch eine weitere kleine Bedingung hinzufügen, irgendsowas wie

...AND [NETZKARTEN\_TABELLE]![IP\_ADRESSE]NULL

Leider bin ich mir über die Syntax und wie es auszusehen hat nicht ganz im Klaren, weshalb ich hier nochmal frage.

Vielen Dank nochmal!
Florian

Moin,

[NETZKARTEN_TABELLE]![IP_ADRESSE]NULL

Leider bin ich mir über die Syntax und wie es auszusehen hat
nicht ganz im Klaren, weshalb ich hier nochmal frage.

Dazu mußt du wissen, dass NULL gleichzusetzen mit unserer Definition von „Nichts“ ist. Etwas mit „Nichts“ zu vergleichen, geht aber nicht. Deswegen mußt du den Vergleich dahingehend umgestalten, dass du abfragst, steht dort etwas drin oder nicht? Also:

where xyz is null

Oder

where xyp is not null

Gruß
Daniel