Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Wie Werte in Feldnamen vergleichen?





Frage

Hallo, habe eine Tabelle mit Adressdaten. Wenn ich jetzt eine Abfrage realisieren soll (ohne SQL), die lautet: Zeige alle Personen, die älter sind als Person Nr. 4, wie mache ich das? Ich weiß, dass ich auf die Feldnamen in eckigen Klammern zugreifen kann. Aber formulier ich das in den Kriterien? hatte mir sowas gedacht (was natürlich nicht funktioniert),eingetragen unter der Spalte Geburtsdatum in den Kriterien in der Entwurfsansicht der Abfrage: >([Nr]=4).[Datum] Oder so ähnlich, ich hoffe es ist verständlich was ich damit bezwecken will. Es geht darum, dass ich als Bedingung nicht einfach das Datum selbst reinschreibe wie hier: >01.01.1984 was gehen würde. hab ich schon getestet. Vielen Dank für alle Tipps die ihr mir geben könnt

Antwort 1 von stefan672

Sorry, aber was Du da vorhast, klingt für mich doch etwas unlogisch.

Wieso einen (statischen) Vergleich mit dem 4. Satz? Sobald ein Satz < 5 gelöscht wird, würdest Du automatisch mit dem 5. Satz vergleichen. Zudem sollte es, wenn alle älteren im Ergebnis enthalten sein sollten, auch mit < verglichen werden.

Vielleicht erklärst Du nochmal ausführlicher, was Du eigentlich konkret vorhast (vielleicht sogar mit Angaben zur verwendeten Access-Version).

Rein technisch betrachtet: Den Bezug auf den X.Satz kannst Du in dem Abfrage-Assistenten nicht in dieser Form herstellen. Als Lösung könnte ich mir einen Sub-Select in der Bedinung vorstellen. Das ganze allerdings nur in der nicht von Dir gewünschten Form von purem Sql. Aber wie oben beschrieben, sehe ich vorrangig ein logisches Problem.

Gruß, Stefan

Antwort 2 von Irnfried

Erstmal danke für die Antwort.
Ich benutze Access 2000.

Und das mit dem 4. Satz vergleichen müsste in sofern so gehen, da ich eine Spalte "ID" habe, die gleichzeitig der Primärschlüssel ist. D.h. der Datensatz von Person xy hat immer die gleiche Nummer, ich könnte mich natürlich auch auf den Namen beziehen statt einer bestimmten Datensatznummer.

In SQl hab ich mir das so gedacht wie dus gesagt hast, mit einer verschachtelten sql-abfrage.

SELECT Vorname, Nachname, Geburtsdatum
FROM Adressenliste
WHERE Datum < (SELECT Datum
FROM Adressenliste
WHERE Nachname = "Personxy");

Versteht ihr jetzt was ich meine?

Das will ich nicht mit SQL realisieren, sondern irgendwie in der Entwurfsansicht eingeben können

Antwort 3 von Knubbel

Hallo Irnfried,

ich habe volgenden Vorschlag, wenn ich die Frage richtig verstanden habe:

Erstelle zunächst eine Auswahlabfrage mit den Feldern
* Person-Nr
* Geburtsdatum
aus deiner Basistabelle
Unter Person-Nr gibst du bei Kriterien ein:
WIE([Nr])
Diese Abfrage speicherst du z.B. unter dem Namem Namenauswahl
Durch diese Abfrage hast du mittels Optionsfeld die Möglichkeit eine beliebige Person aus deiner Tabelle als Basis zu wählen.

Nun erstellst du eine 2. Abfrage mit allen Feldern, die du benötigst - incl. Geburtsdatum.
Als Datenquelle natürlich deine Basistabelle.
In diese Abfrage integriest du nun als weitere Datenquelle die vorher erstellte Abfrage Namenauswahl
Achtung: es darf keine Verknüpfung zwischen den beiden Datenquellen bestehen!
Aus der Datenquelle Namenauswahl übernimmst du das Steuerelement Geburtsdatum in die Auswahlabfrage.

Bei dem Steuerelement Geburtsdatum aus der Quelle "Basisdaten" gibst du als Kriterium folgendes ein:
<[Namenauswahl].[Geburtsdatum]

Wenn diese Abfrage ausgeführt wird, wird zunächst nach der Pers.-Nr. gefragt (Parametereingabe). Dann werden aus der Basistabelle alle Personen ausgefiltert, die älter sind als die gewählte Person.

Hoffe, ich habe dich richtig verstanden.

mfg Knubbel




Antwort 4 von JohnnyLoser

Hi Irmfried,

Du willst es ohne SQL machen, o.k., aber hier ist es einfacher, es als SQL darzustellen. Füge es ein und wechsle in die Entwurfsansicht.

[CODE]SELECT Vorname, Nachname, Geburtsdatum
FROM Adressenliste
WHERE Geburtsdatum < (SELECT Geburtsdatum
FROM Adressenliste
WHERE Nachname = [Name eingeben])
ORDER BY Geburtsdatum;[/CODE]

Gruß

Johnny

Antwort 5 von Irnfried

Hallo,

danke euch beiden, so geht es. Scheinbar ist Access für solche komplexen Dinge einfach zu doof.

Gruß I.

Antwort 6 von oliverV

Hallo Irnfried,

Access ist nicht zu doof und es ist ihm auch nicht zu komplex.
Du willst eine Abfrage ohne SQL realisieren, wie ? – Die Entwurfsansicht einer Abfrage ist nur eine andere Ansicht einer SQL-Abfrage.

Über Sinn und Zweck einen statischen Wert über den Umweg einer ID abzufragen, kann man auch geteilter Meinung sein; aber wenn es denn so sein soll:

Tabelle „Adressen“ mit den Feldern:
IDAdressen
Vorname
Nachname
Geburtsdatum

Kopiere folgende SQL-Anweisung in die SQL-Ansicht einer neuen leeren Abfrage:

SELECT Adressen.IDAdressen, Adressen.Vorname, Adressen.Nachname, Adressen.Geburtsdatum
FROM Adressen
WHERE (((Adressen.Geburtsdatum)<DLookUp("Geburtsdatum","Adressen"," IDAdressen=4")));


Fertig !

Gruß

Oliver


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: