Neuigkeiten:

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

Mobiles Hauptmenü

Filtern per Schaltfläche

Begonnen von H_Stadler, Juli 27, 2015, 16:45:18

⏪ vorheriges - nächstes ⏩

H_Stadler

Hallo Zusammen,

Ich habe mich in letzter Zeit intensiv mit Access befasst, da ich im Rahmen eines Praktikums eine alte (SEEHR ALTE) Datenbank aufpolieren soll. Ich kenne mich noch nicht besonders gut aus und glaube trotzdem schon sagen zu können, dass die Datenbank voller Fehler ist!  :-\ Tabellen, Abfragen und Formulare , die gleich benannt sind, Tabellen zur Eurokonvertierung!  :o Na all sowas.

Mittlerweile habe ich schon einiges geschafft, bin allerdings gerade beim Thema VBA immer wieder ins straucheln gekommen. Schwer tue ich mich zur Zeit mit dem Filtern von Daten. Und damit auch zum Thema:

Ich habe zwei Formulare, wobei jedes ein Endlosformular mit Geräte Daten darstellt. Die Formulare unterscheiden sich ausschließlich dadurch, dass Formular "A" Geräte beinhaltet, die extern geprüft werden und Formular "B" Geräte beinhaltet die intern geprüft werden. Ich würde gerne ein Formular daraus machen, in dem ich per Schaltflächen nach "Intern" und "Extern" filtern kann. Ich habe das wie folgt versucht:

Private Sub cmdKalArt_Click()
    Me.Filter = "Kalibrierart = Intern"
    Me.FilterOn = True
End Sub


"PVM Kalibrierart_ID" liegt als Textfeld im Endlosformular vor und hat seine Datensatzherkunft in einer Abfrage. Es gibt eine Tabelle "PVM Kalibrierart", die Kalibrierart_ID und den Namen der Kalibrierart enthält. Hier gibt es eine Beziehung zu der Tabelle "PVM Daten". PVM Daten beinhaltet u.a. die Inventarnummer, die ebenfalls im Endlosformular vorkommt.

Ich habe schon viele Foren durchwälzt (Auch hier), kam aber leider nicht sonderlich weit und verstehe nicht warum.
Sollte ich bei meiner Erklärung was wichtiges vergessen haben reiche ich die Info sofort nach!
Vielen Dank für eure Mühen  ;)

LG Der_Praktikant
LG,
Hubert

MaggieMay

Hallo,

wenn du auf Text abfragen willst, musst du Hochkommata einsetzen:
Me.Filter = "Kalibrierart = 'Intern'"
Es gibt ein Datenfeld namens "Kalibrierart" in der Datenquelle des Formulars?
Freundliche Grüße
MaggieMay

H_Stadler

Danke für die schnelle Antwort!
Probiere das morgen früh sofort mal aus  ;) Hoffentlich ist es wirklich so einfach!

Ja ist richtig. "Kalibrierart" ist in der Abfrage enthalten, die die Datensatzquelle des Formulars darstellt  ;)
LG,
Hubert

H_Stadler

#3
Hallo!

Klappt leider nicht so einfach... Vielleicht nochwas mehr Hintergrund:
Ich habe eine Tabelle "Daten". Hier liegt die ID der Kalibrierart (1-7). Dieses Feld hat eine Beziehung zur Tabelle Kalibrierart, wo die ID mit "Intern", "Extern" und so weiter verknüpft ist. In der Abfrage, die die Datenquelle meines Formulars darstellt frage ich die ID in der Tabelle Daten ab. Das will ich dann jetzt gerne filtern. Wenn ich den oben stehenden Code nutze kommt keine Fehlermeldung, es wird aber auch nicht gefiltert....

Nachtrag:
Code ist gleich, habe etwas mit der Datensatzherkunft herumgespielt. Wenn ich die Schaltfläche klicke öffnet sich ein popup-fenster in welchem ich nach der Kalibrierart gefragt werde. Egal ob ich die ID oder den Namen der Art eingebe werden mir nach bestätigen keine DS mehr angezeigt.
LG,
Hubert

MzKlMu

Hallo,
Du musst auf die richtigen Felder achten.

Me.Filter = "KalibrierartID = 1" 'entsprechende Zahl verwenden

Ich würde hier zum Filtern ein Kombifeld nehmen, das alle Kalibrierarten zur Auswahl anbietet. Dann braucht es keinen Button.

Wichtige Frage:
Hast Du für die Kalibrierart ein Nachschlagefeld in der Tabelle direkt angelegt ?

PS:
ZitatTabellen, Abfragen und Formulare , die gleich benannt sind,
Tabellen und Abfragen können nicht gleich benannt sein.
Gruß Klaus

H_Stadler

Hallo!

Da bin ich leider echt zu verwirrt  :D Hab sämtliche Kombinationen von ID, Name etc im Code versucht, aber das Ergebnis bleibt das gleiche...

Deine Idee mit dem Kombifeld gefällt mir sehr gut. Wäre das dann ein ungebundenes Feld oder hat das die gleiche Datensatzquelle? Kann mir vorstellen, dass ich hier dann auch wieder VBA oder Makros brauche. Hast du da einen Tipp für mich?

P.S: Gut dann hab ich vielleicht übertrieben  :P Trotzdem heißen viele Objekte verwirrend ähnlich  :o
LG,
Hubert

DF6GL

Hallo,

zeig mal einen Screenshot vom Beziehungsfenster..
Gibt es dort noch nichts zu sehen, füge erst mal alle Tabellen hinzu. Dann ziehst Du Beziehungslinien zwischen den Primär- und Fremdschlüsselfeldern mit referentieller Integrität. Falls dabei Access meckert, verzichte zunächst(!) auf diese Ref. Integrität.

Zeige sodann (per Copy&Paste) die SQL-Strings der Abfrage(n) (Abfrageentwurfsansicht/Ansicht/SQL-Ansicht)
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

H_Stadler

Hallo DF6GL,

Beziehungen und SQL Code  ;)

SELECT [PMV Kalibrierart].Kallibrierart, [PMV Daten].[nächste Prüfung], [PMV Daten].Inventarnummer, [PMV Daten].Seriennummer, [PMV Hersteller].[Hersteller / Lieferant], [PMV Geräteart].Geräteart, [PMV Gerätetyp].Gerätetyp
FROM [PMV Kalibrierart] INNER JOIN ([PMV Hersteller] INNER JOIN ([PMV Gerätetyp] INNER JOIN ([PMV Geräteart] INNER JOIN [PMV Daten] ON [PMV Geräteart].Kennummer = [PMV Daten].[PMV Geräteart_ID]) ON [PMV Gerätetyp].Kennummer = [PMV Daten].[PMV Gerätetyp_ID]) ON [PMV Hersteller].Kennummer = [PMV Daten].[PMV Hersteller_ID]) ON [PMV Kalibrierart].Kennummer = [PMV Daten].[PMV Kalibrierart_ID]
WHERE ((([PMV Kalibrierart].Kallibrierart)<>"Nein" And ([PMV Kalibrierart].Kallibrierart)<>"K/A"));
LG,
Hubert

MzKlMu

Hallo,
lade bitte mal die DB hier hoch (Access2003, als MDB). Nur mit wenigen Datensätzen.
Damit man das nicht nachbauen muss. Ich zeige Dir das dann wie es geht mit dem Kombi.
Ich benötige aber Access2003.
Gruß Klaus

DF6GL

Hallo,



Me.Filter = "Kallibrierart = 'Intern'"
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

H_Stadler

Oh Mann  ::) Manchmal steckt der Teufel echt im Detail... Tut mir ja schon fast Leid eure Zeit hiermit verschwendet zu haben. Aber das ist wohl auch eins der Notations-Probleme der DB...

Vielen Dank auf jedenfall!!!
LG,
Hubert