Autor Thema: Aktion funktioniert nicht..  (Gelesen 2813 mal)

feel_x

  • Gast
Aktion funktioniert nicht..
« am: 11.06.03 - 17:25:04 »
und ich weiß partout nicht, warum sie nicht will.

Feld ist zugewiesen,
Sendinfomail1 und Sendinfomail2 auch..
ich benutze @Do, weil sich @commands nicht per "&" verknüpfen lassen.

wenn ich die Aktion ausführe, bekomme ich die Meldung:
"Ein anderer Benutzer hat das Dokument zur selben Zeit geöffnet.."

An weiteren Maskenskripten kann es nicht liegen, da ist nichts mehr drin..
Hat jemand eine Idee?
 :-\


@If((Datum_von-@Today)>=0;
@Do(@SetField("Endstatus";"4");@Prompt ([OK];"OK";"Stornierung erfolgreich. Der Teilnehmer, dessen Anmeldung storniert wurde, wird in Kürze eine Stornobestätigung per eMail bekommen."); sendinfomail2; sendinfomail2; @Command([FileSave]); @Command([FileCloseWindow]));
@Do(@SetField("Endstatus";"7");@Prompt ([OK];"OK";"Stornierung erfolgreich. Der Teilnehmer, dessen Anmeldung storniert wurde, wird in Kürze eine Stornobestätigung per eMail bekommen.");
sendinfomail1; sendinfomail2; @Command([FileSave]); @Command([FileCloseWindow])))

« Letzte Änderung: 11.06.03 - 17:25:48 von feel_x »

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Aktion funktioniert nicht..
« Antwort #1 am: 11.06.03 - 21:38:27 »
... wenn du mit @SetField arbeitest, musst du zuvor die Felder initialisieren...

Field FeldName1 := Feldname1;

... erst dann lässt sich @SetField problemlos nutzen...

... ansonsten muss ich mir deine Formel erst mal aufdröseln, so lässt sie sich nicht gut lesen und verstehen...

ata
Grüßle Toni :)

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Aktion funktioniert nicht..
« Antwort #2 am: 11.06.03 - 21:56:27 »
... ich habe mir deinen Code strukturiert...

Code
_meldung1 := "Stornierung erfolgreich. Der Teilnehmer, dessen Anmeldung storniert wurde, wird in Kürze eine Stornobestätigung per eMail bekommen.";

_meldung2 := "Stornierung erfolgreich. Der Teilnehmer, dessen Anmeldung storniert wurde, wird in Kürze eine Stornobestätigung per eMail bekommen.";

FIELD Endstatus := Endstatus;

@If(
    (Datum_von - @Today)>=0;
      @Do(@SetField("Endstatus";"4");
          @Prompt ([OK];"OK";_meldung1); 
          sendinfomail2; 
          sendinfomail2; 
          @Command([FileSave]); 
          @Command([FileCloseWindow])
         );
      @Do(@SetField("Endstatus";"7");
          @Prompt ([OK];"OK";_meldung2);
          sendinfomail1; 
          sendinfomail2; 
          @Command([FileSave]); 
          @Command([FileCloseWindow])
         )
    )

... was bezweckst du mit den Zeilen sendinfomail1 und sendinfomail2?

... machen 2 gleiche Meldungen hier Sinn?

... der einzigste Unterschied in der Verzweigung ist die Zuweisung des Feldes...

... die Meldung, die du erhälst, kann ich diesem Code nicht zuordnen, die deutet ihrer Aussage nach auf etwas ganz anderes hin - hast du so etwas wie ein Doc-Locking eingebaut, und es liegt noch ein Sperrdokument vor - gibt es etwas im QuerySave der Maske oder einer Teilmaske?

... der Code in deinem Beispiel lässt sich auch ohne @SetField umsetzen

Code
_meldung := "Stornierung erfolgreich. Der Teilnehmer, dessen Anmeldung storniert wurde, wird in Kürze eine Stornobestätigung per eMail bekommen.";

FIELD EndStatus := @If((Datum_von - @Today)>=0; "4" ; "7" );
@Prompt([OK];"OK";_meldung) ;
@Command([FileSave]); 
@Command([FileCloseWindow])

... entspricht deinem Code ohne @SetField...

ata
Grüßle Toni :)

feel_x

  • Gast
Re:Aktion funktioniert nicht..
« Antwort #3 am: 12.06.03 - 10:28:26 »


... was bezweckst du mit den Zeilen sendinfomail1 und sendinfomail2?
... machen 2 gleiche Meldungen hier Sinn?
... der einzigste Unterschied in der Verzweigung ist die Zuweisung des Feldes...
... die Meldung, die du erhälst, kann ich diesem Code nicht zuordnen, die deutet ihrer Aussage nach auf etwas ganz anderes hin - hast du so etwas wie ein Doc-Locking eingebaut, und es liegt noch ein Sperrdokument vor - gibt es etwas im QuerySave der Maske oder einer Teilmaske?

