Message Box in Datenbank

In meiner Datenbank habe ich ein Feld, das sehr wichtig ist, aber in der Hektik auch einmal vergessen werden kann. Ich möchte nun verhindern, das ein Report ausgegeben wird, obwohl das Feld leer ist. Die grosse Frage:

Wie ist die korrekte Formel, wenn das Feld “Beispiel” heisst und der Message Typ (z.B.) “1-Beachte” sein soll?

Alles was ich gefunden habe stand in der History 2008:

• ABORT(Fehlertext) bricht den Datenbankreport nach Ausgabe einer messagebox ab. Es (wird?) nicht gedruckt und keine E-Mail versandt. Im Fehlertext kann mit ‘|’ ein Zeilenumbruch erzwungen werden. Beispiel: ABORT(‘Fehler im Datenbankreport.|Keine E-Mail-Adresse definiert.’)

• MESSAGEBOX(Typ, Anzeigetext, Button-Texte) zeigt eine messagebox an.

Typ zeigt verschiedene Icons an 0 - kein Icon; 1 - Beachte (Ausrufezeichen); 2 - Abfrage (Fragezeichen); 3 - Stopp (Stoppschild), 4 - Info

Anzeigetext - Text der messagebox. Mit ‘|’ kann ein Zeilenumbruch erzwungen werden.

Button-Texte - Texte der Schaltflächen. Verschiedene Schaltflächen werden durch ‘|’ abgetrennt.

Wenn man einen leeren String übergibt, wird ein Default-Button erzeugt: “OK” für Typen 0, 1, 4, “Abbruch” für Typ 3, “OK|Abbruch” für Typ 2

Rückgabewert ist der ausgewählte button: 0 für den Ersten, 1 für den 2. usw. Wenn man Esc drückt oder den Schließknopf betätigt, wird der Wert für den letzten Button zurückgegeben.

Unter Windows wird der erste button links angezeigt, unter MacOS rechts.

Beispiel: IF 0=MESSAGEBOX(2, ‘Kein Name festgelegt.|Fortfahren oder Abbrechen?’, ‘Fortfahren|Abbrechen’) THEN ABORT(‘Report wird abgebrochen.’)

Die Syntax und die Definition sind mir schon klar, aber mit dem Beispiel kann ich für meine Zwecke so gar nichts anfangen, wenn ich die MESSAGEBOX und den ABORT an eine Bedingung knüpfen will.

Auch das mit den Rückgabewerten und den Umgang damit verstehe ich noch nicht. Muss ich da eine Variable definieren und den ABORT von dessen Wert abhängig machen?

Es wäre mir schon sehr geholfen, wenn hier jemand einfach mal so die erforderliche Formel hinschreibt, dann kann ich das bestimmt nachvollziehen.

Hallo blake.

Ich würde es so machen: siehe Dateianlage

Das Beispiel zeigt, wie der Anwender darauf aufmerksam gemacht werden könnte, wenn er versucht einen Wert aus dem DB-Feld „Beispiel“ zu kopieren, der evtl. vergessen wurde einzugeben.

Message_Feldzustand.zip (3.76 KB)

Uaah.! Toll.

Das muss ich jetzt erst mal “verdauen”: Auf den ersten Blick ist es genau die Funktionalität die ich suchte, nur kapieren tu´ ichs auf Anhieb jetzt doch nicht. Aber das bekomme ich sicherlich noch hin…

Auf jeden Fall erst mal ein dickes Dankeschön!

Hmm, es ging mir auch um den Befehl ABORT. In deiner Lösung - die natürlich funktioniert - muss ich erst einen weiteren Report “vorschalten”, der die MESSAGEBOX aufruft. Wenn alles stimmt, soll keine MESSAGEBOX erscheinen sondern der Report direkt ausgeführt werden.

Mir ist aber an einer Lösung gelegen, die im Report selbst checkt, ob der Report überhaupt ausgeführt werden soll (Sonst muss ich ja immer zwei Reporte statt einem programmieren)

Mit ABORT müsste sich das doch im Report selbst definieren lassen, oder?

Hallo blake.

Hm…so richtig ist mir jetzt nicht klar was Du möchtest.

Der Standardreport “Test1.pap” prüft doch, ob der Hilfsreport "ZwAblg) überhaupt ausgeführt wird. Er wird nur ausgeführt, wenn es etwas zum Kopieren gibt, ansonsten kommt halt der Abbruch.

Vielleicht so …? Ist aber fast das Gleiche:

Bearbeite den Standard-Report “Test1.pap”.

Voraussetzung:

im DB-Ordner “Reports” der DB muss der Report “ZwAblg.pap” liegen.

Er soll diese zwei Datenbankfelder enthalten:

Datenfeld:

IF LENGTH(Beispiel) = 0 THEN ABORT(‘Fehler. Das DB-Feld BEISPIEL hat keinen Wert.’)

Datenfeld:

IF LENGTH(Beispiel) > 0 THEN REPORT(‘ZwAblg.pap’) +

MESSAGEBOX(1, ‘Der Inhalt aus dem DB-Feld BEISPIEL wurde soeben in die ZwAblg. kopiert.’, ‘OK’)

Aha.

Beim Abbruch durch eine erfüllte Bedingung bei ABORT kommt die (ABORT-eigene) Messagebox sowieso?

Und MESSAGEBOX kommt immer so, wie es definiert ist? Es sei denn, es wird abgebrochen?

OK, dann glaube ich, ich habs verstanden. Ich wollte den Report abbrechen lassen UND eine MESSAGEBOX anzeigen lassen, das war dann wohl doppelgemoppelt.