Neuigkeiten:

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

Mobiles Hauptmenü

Maximalen Wert für Zelle festlegen

Begonnen von Cinna, September 08, 2024, 08:35:53

⏪ vorheriges - nächstes ⏩

Cinna

Hallo,

vorab - ich habe gerade erst angefangen, mit MS Access zu arbeiten, und sehr wenig Ahnung.

Folgende Situation: Ich arbeite mit einer Datenbank, die als Grundlage für ein Videospiel dient. Mit Fortschreiten im Spiel entwickeln sich die verschiedenen Werte innerhalb der Datenbank immer weiter. Wie das geschieht kann ich leider nicht genau sagen. Die Werte reichen jeweils von 0 bis 100.

Ich würde nun gerne in bestimmten Zellen den jeweiligen Wert, der erreicht werden kann, auf eine Zahl zwischen 0 und 99 begrenzen, sodass der Wert quasi nicht mehr über den angegebenen Maximalwert steigen kann. Diese Option hätte ich prinzipiell gerne für jede einzelne Zelle. Geht sowas? Falls ja, wie könnte man das umsetzen?

PhilS

Wenn du die Tabelle in der Entwurfsansicht öffnest, kannst du eine Spalte markieren. Dann siehst du unten die Feldeigenschaften. Bei Gültigkeitsregel schreibst du: Between 0 And 99

Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Cinna

Das gilt dann aber für alle Zellen, oder? Ich möchte gerne für jede Zelle einzeln einen Maximalwert festlegen können. Also in einer Zelle könnte der bspw. 0 sein, in einer anderen 40, in wieder einer anderen 100.

Knobbi38

#3
Hallo Cinna,

bei Access werden die Daten in einer Datenbank in Datensätzen verwaltet und nicht in einer Tabelle. Wahrscheinlich hast du auch kein Datenmodell für deine Videodaten, deshalb solltest du dich vielleicht erstmal mit den Grundlagen von Datenbanken beschäftigen oder das Tool wechseln.

Gruß Ulrich

PhilS

Zitat von: Cinna am September 08, 2024, 08:35:53Ich würde nun gerne in bestimmten Zellen den jeweiligen Wert, der erreicht werden kann, auf eine Zahl zwischen 0 und 99 begrenzen,
Was sind die "bestimmten Zellen"?
Sind diese an einem bestimmten Wert in einer anderen Spalte desselben Datensatzes technisch erkennbar?
Wenn ja, kannst du die Prüfung auf "bestimmte Zelle" in dem Ausdruck der Gültigkeitsprüfung einbeziehen. Allerdings musst du die Gültigkeitsregel dann auf Ebene der Tabelle festlegen.

Beispiel: SpalteA Between 0 And 99 Or SpalteB = 'Nicht Prüfen'

Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Cinna



So sieht das Ganze bei mir aus. Jetzt möchte ich bspw. dass nur in der rot markierten Zelle ein Maximalwert von bspw. 10 gilt. Und ich für jede einzelne Zelle einen jeweils nur für diese Zelle geltenden Maximalwert angeben kann.

MzKlMu

Hallo,
die Tabellenstruktur dürfte ungeeignet sein.
Mit diesem Aufbau kann dein Vorhaben eher nicht realisiert werden.

Heißen die Felder wirklich A, B usw.?


PS
Vergiss die Excel Bezeichnungen. Zellen gibt es bei Access nicht.
Access hat Felder (=Spalten) und Zeilen (=Datensätze).
Gruß Klaus

Cinna

Zitat von: MzKlMu am September 08, 2024, 11:39:58Hallo,
die Tabellenstruktur dürfte ungeeignet sein.
Mit diesem Aufbau kann dein Vorhaben eher nicht realisiert werden.

Achso, schade - trotzdem danke für die Antworten, habe zumindest ein bisschen was dazugelernt.

MzKlMu

Hallo,
Zitathabe zumindest ein bisschen was dazugelernt.
Und jetzt gibst Du auf ?


Hier noch was zum Lernen:

https://www.access-tutorial.de/
Gruß Klaus

markusxy

Also grundsätzlich geht das schon, ist aber eher etwas für fortgeschrittene Programmierer.
Unter dem Begriff "Check Constraint" kannst du dich dazu im www einlesen.
Weit mehr ist dann über Trigger - bei Access Daten Makros(da geht aber nicht sehr viel) möglich.
Allerdings solltest du dich erstmal mit Grundlagen beschäftigen - das Thema gehört schon zu advanced  ;)
Und statt Daten in Access zu speichern bietet z.B. der kostenlose MS SQL Server weit mehr Möglichkeiten an ...

Beaker s.a.

Hallo Cinna,
Zitathabe zumindest ein bisschen was dazugelernt.
Ich hoffe doch, dass dir "ein bisschen" nicht genug ist.
Ich stelle mal ein paar Vermutungen an.
Es geht wohl um die Eigenschaften (A, B, C ...) von Spielern (WorkerUID).

Wenn du jetzt für jeden Spieler jede Eigenschaft mit Grenzwerten belegen
willst, brauchst du drei Tabellen

Worker
- WorkerUID,  PK (LongInteger), hast du schon) *1)
- WName, Text
- bei Bedarf weitere Eigenschaften des Workers die keinen Grenzwerten unter-
liegen, z.B. eine Notiz zur Spielweise

Eigenschaften
- EigenschaftID, PK (LongInteger)
- Bezeichnung, Text
- auch hier bei Bedarf weitere Eigenschften der Eigenschaft, z.B. eine Beschreibung
wie diese Eigenschaft erworben/gesteigert werden kann

EigenschaftenDerWorker
- EigenschaftenDerWorkerID, PK (LongInteger)
- WorkerID_F, FK (LongInteger), hier kommt die WorkerUID hinein (Datentyp entsprechend Long oder UID)
- EigenschaftID_F, FK (LongInteger), entsprechend
- MinWert, Byte (-255) oder Integer (-32767)
- MaxWert, wie MinWert

Mit dieser dritten Tabelle kannst du dann pro Worker/Eigenschaft die Werte festlegen,
oder auch nur einen.
*1) Hier würde ich vorzugsweise "AutoWert" verwenden, da musst du dich nicht weiter
drum kümmern.
PK = Primärschlüssel, FK = Fremdschlüssel

Falls du weitere Hilfe möchtest, versuche Obiges umzusetzen und zeige es in Form einer
Abbildung des Beziehungsfensters.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Cinna

Zitat von: PhilS am September 08, 2024, 10:37:42Beispiel: SpalteA Between 0 And 99 Or SpalteB = 'Nicht Prüfen'

Kann ich bei der Gültigkeitsprüfungsregel oder der Feldüberprüfungsregel nicht so etwas eingeben, wie hier vorgeschlagen, nur mit Bezug auf in meinem Beispiel eine bestimmte, einzelne WorkerUID? Ich weiß, das folgende funktioniert offensichtlich nicht - aber nur beispielhaft verdeutlicht, was ich meine:

If WorkerUID = 1 Then SpalteA Between 0 And 99

Gibt es keine Knüpfung an eine Kondition?

Das Problem ist - ich kann keine neuen Beziehungen o.Ä. erstellen, da ich das Spiel nur mit der Erlaubnis des Entwicklers modde. Deswegen kann ich nicht wirklich irgendwelche neuen Tabellen hinzufügen oder irgendetwas am Grundgerüst verändern.

MzKlMu

Hallo,
für Access hat der Entwickler das schon falsch angefangen bzw. aufgebaut. Der hat sich zu sehr nach Excel gerichtet. Der gezeigte Tabellenaufbau ist für Access ungeeignet.

Siehe auch die Hinweise von ekkehard in #10.
Gruß Klaus

PhilS

Zitat von: Cinna am September 15, 2024, 17:54:04Kann ich bei der Gültigkeitsprüfungsregel oder der Feldüberprüfungsregel nicht so etwas eingeben, wie hier vorgeschlagen, nur mit Bezug auf in meinem Beispiel eine bestimmte, einzelne WorkerUID? Ich weiß, das folgende funktioniert offensichtlich nicht - aber nur beispielhaft verdeutlicht, was ich meine:


If WorkerUID = 1 Then SpalteA Between 0 And 99

Gibt es keine Knüpfung an eine Kondition?
Jein!
Nein, Bedingungen kann man in einer Gültigkeitsregel nicht verwenden.
Ja, klar. Das Beispiel von mir ist ja genau das. Du kannst durchaus Bedingungen verwenden, aber du musst sie in den Ausdruck der Gültigkeitsregel einarbeiten. - Das geht realistisch für 1-2 Ebenen und dann wird das so komplex, das man (gilt für mich, denke aber, dass das verbreitet sein dürfte) das nicht mehr nachvollziehen kann und das völlig unwartbar wird.

Wenn du mein Beispiel wie folgt anpasst, solltest du das gewünschte Ergebnis bekommen.

SpalteA Between 0 And 99 OR WorkerUID <> 1

Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor