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
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?
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 ;)
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.
Hallo,
Du musst auf die richtigen Felder achten.
Me.Filter = "KalibrierartID = 1" 'entsprechende Zahl verwendenIch 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.
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
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)
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"));
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.
Hallo,
Me.Filter = "Kallibrierart = 'Intern'"
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!!!