Papyrus Autor
Willkommen im Forum

Startseite » Papyrus allgemein » Noch besser machen » Message Box in Datenbank
Message Box in Datenbank [Beitrag #10053] Mi, 28 März 2012 17:25 Zum nächsten Beitrag gehen
blake
Beiträge: 273
Registriert: Januar 2008
Senior Member
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.

[Aktualisiert am: Mi, 28 März 2012 17:28]

Den Beitrag einem Moderator melden

Re: Message Box in Datenbank [Beitrag #10054 ist eine Antwort auf Beitrag #10053] Mi, 28 März 2012 18:47 Zum vorherigen Beitrag gehenZum nächsten Beitrag gehen
dotpap ist gerade offline  dotpap
Beiträge: 401
Registriert: Januar 2008
Ort: Chemnitz
Senior Member
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.


Gerd
Ihr "papyrus" kann mehr.
papyrus Office 17.10 & papyrus Autor 6.05 WinXP/SP3

Re: Message Box in Datenbank [Beitrag #10055 ist eine Antwort auf Beitrag #10054] Mi, 28 März 2012 20:39 Zum vorherigen Beitrag gehenZum nächsten Beitrag gehen
blake
Beiträge: 273
Registriert: Januar 2008
Senior Member
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!
Re: Message Box in Datenbank [Beitrag #10059 ist eine Antwort auf Beitrag #10054] Do, 29 März 2012 18:26 Zum vorherigen Beitrag gehenZum nächsten Beitrag gehen
blake
Beiträge: 273
Registriert: Januar 2008
Senior Member
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?

[Aktualisiert am: Do, 29 März 2012 18:28]

Den Beitrag einem Moderator melden

Re: Message Box in Datenbank [Beitrag #10061 ist eine Antwort auf Beitrag #10059] Do, 29 März 2012 19:38 Zum vorherigen Beitrag gehenZum nächsten Beitrag gehen
dotpap ist gerade offline  dotpap
Beiträge: 401
Registriert: Januar 2008
Ort: Chemnitz
Senior Member
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')



Gerd
Ihr "papyrus" kann mehr.
papyrus Office 17.10 & papyrus Autor 6.05 WinXP/SP3

Re: Message Box in Datenbank [Beitrag #10063 ist eine Antwort auf Beitrag #10061] Do, 29 März 2012 19:51 Zum vorherigen Beitrag gehen
blake
Beiträge: 273
Registriert: Januar 2008
Senior Member
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.

[Aktualisiert am: Do, 29 März 2012 19:51]

Den Beitrag einem Moderator melden

Vorheriges Thema: Bilder proportional skalieren
Nächstes Thema: Anzeige einzelner Seiten drehen
Gehe zum Forum:
  


aktuelle Zeit: Mi Jun 19 18:19:07 CEST 2013

Insgesamt benötigte Zeit, um die Seite zu erzeugen: 0.01511 Sekunden