LotusScript - Feld mit Formel füllen

  • Hallo zusammen,


    ich lese mittels Script eine ODBC Tabelle aus und fülle die Werte in Felder.


    Nun würde ich weitere Felder mit Formeln füllen die zeitgleich die Werte in das Feld schreiben.


    Meine Formel ist:


    @DbLookup( NoCache;"";"Bilder";@Trim(Nummer);2)


    Ich dachte mir das im Script folgendermaßen einzubinden:
    NotesDoc.Bilderbezeichnung = {@DbLookup( NoCache;"";"Bilder";@Trim(Nummer);2)}


    Leider funktioniert das nicht, das feld ist leer. :(


    Kann mir jemand helfen?

  • Die Funktion die du brauchst ist Evaluate. Mit der kann man @Formeln in Script ausführen.
    In deinem Fall würde ich das ganze aber einfach in Script umsetzen:




    Set view = db.GetView("Bilder")
    Set doc = view.GetDocumentByKey(Nummer)
    NotesDoc.Bilderbezeichnung = doc.Bilderbezeichnung

  • PHP
    If NotesDoc Is Nothing Then					Set NotesDoc = CurrentDB.Createdocument					NotesDoc.Form = "schnittstelle"				End If				NotesDoc.Id1 = key				NotesDoc.nummer = result.GetValue(10)				NotesDoc.Id2 = result.GetValue(2)..........				NotesDoc.Seriennummer = result.GetValue(14)				NotesDoc.Bilderbezeichnung = {@If(@IsError(@DbLookup( NoCache;"";"Bilder";@Trim(Nummer);2));Einheit;@DbLookup( NoCache;"";"Bilder";@Trim(Nummer);2)))}				Call NotesDoc.Save(True, False, True)


    So hatte ich den Script, nun habe ich von taurec den Script mit eingebaut aber bei

    Code
    NotesDoc.Bilderbezeichnung = doc.Bilderbezeichnung

    bleibt er nun stehen und bringt den Fehler

  • Zitat

    klar das doc und view habe ich bereits gesetzt.


    Ist in Deinem geposteten Code aber nicht zu sehen.


    set view = db.getview(...)
    set doc = view.getdocumentbykey(...)


    Und eine Pruefung, ob doc auch richtig gesetzt wurde waere auch hilfreich.



    Andreas

  • PHP
    Set CurrentDB = Session.CurrentDatabase    Set viewver =  CurrentDB.GetView("Bilder")    Set docver = viewver.GetDocumentByKey("Nummer")


    stehe über der If Formel


    wenn ich nun


    PHP
    NotesDoc.Bilderbezeichnung = docver.Bilderbezeichnung


    kommt hier der Error

  • Ich lese aus der ODBC Tabelle des Feld Nummer aus
    mit:

    PHP
    NotesDoc.Nummer = result.GetValue(8)


    und nun möchte ich gerne per dblockup in der View Bilderbezeichnung die passende Bezeichnung zu der Nummer in das Feld einfügen.

  • Super :) klappt.


    Wie schreibe ich denn die if anweisung wie in der Formel:


    @If(@Iserror(Dblookup.........


    Könnte Ihr mir noch dabei helfen.


    Denn es gibt auch Nummern die nicht in der Ansicht enthalten sind und wenn dies so ist, würde ich gerne die nummer stehen haben.

  • Hi,


    Wie sieht denn Dein Code jetzt aus?


    Wenn Du die If-Anweisung von oben genommen hast, dann hast Du doch schon was Du willst.
    Du musst lediglich 'Einheit' durch die (nicht) gefundene Nummer ersetzen.


    Code
    NotesDoc.Bilderbezeichnung = {@If(@IsError(@DbLookup( NoCache;"";"Bilder";@Trim(Nummer);2));} & result.GetValue(0) & {;@DbLookup( NoCache;"";"Bilder";@Trim(Nummer);2)))}
    
    
    oder
    
    
    NotesDoc.Bilderbezeichnung = {@If(@IsError(@DbLookup( NoCache;"";"Bilder";@Trim(Nummer);2)); @Trim(Nummer); @DbLookup( NoCache;"";"Bilder";@Trim(Nummer);2)))}


    Andreas

  • HI, wenn ich das mit der geschweiften klammer mache schreibt er mir die Formel nur als Text in das Feld.


    Wenn ich den Code:


    Code
    Set viewver =  CurrentDB.GetView("Bilder")
    				Set docver = viewver.GetDocumentByKey(NotesDoc.Nummer)
    				NotesDoc.Bilderbezeichnung = docver.Bilderbezeichnung


    Das Funktioniert, nur wenn er die Nummer in der View nicht findet, dann bricht er ab. Aber ich möchte dann wenn die Nummer nicht da ist, dass die Nummer in das Feld geschrieben wird.

  • Nun noch ein Versuch, in der Annahme, dass es sich beid em geposteten Code um den aktuell im Einsatz befindlichen Code handelt.


    Code
    Set viewver = CurrentDb.GetView("Bilder")
    If viewver Is Nothing Then Exit Sub
    
    
    Set docver = viewver.GetDocumentByKey(NotesDoc.Nummer(0))
    If Not docver Is Nothing Then
        NotesDoc.Bilderbezeichnung = docver.Bilderbezeichnung
    Else
        NotesDoc.Bilderbezeichnung = NotesDoc.Nummer(0)
    End If


    Auch sollte man noch ein Pruefung mit einbauen, ob NotesDoc.Nummer einen gueltigen Wert enthaelt. (vor dem Set docver.GetDocumentbyKey)



    Andreas