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?
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
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.
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
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'
(https://i.imgur.com/hkTbB7m.png)
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.
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).
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.
Hallo,
Zitathabe zumindest ein bisschen was dazugelernt.
Und jetzt gibst Du auf ?
Hier noch was zum Lernen:
https://www.access-tutorial.de/
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 ...
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
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.
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.
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