Papyrus Base

Hallo!

Vielleicht kann mir hier im Forum mal jemand zu folgendem Problem einen Tipp geben.

In einer Datenbanktabelle habe ich u.a. 2 Felder - nennen wir sie “Städte” und “Länder”.

Folgendes soll passieren: Im Feld “Länder” soll innerhalb eines Datensatzes das Kürzel ‘GB’ eingetragen werden, wenn der Eintrag in dem Feld “Städte” nicht ‘Bremen’ oder ‘Berlin’ lautet.

Wie das für funktioniert, wenn ich nur einen Begriff nehme, habe ich herausgefunden:

Ich trage als Rechenfunktion unter Feldeigenschaften folgendes ein:

IF Städte !== ‘Bremen’ THEN ‘GB’ (aber dann wird natürlich bei den Datensätzen mit dem Eintrag ‘Berlin’ auch ‘GB’ eingetragen).

Wie bekomme ich es jetzt hin, dass das sowohl bei ‘Bremen’ als auch bei ‘Berlin’ ausgeschlossen wird? Ich habe ein wenig mit Vergleichsoperatoren rumprobiert (OR bzw. XOR, AND), aber funktioniert hat das alles nicht.

Da ich so gut wie keine Ahnung vom Programmieren habe und mich mit den Termini ziemlich schwer tue, hoffe ich trotzdem, dass meine Frage einigermaßen verständlich ist.

Andreas

Hallo Andreas J.

Damit Ostern auch für Dich gut verläuft…:wink:

Ich habe Dir eine kleine Datenbank erstellt und lade sie als ZIP-Archiv hoch. (Ich hoffe, ich die Aufgabe richtig verstanden.)

DBAndreasJ.zip (1.79 KB)

Ja - prima!

Genauso meine ich es.

Herzlichen Dank.

Gibt es eigentlich irgendwo im Internet eine Seite, auf der solche Datenbankbefehle etwas ausführlicher erklärt werden, auch an Hand von Beispielen?

Für einen, wie mich, ist die tabellarische Auflistung der Befehle mit den kurzen Erklärungen doch etwas zu wenig, um das dann auch umzusetzen.

Frohe Ostern und herzliche Grüße

Andreas

( IF Staedte == ‘Bremen’ THEN MISSING ELSE IF Staedte == ‘Berlin’ THEN MISSING ELSE ‘GB’)

Hm, nach meinem Geschmack ist das eine recht komplizierte Logik. Warum nicht einfach so wie folgendes?

IF NOT (Staedte == ‘Bremen’ OR Staedte == ‘Berlin’) THEN ‘GB’

Da ist nicht viel Datenbank-spezifisches in Papyrus zu finden. Du brauchst eigentlich nur eine allgemeine Einführung in ein paar Programmiergrundlagen mit Zahlen, Strings, Vergleichsoperatoren etc. Hier gibt es sowas z.B. in englisch für die Sprache Ruby: pine.fm

Hallo Andre.

Deine Formel brilliert - wichtig ist, wir haben beide geholfen.

Also brillant würde ich die Formel nicht nennen, zumal sie nur mit vielen Wiederholungen erweiterbar ist (wenn z.B. noch drei weitere Städte in den Vergleich rein müssen). Aber folgendes wäre u.U. eine elegante Lösung für sagen wir mehr als 3 Städte:

IF NOT (INSTR(‘Bremen, Berlin’, Staedte)) THEN ‘GB’

(ungetestet, müsste aber gehen)

Also, in meiner Datenbank geht es tatsächlich nur um 2 Begriffe, die ausgeschlossen werden müssen (das mit den Städten habe ich als allgemeinverständliches Beispiel konstruiert). Und die Lösungen, die vorgeschlagen wurden, helfen mir. Das ist die Hauptsache.

Ihr glaubt gar nicht, wie lange ich auf so ein Forum gewartet habe, um gerade für solche Fälle Lösungshilfen zu bekommen.

Super und Danke

Das wird mit Sicherheit nicht das letzte Problem sein, für das ich gerade bei Arbeit mit der Datenbank eine Lösung brauche.

Andreas

Hallo Andre.

Ich habe die die DB „Andreas“ um die Tabelle „StadtName“ - sie besteht aus nur einem Datenfeld „Stadt“ - erweitert.

Dann eine Relation zum Datenfeld „Staedte“ hergestellt und Deine Formel

// IF NOT (INSTR(‘Bremen, Berlin’, Staedte)) THEN ‘GB’ //

gecheckt. (Weil Du ja mitgeteilt hast, sie sei ungetestet - da hätte ich Nachts 01:00 Uhr auch keine Lust zu gehabt…)

Sie funktioniert und hat intern bei mir den „Platin-Stempel“ erhalten.:wink:

Übrigens - ich bin von Beruf Pastor! Da verläuft Ostern für mich immer gut. :slight_smile: :slight_smile:

Aber das Osterei, dass Du mir jetzt ins Nest gelegt hast, hat natürlich eine ganz besondere Qualität.

L.G

Andreas

Moin,

ich nutze mal diesen Thread für eine Formelfrage.

Allgemein muß ich sagen, daß ich das sehr schwierig finde … nunja.

Also, ich möchte in einem Datenbankformular (für eine Rollenspielcharaktererschaffung) erreichen, daß in einem Feld bestimmte Werte auftauchen, wenn ich im Feld davor einen Wert eingeben habe. Konkret sieht es so aus:

Wenn ich den Wert “1” eingebe, soll im anderen Feld eine “2” erscheinen.

Wenn ich den Wert “2” eingebe, soll im anderen Feld eine “2” erscheinen.

Wenn ich den Wert “3” eingebe, soll im anderen Feld eine “2” erscheinen.

Wenn ich den Wert “4” eingebe, soll im anderen Feld eine “3” erscheinen.

Wenn ich den Wert “5” eingebe, soll im anderen Feld eine “3” erscheinen.

Wenn ich den Wert “6” eingebe, soll im anderen Feld eine “3” erscheinen.

7=4

8=4

9=4

usw. …

Wie kann ich das erreichen?

Gruß,

Errol :slight_smile:

ausgabe = 2 + trunc((eingabe-1) / 3)

Scheint, als hätte ich’s:

IF GES = 1 THEN 2 ELSE IF GES = 2 THEN 2 ELSE IF GES = 3 THEN 2 ELSE

IF GES = 4 THEN 3 ELSE IF GES = 5 THEN 3 ELSE IF GES = 6 THEN 3 ELSE

IF GES = 7 THEN 4 ELSE IF GES = 8 THEN 4 ELSE IF GES = 9 THEN 4 ELSE

IF GES = 10 THEN 5 ELSE IF GES = 11 THEN 5 ELSE IF GES = 12 THEN 5 ELSE

IF GES = 13 THEN 6 ELSE IF GES = 14 THEN 6 ELSE IF GES = 15 THEN 6 ELSE

IF GES = 16 THEN 7 ELSE IF GES = 17 THEN 7 ELSE IF GES = 18 THEN 7 ELSE

IF GES = 19 THEN 8 ELSE IF GES = 20 THEN 8 ELSE IF GES = 21 THEN 8 ELSE

IF GES = 22 THEN 9 ELSE IF GES = 23 THEN 9 ELSE IF GES = 24 THEN 9 ELSE

IF GES = 25 THEN 10 ELSE IF GES = 26 THEN 10 ELSE IF GES = 27 THEN 10

ENDIF

Gruß,

Errol :slight_smile:

Die Formel oben macht das gleiche und ist ein gutes Stück kürzer. Du müsstest sie nur an Deine Variablennamen anpassen: 2 + trunc((GES-1) / 3)

Moin,

würde ich ja gerne, aber mir wird von Dir ein leerer Beitrag angezeigt …

Ansonsten GERNE, HER DAMIT :slight_smile:

Gruß und schönen Sonntag,

Errol

Augen aufmachen! Die Formel steht in der Betreffzeile des leeren Beitrags … :wink:

Ah, okay … es klingt sicherlich schwach, wenn ich sage, daß das nicht sehr übersichtlich designed ist, oder? rotwerd

However … kannst Du mir die Formel auch erklären? Mein Algebra ist ein wenig eingerostet …

“2 + trunc((GES-1) / 3)”

“ausgabe” brauche ich nicht?

Und kann man Variablen nicht nur im Voreinstellungsfeld benutzen? Spielt das überhaupt eine Rolle? Gibt es eine Seite, ähnlich wie selfhtml.org, wo ich mir sowas gut beibringen kann, so für Doofis?

Gruß,

Errol

Da man jeden Beitrag durch Anklicken seines Titels aufruft, dachte ich mir, dass sei auffällig genug … :wink:

trunc() ist eine Funktion, die von einer Dezimalzahl nur den Teil vor dem Komma liefert. Was also genau passiert, zeigt am besten folgende Tabelle:

GES GES-1 (GES-1)/3 trunc((GES-1)/3) 2 + …

1 0 0 0 2
2 1 0.33 0 2
3 2 0.67 0 2
4 3 1.00 1 3
5 4 1.33 1 3
6 5 1.67 1 3
7 6 2.00 2 4
8 7 2.33 2 4
9 8 2.67 2 4
10 9 3.00 3 5

Nein, es sei denn, Du willst mit dem Ergebnis noch weiter rechnen.

Nein, auch im Formelfeld oder in Papyrus-Dokumenten in Tabellen-Rechenfeldern oder in Reports in Datenfeldern. Überall wo papyrus etwas rechnen kann.

Ich kenne keine. Die Papyrus-Hilfe enthält nur eine kurze Beschreibung der Funktionen. Die Verwendung orientiert sich an üblichen Programmiersprachen, wie Basic oder PHP. Du könntest also nach einem Basic- oder PHP-Kurs Ausschau halten und das dort gelernte auf Papyrus übertragen.