... der Code in deinem Beispiel lässt sich auch ohne @SetField umsetzen

Code
_meldung := "Stornierung erfolgreich. Der Teilnehmer, dessen Anmeldung storniert wurde, wird in Kürze eine Stornobestätigung per eMail bekommen.";

FIELD EndStatus := @If((Datum_von - @Today)>=0; "4" ; "7" );
@Prompt([OK];"OK";_meldung) ;
@Command([FileSave]); 
@Command([FileCloseWindow])

... entspricht deinem Code ohne @SetField...

ata



sendinfomail1 und sendinfomail2 sind definiert:

sendinfomail1:=
@MailSend(AnmeldungErsteller;"";"";"Stornierung der Seminar-Anmeldung zu \'"+(Seminartitel)+" durch die DB-Manager";"";

"Guten Tag, "+@Name([CN];AnmeldungErsteller)+@NewLine+
"Ihre Anmeldung zum Seminar \'"+(Seminartitel)+"\' wurde durch die Datenbankmanager storniert."+@NewLine+
"für weitere Informationen kontaktieren Sie bitte Ihren Prof oder die Datenbankmanager."
+@NewLine+
"Wir danken Ihnen für die Nutzung der Seminarverwaltung."
+@NewLine ; "");

und Sendinfomail2 eine andere mail.
zwei gleiche Meldungen machen hier keinen Sinn, das stimmt,
so wie Du's machst, schaut das viel einfacher aus..

Nein, kein Querysave, nur ein Postsave, das ändert aber nur Felder im $Ref-Dokument.


FIELD geplantePlaetze:="geplantePlaetze";
FIELD gebuchtePlaetze:="gebuchtePlaetze";

geplant:= @DbLookup("":"NoCache";"":"";"(ListeAnmeldestatusGeplant)";DokumentID;1);
anzahlgeplant:= @If(@IsError(geplant);0;@Elements(geplant));
@SetDocField($Ref;"geplantePlaetze";anzahlgeplant);

gebucht:= @DbLookup("":"NoCache";"":"";"(ListeAnmeldestatusGebucht)";DokumentID;1);
anzahlgebucht:= @If(@IsError(gebucht);0;@Elements(gebucht));
@SetDocField($Ref;"gebuchtePlaetze";anzahlgebucht);



ich teste mal Deine Formel :)
Danke für den Tipp.

wieso sollte man eine Feldzuweisung verwenden und nicht @SetField?


felix
« Letzte Änderung: 12.06.03 - 10:31:28 von feel_x »

Offline harkpabst_meliantrop

  • Senior Mitglied
  • ****
  • Beiträge: 463
  • Geschlecht: Männlich
  • I love!
    • Heute schon gelebt?
Re:Aktion funktioniert nicht..
« Antwort #4 am: 12.06.03 - 11:16:04 »
Hmmm, sendinfomail1, sendinfomail2?

Selbstdefinierte Funktionen in @Formelsprache? Hab ich was verpasst??

klaussal

  • Gast
Re:Aktion funktioniert nicht..
« Antwort #5 am: 12.06.03 - 11:18:26 »
... scheint so ;D
... ich aber auch  ::)

feel_x

  • Gast
Re:Aktion funktioniert nicht..
« Antwort #6 am: 12.06.03 - 11:34:07 »
Hmmm, sendinfomail1, sendinfomail2?

Selbstdefinierte Funktionen in @Formelsprache? Hab ich was verpasst??

Damn..
ich wollte gerade sagen Neehee, das funktioniert doch in anderen Formeln ahauch.. tut's aber gar nicht.
Keine Ahnung, wie ich auf diese Vorgehensweise komme.

:)

Ich hab mich schon gewundert, dass die Mails völlig einwandfrei verschickt werden.. bei jedem Event
*g*


feel_x


Offline harkpabst_meliantrop

  • Senior Mitglied
  • ****
  • Beiträge: 463
  • Geschlecht: Männlich
  • I love!
    • Heute schon gelebt?
Re:Aktion funktioniert nicht..
« Antwort #7 am: 12.06.03 - 11:41:35 »
Hehe, immerhin ist das völlig gültiger @Formel-Code. :)

Macht eben nur nicht, was du erwartest. Vermutlich dürften sendinfomail1 und 2 sogar einen Wert haben, nämlich 1 oder 0 (@True oder @False), je nach Rückgabewert von @MailSend. Aber nutzt auch nichts ...

