Probleme mit R5...

  • Hi,


    meine neue Datenbank läuft auf R6 einwandfrei, ein Kollege hat aber noch R5 und der hat beim Speichern von Dokumenten Probleme. Zwar konnte ich die eine oder andere Fehlerquelle schon ausschalten, aber das Probem ist immer noch nicht gelöst und ich kann nichts mehr finden. Ein blöder Nebeneffekt ist, ich kann nicht jedes mal meinen Kollegen von seiner R5-Kiste vertreiben um nachzusehen, ob es jetzt geht.


    Wie kann man sowas am besten lösen? Gibt es sowas wie einen R5-kompatibilitätstest? Wie kann man sich bei Fehlern in FormelScripts die Fehlerzeile anzeigen lassen?


    Grüsse

  • Hi,


    höchstwahrscheinlich befindet sich mein Problem im QuerySave. Ich poste einfach mal den Code/Formel, vielleicht sieht jemand von euch den Fehler...



    -------------------------------------------------------------
    FIELD Saveoptions := "1";


    @If(MachineOwner = MachineOwnerOld ; @Return( "" ) ; "" );


    @If(MachineOwnerOld = ""; newLine := "Original Owner: " + @Name( [CN] ; MachineOwner ) + " since " + @Text( @Now );


    newLine := "Owner changed to " + @Name( [CN] ; MachineOwner ) + " on " + @Text( @Now ));


    FIELD MachineOwnerHistory := MachineOwnerHistory : newLine;


    FIELD MachineOwnerOld := MachineOwner;


    @If(@IsNewDoc; Nothing; @Return(""));


    @If(@IsMember(MachineName; @DbColumn("Notes" : "NoCache" ;
    @DbName; "machinesview" ; 1 ));Nothing;@Return(""));
    @Prompt([Ok]; "Name already exists!"; "The MachineName you have entered already existed in this Database. Please make sure that this is correct and delete one of the machines if neccessary!")
    ----------------------------------------------------------------


    Tja, soviel dazu. Beim Speichern kommt dann nur die Fehlermeldung: "Invalid Formula: Unknown Function/Operator!"
    Was ja bedeuten müsste, das dem R5 irgendwas hierdrin unbekannt vorkommt...


    Grüsse

  • Hi dnotes,


    habe mal das ganze Script mit Prompts versehen und dabei festgestellt, dass R5 schon an der zweiten Zeile, also bei


    @If(MachineOwner = MachineOwnerOld ; @Return( "" ) ; "" );


    scheitert! Zunächst dachte ich es liegt gerade an dem "" und habe es durch Nothing ersetzt, aber der gleiche Fehler wieder!


    ...am @Return kanns doch nicht liegen, oder?


    ...oder an den Blanks?


    ...die Felder müssten eigentlich in Ordnung sein und selbst wenn, wäre dann eine andere Fehlermeldung zu erwarten...


    .. ich komm nicht drauf!


    Grüsse

  • Das Problem dass du hast sind die Zuweisungen innerhalb einer @If Formel.
    Dies geht erst ab Version 6.
    Ein Konstrukt wie @If(Bedingung;Field := Wert;Field := Wert2);
    funktioniert unter 5 einfach nicht.
    Das muss so lauten:
    Field := @If(Bedingung;Wert;Wert2);

  • Hi @ Taurec,


    mensch! da war doch was! Jetzt wo du es sagst - das hab ich schon mal irgendwo gelesen...
    Hatte es aber wohl wieder veressen, klar wenn man sich mit R6 keine Sorgen drüber machen muß...


    Allerdings trifft das ja gar nicht auf die zweite Zeile zu! Da muß doch ein anderes Problem sein...


    Grüsse

  • Hallo,


    hast Du es mit dem Debugger mal versucht??
    (File-->Tools-->Debug Lotus Script) Dann kannst Du den Code Schritt für Schritt durchgehen. Bei der Fehlerhaften Zeile hält der Debugger an. Falls ein Errorhandling eingebaut ist, das vorher auskommentieren.


    Gruss,


    Thor

  • Hi Taurec,


    jetzt sieht die ganze Sache so aus:


    ---------------------------------------------


    FIELD Saveoptions := "1";


    @If(MachineOwner = MachineOwnerOld; @Return(""); Nothing);


    newLine := @If(MachineOwnerOld = ""; "Original Owner: " + @Name( [CN] ; MachineOwner ) + " since " + @Text( @Now ); "Owner changed to " + @Name( [CN] ; MachineOwner ) + " on " + @Text(@Now));


    FIELD MachineOwnerHistory := MachineOwnerHistory : newLine;


    FIELD MachineOwnerOld := MachineOwner;


    @If(@IsNewDoc; Nothing; @Return(""));


    @If(@IsMember(MachineName; @DbColumn("Notes" : "NoCache"; @DbName; "machinesview" ; 1));Nothing; @Return(""));
    @Prompt([Ok]; "Name already exists!"; "The MachineName you have entered already existed in this Database. Please make sure that this is correct and delete one of the machines if neccessary!")


    --------------------------------------


    Tja, höchstens jetzt stört er sich wirklich am Nothing in der zweiten Zeile und vorher war es das von uns besprochene Problem.


    Wie sieht das denn eigentlich mir der newLine-Variable aus, muß man die vielleicht irgendwie deklarieren oder sonst was dabei beachten?


    Grüsse

  • Also an Nothing wird sich der 5er auf jeden Fall stören, da er nicht weiss was das ist.
    Deklarieren tust du es durch die Zuweisung eines Wertes.


    Thor


    Wir sind hier bei Formelsprache nicht bei Script. Damit ist der Debugger wertlos.

  • Hi,


    @If(MachineeAMTOwner = MachineeAMTOwnerOld; @Return(""); "");


    Ändert nichts, immernoch Invalid Formular in/ab dieser Zeile...


    Interessant hierbei ist: Ich habe mir überlegt, ob ich vielleicht das QuerySave kurzerhand eben in LotusScript schreiben soll, aber dann fiel mir ein, dass ich ja noch mehr Formeln über das Formular verteilt habe, z.B. ein berechnetes Feld:


    @If(Feld = ""; @Return("");Nothing);


    Anfangs hatte ich diese FeldFormel mit einem @isnull(Feld) bestückt wo R5 gemeckert hat (das Doc wurde gar nicht erst geöffnet). Jetzt da sie aber so dasteht, ist Sie wohl in Ordnung (trotz Nothing) . Ich frage mich, ob der Fehler wirklich in der zweiten Zeile steckt und die Methode wirklich funktioniert überall Prompts reinzumachen um Zeile herauszubekommen.
    Auf der anderen Seite kann ich mir nicht vorstellen, das Notes "mittendrin" abbricht, wenn irgendwo unten ein Fehler im Script ist. Gibt es denn keine Vernünftige Methode die Fehlerhafte Zeile zu ermitteln?


    Seltsam das R5 in diesem berechneten Feld mit dem Nothing zurecht kommt.


    Grüsse

  • Der Formeldebugger ist aber leider auch nicht in jeder Designerversion vorhanden.
    Außerdem funktioniert der auch nur eingeschränkt.
    Ich bin mir grade zwar nicht sicher, aber ich glaube im QuerySave hat der nicht funktioniert.

  • Auch an der Stelle wird er mit dieser Formel nicht zurechtkommen.
    Wenn die Anwendung tatsächlich unter 5 laufen soll, dann installier dir doch parallel dazu einen 5er Designer und entwickele mit diesem.
    Dieser wird dir dann auch jeden Fehler bemängeln der unter 5 eben noch nicht funktioniert

  • Ist immer wieder interessant welche Vermutungen angestellt werden :)
    Der Formel-debugger laeuft auch im QuerySave event.
    Und das die Formel
    @if(Feld = "" ; Nothing[];"blabla")
    in einem Feld funktioniert ist auch nicht weiter verwunderlich.
    Nothing ist ein statement aus LS, in der Formelsprache ist es einfach eine Variable.....vermute ich mal :)