Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: patti am November 14, 2024, 08:37:15

Titel: Kategorie automatisch durch Grenzwerte festlegen
Beitrag von: patti am November 14, 2024, 08:37:15
Ich habe in Tabelle "Anlagen" Anlagen stehen und dazu ihre Größe. Außerdem würde ich die Größe gerne automatisch in eine Spalte "Kategorie" einordnen, also S,M,L,XL. Damit ich die Größengrenzen der Kategorie später noch mal leichter ändern kann habe ich diese in einer zweiten Tabelle hinterlegt (Kategoriename, Untere Grenze, obere Grenze). Nun weiß ich aber nicht, wie ich die Zuordnung machen soll. Wenn ich das Feld berechnen lasse, kann ich keine Daten aus anderen Tabellen nutzen. Ich vermute ich muss es mit einer Abfrage machen, komme aber da auch nicht auf die richtige Idee.
Titel: Re: Kategorie automatisch durch Grenzwerte festlegen
Beitrag von: MzKlMu am November 14, 2024, 08:52:23
Hallo,
kannst Du bitte mal den Inhalt der zweiten Tabelle hier zeigen ?

Am Besten, Du zeigst mal ein Bild des Beziehungsfensters.
Titel: Re: Kategorie automatisch durch Grenzwerte festlegen
Beitrag von: patti am November 14, 2024, 09:28:05
Jede Anlage mit ihrer Größe soll in diese Kategorien eingeordnet werden.
Beziehung ist noch nicht wirklich definiert, hatte es kurz mal über Nachschlagen probiert, dabei würde es ja eine neue Beziehung erstellen. Ansonsten ist es Anlagentabelle.Kategorie n zu 1 Kategorietabelle.Kategorie.
Wenn ich die Kategorien nicht in einer extra Tabelle hätte, könnte ich in der ersten Tabelle die Spalte Kategorien einfach berechnen lassen, in dem ich gesagt hätte: Wenn(Größe Zwischen 0 und 100; "S"; Wenn Größe Zwischen 100 und 1000; "M";......). Ich würde aber gerne sie so anlegen, dass jemand sie auch leichter mal verändern kann.
Titel: Re: Kategorie automatisch durch Grenzwerte festlegen
Beitrag von: MzKlMu am November 14, 2024, 11:48:18
Hallo,
die gezeigte Tabelle kann so nicht verwendet werden, denn für z.B. 1000 erhält man M und L, was ja nicht sein darf.
Die Spalte für den unteren Grenzwert ist daher überflüssig.

<= 100 = S
<= 1000 = M

usw.

Mit DLookup kann die zutreffende Größe dann ermittelt werden.

Titel: Re: Kategorie automatisch durch Grenzwerte festlegen
Beitrag von: Knobbi38 am November 14, 2024, 13:02:10
Hallo,

wie gesagt, die Tabelle ist so nicht korrekt, Ober- und Untergrenzen dürfen sich nicht überschneiden.

tblKategorien
KategorieUGOG
S099
M100999
L10006999
XL700019999
XXL200002147483647

Dann kann mit einer SQL-Anweisung die Kategorie ermittelt werden:
SELECT Kategorie
FROM tblKategorie
WHERE [InputValue] Between UG And OG;
Man kann auch eine Tabelle mit nur der Obergrenze haben, dann wäre die SQL-Anweisung:
SELECT TOP 1 Kategorie
FROM tblKategorie
WHERE InputValue <= OG
Das setzt allerdings eine aufsteigende Sortierung voraus.

Mit Dlookup:
Dlookup("Kategorie","tblKategorie", CStr(InputValue) & "<= OG")Das funktioniert deshalb, weil Dlookup nur den ersten gefundenen Wert zurück gibt.

Gruß
Knobbi38
Titel: Re: Kategorie automatisch durch Grenzwerte festlegen
Beitrag von: patti am November 21, 2024, 12:56:38
Vielen lieben Dank für die Antworten!
Ich bin noch sehr neu in Access und frage mich deswegen, wie ich eure Lösungen anwenden soll.

Wenn ich diese SQL Anweisung
SELECT Kategorie
FROM tblKategorie
WHERE [InputValue] Between UG And OG;
als Abfrage mache und dann die Spalte Kategorien in der Tabelle Anlagen als Nachschlagefeld definiere, in dem ich die Abfrage ausführe, fragt es mich immer erst mal nach der Größe, was es ja eigentlich aus der Tabelle nehmen soll.

Und bei dem Dlookup weiß ich auch nicht, wo ich das hinschreiben soll. Vermutlich VBA, daran hab ich mich aber noch nicht getraut.

Hier  noch einmal die Beziehungen in Bild.
Titel: Re: Kategorie automatisch durch Grenzwerte festlegen
Beitrag von: Knobbi38 am November 21, 2024, 13:27:13
Hallo Patti,

zunächst mal solltest du deine Feldnamen so anlegen, daß diese keine Sonderzeichen und Leerzeichen enthalten. Dann müssen die Beispiele natürlich auf deine Verhältnisse angepasst werden. 'UG' und 'OG' gibt es bei dir ja nicht.

Nachschlagefelder in Tabellen sind ebenfalls verpönt. Sie werden einfach durch die entsprechenden Datentypen ersetzt und für die Anzeige werden Textboxen angegeben. Die Dateneingabe und -pflege erfolgt ohnehin nicht in den Tabellen selbst, sondern in Formularen, und dort wird statt des Nachschlagefeldes eine Kombobox verwendet.

Was dein Feld Kategorie in tblKategorie betrifft, solltest du in der Tabelle einen Autowert als PrimaryKey hinzufügen. Dieses Feld wird dann anstatt des Kategoriefeldes in der Tabelle tblAnlagen als Fremdschlüssel übernommen und die Beziehung zwischen diesen beiden Tabellen neu angelegt.

Dlookup() ist eine Access-Funktion, welche im VBA-Code verwendet wird.

Tip:
Access ist, anders als Excel, keine fertige Anwendung, sondern ein Werkzeug zur Erstellung von Datenbank-Anwendungen und hat für Einsteiger eine vollkommen andere Lernkurve und auch an VBA wirst du nicht vorbei kommen. Du musst dich zudem neben Access/VBA auch noch mit den Grundlagen von Datenbanken und der Abfragesprache SQL beschäftigen müssen.

Ein Forum oder ein Video können das nicht leisten. Diese sind bestenfalls dazu geeignet, bei konkreten Einzelproblemen helfen zu können. Deshalb ist es unabdingbar, sich die Grundlagen, z.B. über Fachliteratur und/oder Schulungen im Internet, anzueignen.

Einen ersten Eindruck bekommst du z.B. hier:
https://www.access-tutorial.de/ (https://www.access-tutorial.de/)
https://www.rheinwerk-verlag.de/computer-office/microsoft-office/access/ (https://www.rheinwerk-verlag.de/computer-office/microsoft-office/access/)

und für VBA neben den üblichen Wiki Einträgen:
https://goalkicker.com/VBABook/ (https://goalkicker.com/VBABook/)

Gruß
Knobbi38