Du kannst natürlich @SetField verwenden, aber wozu? Wie ata ja schon erwähnte, musst du, damit @SetField zuverlässig funktionert sowieso vorher einmal FIELD Feldname := Feldname aufrufen. Und wenn man da gleich den richtigen Wert eintragen kann, warum nicht? Der Code wird statisch kürzer und besser lesbar.

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Aktion funktioniert nicht..
« Antwort #8 am: 12.06.03 - 11:52:52 »
... wie harkpapst schon gepostet hat - der Code ist deutlich leichter erfassbar und nicht so fehlernanfällig...

... Wenn du deine Mailingaktion noch einbauen willst, dann könntest dies mit einer weiteren Verzweigung erreichen...

... @Do hat noch den Haken, daß nicht alle Befehle damit abarbeitbar sind. Wenn ich es irgendwie vermeiden kann, verzichte ich drauf...

ata
Grüßle Toni :)

feel_x

  • Gast
Re:Aktion funktioniert nicht..
« Antwort #9 am: 12.06.03 - 11:57:23 »

Code
_meldung := "Stornierung erfolgreich. Der Teilnehmer, dessen Anmeldung storniert wurde, wird in Kürze eine Stornobestätigung per eMail bekommen.";

FIELD EndStatus := @If((Datum_von - @Today)>=0; "4" ; "7" );
@Prompt([OK];"OK";_meldung) ;
@Command([FileSave]); 
@Command([FileCloseWindow])

... entspricht deinem Code ohne @SetField...

ata



:(

ich bekomme immer noch die Meldung:
"Ein anderer Benutzer hat dieses Dokument zur gleichen Zeit geändert"


Nochwas zum Thema "Selbstdefinierte Funktionen in Formelsprache":
In einem berechneten Feld "gebuchtePlaetzeAnmeldung" habe ich eine berechnung zu den gebuchten Anmeldedokumenten:

_result:=
          @DbLookup("":"NoCache";"":"";"(ListeAnmeldestatusGebucht)";DokumentID;1);
@If(@IsError(_result);0;@Elements(@Text(_result)))

ist das dann auch Müll? Nee, ist ja ne Feldberechnung, keine Aktion.
Oder könnte das für die Fehlermeldung verantwortlich sein?
In einem zweiten Feld wird dieser Wert in einer Eingabevalidierung geprüft:

@If(@IsNewDoc&(gebuchtePlaetzeAnmeldung>=Maximum_Plaetze);@Failure("Dieses Seminar ist bereits voll belegt und kann nicht mehr gebucht werden.");@Success)
Macht diese Validierung vielleicht das Problem? Maximum_Plaetze wird beim Anlegen aus dem $Ref-Dokument geholt und funktioniert auch.


feel_x


Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Aktion funktioniert nicht..
« Antwort #10 am: 12.06.03 - 20:48:04 »
... häng doch den Vorgang in einer abgespeckten DB hier ins Forum. Ich kann mir zu deiner Fehlermeldung keinen Reim machen. Mit deinen hier geposteten Formeln hängt das denke ich nicht zusammen.

... oder versuche @Prompts einzubauen, um zu lokalisieren, wo genau der Fehler auftritt...

... zu deinen Fragen:
Mit dem DBLookup ziehst du Werte in eine Variable - das ist keine benutzerdefinierte Funktion im Sinne von LS, sondern einfach eine Zuweisung von Werten in eine Variable

... die Valdierung hat nichts mit einem Speicherprozess zu tun. Irgenwie laufen bei dir 2 getrennte Speicherungen ab...

ata
Grüßle Toni :)

feel_x

  • Gast
Re:Aktion funktioniert nicht..
« Antwort #11 am: 13.06.03 - 10:15:43 »

Oki, ich häng die mal rein.

Es geht um die gemeinsage Aktion "Stornierung durch Personalabteilung", die man im Gliederungseintrag "Anmeldungsverwaltung" unter "geplant" und "gebucht" als Aktion findet.

unter "Archiv" - "Alle Anmeldungen" kann man die Dokumente alle sehen und ggfs. den Status von Anmeldungen ändern:
Ganz unten im Anmeldungsdokument finden sich Anmeldestatus und Endstatus.

Das interessante ist, dass man als Teilnehmer sein eigenes Seminar stornieren kann (Meine Seminare - aktuelle - zur stornierung - Anmeldung stornieren)
die Aktion dafür ist in der Maske "Anmeldung"


.. die DB funktioniert sonst schon ganz gut..
die Orts- und Trainer-Links in der Anmeldung müssen allerdings auf jedem server neu erzeugt werden, also einmal editieren.


Viel Spass allen, die reingucken wollen :)
ich hab mal alle hide-when-Formeln rausgenommen;
trotzdem sollte man in der ACL vielleicht besser die drei Rollen Boss, Teilnehmer und Manager für den aktuellen User auswählen.
« Letzte Änderung: 13.06.03 - 10:24:40 von feel_x »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz