3.5k Aufrufe
Gefragt in Datenbanken von
Hallo!

Ich möchte gerne in meiner Access Datenbank mittels "validation rule" den Benutzer dazu zwingen ein Feld mit 4 verschiedenen Statustexten zu füllen (in diesem Fall "none", "weak", "good" und "strong").
Kann mir bitte jemand dabei helfen den entsprechenden Befehl dafür ausfindig zu machen?
Des weiteren möchte ich gerne mit der "count" Funktion in einer Abfrage die Häufigkeit des auftretens bestimmter Einträge von Zellen berechnen. Man sollte dann bspw. den Namen des eintrages sehen und die entsrechende Häufigkeit mit der er in einer Tabelle vokommt.
Anschließend würde ich gerne die Summe einer als "number" definierten Zelle berechnen, welche mit einem anderen Eintrag zusammenhängen (bspw. sie Summe aller Mitarbeiter die einem bestimmten Vorgesetzten unterstellt sind).

Ich bitte um euren Rat bei dieser Problemstellung.

Danke!
Gruß, Main

15 Antworten

0 Punkte
Beantwortet von marie Experte (2k Punkte)
zu1:
Ich möchte gerne in meiner Access Datenbank mittels "validation rule" den Benutzer dazu zwingen ein Feld mit 4 verschiedenen Statustexten zu füllen (in diesem Fall "none", "weak", "good" und "strong").


Also auf deutsch heisst das Gültigkeitsregel. Du musst einfach in der Entwurfsansicht der Tabelle bei jedem Textfeld "Ist Nicht Null" in das Feld Gültigkeitsregel schreiben. Aber was verstehst Du unter Statustexten??? Hab ich jetzt doch was falsch verstanden?

zu 2:

Des weiteren möchte ich gerne mit der "count" Funktion in einer Abfrage die Häufigkeit des auftretens bestimmter Einträge von Zellen berechnen. Man sollte dann bspw. den Namen des eintrages sehen und die entsrechende Häufigkeit mit der er in einer Tabelle vokommt.


Auch hier bin ich nicht sicher, ob ich Dich richtig verstanden habe. Wenn Du alle Einträge gleichzeitig angezeigt haben möchtest, dann machst Du eine Kreuztabelle und nimmst Anzahl. Wenn nicht sag mal genauer was Du wo angezeigt haben möchtest? Ob Du nur einen Wert in einer MSGbox haben möchtest oder über eine Inputbox oder Parameterabfrage den Ausdruck selbst eingeben möchtest dessen Häufigkeit gezählt werden soll.

Das letzte kannst Du auch mit einer kreuztabelle erledigen

Gruß marie
0 Punkte
Beantwortet von
Hallo Marie!

Ein paar Sachen habe ich mittlerweile durch einfaches ausprobiren herausgefunden. Ich hab bloß noch ein paar kleinere Probleme.
Ich möchte wie gesagt gerne die häufigkreit eines bestimmten Eintrages in einer Tabelle zählen. In meinem fall sieht die Sache so aus:
Tabelle: Commanders
Name
Vorname

Tabelle: Battles
Location
Commanders in service
Soldiers killed in action

Ich würde jetzt gerne die Namen aller Kommandeure anzeigen lassen und die Anzahl der Schlachten an denen sie teilgenommen haben, wo mehr als 1000 Soldaten gestorben sind. Jetzt weiß ich zwar wie ich die Kommandeure anzeigen lasse die an einer Schlacht mit ">1000 [Soldiers killed in action]" teilgenommen haben, ich krieg's nur nicht gebacken, dass mir die Abfrage bei den Kommandeuren, die in keiner solchen Schlacht gewirkt haben, eine 0 (Null) anzeigt.

Des weiteren müsste ich ein "form" erstellen (Ich glaube in der deutschen Access Version heißt es "Formular"), welches mir die Kommandeure anzeigt, und eine Liste mit den Schlachten an denen jeder einzellne teilgenommen hat. Ich krieg's nicht hin, weil ich immer nur den ersten Namen angezeigt bekomme und darunter eine Liste "ala Screenshot" mit allen Schlachten die in der "Battles" Tabelle drinstehen anstatt nur jene die dieser bestimmte Kommandeur gefochten hat.

Das mit den Statustexten hätte ich mir eher so vorgestellt, dass mann den Benutzer auf die Eingabe dieser vier Wörter ("none", "weak", "good" und "strong") beschränkt. Diese beschreiben die Verteidigungsstärke einer Region. Die Tabelle dafür sieht so aus:

Tabelle: Regions
Name
Capital
Population
Status of Defence (das ist dieses vier-Wege Feld)
Competitor


Ich bedanke mich für deine nette Hilfe und hoffe, dass meine Erklärung mehr Klarheit in die Sache bringt.

LG, Main
0 Punkte
Beantwortet von marie Experte (2k Punkte)
Also ich blicke jetzt nicht wirklich mehr durch, weil Du drei Fragen auf einmal stellst. Belass es mal hier mit der ersten Frage und stell Frage 2 und drei bitte in getrennten Postings.

ich krieg's nur nicht gebacken, dass mir die Abfrage bei den Kommandeuren, die in keiner solchen Schlacht gewirkt haben, eine 0 (Null) anzeigt.


mit einer If Abfrage. Oder aber Du trägst eine 0 als Standard in die Tabelle ein. Poste mal deinen SQL Code der Abfrage hier rein, dann korigier ich Dir das. Also Ansicht SQL, dann kopierst Du den gesamten Code und stellst ihn als Code hier rein. Ferner musst Du mir noch sagen, ob Commanders in service und Soldiers killed in action Zahlenfelder oder Textfelder sind.

Gruß marie
0 Punkte
Beantwortet von marie Experte (2k Punkte)
Das mit den Statustexten hätte ich mir eher so vorgestellt, dass mann den Benutzer auf die Eingabe dieser vier Wörter ("none", "weak", "good" und "strong") beschränkt. Diese beschreiben die Verteidigungsstärke einer Region. Die Tabelle dafür sieht so aus:


das ist auch ganz einfach, wenn in der gesamten Tabelle nur die vier Wörter vorkommen dürfen, dann schreibst Du in der Entwurfsansicht der Tabelle unter Gültigkeitsregel:

"none" Oder "weak" Oder "good" Oder "strong", dann kommt eine Fehlermeldung wenn jemand etwas anderes eintragen will. Dann kann aber auch kein Datensatz ohne Eintrag in dem Feld abgespeichert werden, es sei denn Du schreibst noch dahinter Oder Ist Null. Unter "Gültigkeitsmeldung schreibst Du dann den Text, der als meldung erscheinen soll, also zum Beispiel "Bitte nur "none", "weak", "good" oder "strong" eintragen.

gruß marie
0 Punkte
Beantwortet von
Antwort zu 1:

SELECT Commanders.Name, Commanders.Surname, Count(Battles.Commanders.Value) AS CountOfCommanders_Value
FROM Commanders INNER JOIN Battles ON Commanders.Name = Battles.Commanders.Value
GROUP BY Commanders.Name, Commanders.Surname
HAVING (((Battles.[Soldiers killed in action])>1000));

Commanders in service und soldiers killed in action sind beides "Look up Wizard" Felder mit Bezug auf einer anderen Tabelle.
0 Punkte
Beantwortet von
Anwort auf 2:

Problem gelöst! Danke für den guten Vorschlag! :)
0 Punkte
Beantwortet von
Frage 3: Das Formular

Des weiteren müsste ich ein "form" erstellen (Ich glaube in der deutschen Access Version heißt es "Formular"), welches mir die Kommandeure anzeigt, und eine Liste mit den Schlachten an denen jeder einzellne teilgenommen hat. Ich krieg's nicht hin, weil ich immer nur den ersten Namen angezeigt bekomme und darunter eine Liste "a la Screenshot" mit allen Schlachten die in der "Battles" Tabelle drinstehen anstatt nur jene die dieser bestimmte Kommandeur gefochten hat.
0 Punkte
Beantwortet von marie Experte (2k Punkte)
Ich würde jetzt gerne die Namen aller Kommandeure anzeigen lassen und die Anzahl der Schlachten an denen sie teilgenommen haben, wo mehr als 1000 Soldaten gestorben sind. Jetzt weiß ich zwar wie ich die Kommandeure anzeigen lasse die an einer Schlacht mit ">1000 [Soldiers killed in action]" teilgenommen haben, ich krieg's nur nicht gebacken, dass mir die Abfrage bei den Kommandeuren, die in keiner solchen Schlacht gewirkt haben, eine 0 (Null) anzeigt.


Das habe ich überhaupt nicht verstanden. Wo soll eine 0 angezeigt werden? Ich dachte Du willst nur die >1000, da kann doch nirgendwo eine 0 sein???

Und äh, helfe ich Dir da gerade ein Gemetzelspiel zu programmieren??? :-(
0 Punkte
Beantwortet von marie Experte (2k Punkte)
zu 3 kann ich Dir auch keine Antwort geben, weil ich nicht weiss was Du gemacht hast und nicht genau was Du willst. Da müsstest Du schon genauer formulieren wie das Formular aussehen soll und was weshalb nicht funktioniert.

Gruß Marie
0 Punkte
Beantwortet von
Zu 2:

Nene, keine Sorge, dass is nur ne historische Datenbank für ein Projekt an der Uni.
Also, das mit der 0 war so gemeint:
Wenn ich die Abfrage anschauhe, dann zeigt es mir nur jene Feldherren an die in einer Schlacht gewirkt haben, bei der es mehr als 1000 Gefallene gegeben hat (es wird dann die Anzahl dieser Schlachten neben dem Namen angezeit). Demensprechend zeigt es mir aber jene Feldherren die keine so hohen Verluste hatten nicht an. Hier käme jetzt die Null (0) ins Spiel. Ich muss notwendigerweise mir alle Feldherren anzeigen lassen (hat mir mein Prof. so vorgeschrieben). Da aber von 117 nur 87 in Schlachten mit mehr als 1000 Gefallenen mitgewirkt haben, ist meine Liste unvollständig und ich würde gerne neben den anderen 30 eine einfache 0 bei der Anzahl stehen haben.
Klar soweit?

Danke
Gruß, Main
...