@dblookup

  • Hallo, ich habe ein wenig Probleme mit dem DBlookup


    ich habe eine Ansicht ("Projekte") in der steht folgendes
    Projektnummer|Personennummer


    zweite Ansicht ("Ressourcen")
    Ressourcennummer|Name



    jetzt möchte ich in der ersten Ansicht den Namen mit @dblookup
    einfügen und versuche gerade folgenden Befehl:


    @DbLookup("":"ReCache";"":"";"Ressourcen";Personennummer;"Name")


    das funktioniert aber nicht...

  • OK..hab es in die Maske integriert und in der Maske zeigt er mir nun auch die richtigen Daten an....


    füge ich das feld in die gewünschte Ansicht ein..zeigt er wieder nichts...muss ich vorher was berechnen/aktualisieren, damit er mir den Inhalt des berechneten Feldes auch anzeigt?

  • Hi,


    Wie berechnet? (beim Anlegen, zur Anzeige, ...)


    Wenn Feld "nur" berechnet, wurden die Dokumente nach dem Einfuegen des Feldes nochmals "gespeichert" (neu berechnet)?


    @Command([ToolsRefreshAllDocs])


    Andreas

  • ich habe jetzt mal das feld geändert auf "berechnet beim anlegen"


    in der maske zeigt er das feld immer noch an..(seh keinen unterschied)


    aber die ansicht zeigt mir das feld nicht an..(feld leer)

  • Hi


    Mach das Feld "Berechnet"


    Anschliessend einen Agenten erstellen und hier

    Code
    @Command( [ToolsRefreshAllDocs] )


    verwenden.


    Nun noch den Agenten laufen lassen und dass sollte es eigentlich gewesen sein.


    Andreas

  • geht das auch in lotusscript?


    weil ich habe einen agenten in lotusscript der diese dokumente erzeugt.....
    mit
    Dim db As NotesDatabase
    Dim collection As NotesDocumentCollection
    Dim doc As NotesDocument
    .
    .
    Call doc.Save(True, True)


    benutze aber nicht Notesuiworkspace


    kann ich in dem Agenten der später im hintergrund ablaufen soll
    workspace benutzen und auf das gleiche Dokument zeigen lassen?


    --->
    Dim workspace As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Set uidoc = workspace.CurrentDocument
    Call uidoc.Refresh

    • Offizieller Beitrag
    Zitat

    kann ich in dem Agenten der später im hintergrund ablaufen soll
    workspace benutzen und auf das gleiche Dokument zeigen lassen?


    nein, in dem Agenten dürfen nur BackEnd-Dinge gemacht werden, wenn diese BackEnd laufen soll, d.h. NotesUIWorkSpace geht da nicht.


    Lagere alles BackEnd-Zeug in eine Function/Sub in einer Bib aus und benutze diesen Teil in dem Agenten. Im Frontend kannst Du dann die BackEnd-Dinge von der Function/Sub erledigen lassen und baust in dem Script, welches die Function/Sub benutzt den FrontEnd-Teil noch drumherrum.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • das habe ich nicht richtig verstanden, dieser agent soll später alles neu aufbauen und zwar nachts, alleine


    die andere Möglichkeit wäre, diese daten gleich innerhalb einer sql-abfrage einzubauen und einlesen,
    dann spare ich mir den aufbau der zusätzlichen dokumente




    die erste sql abfrage bei mir sieht so aus:


    qry.SQL = "SELECT Projektnr_, Nr_, Startdatum, Enddatum " &_
    "FROM Projektplan WHERE Art = 'Ressource' AND Nr_ LIKE 'RS%'"


    und ich hätte nun gerne aus der Tabelle Ressource die Kostenstelle
    abgefragt, die der "Nr_" entspricht


    aber ich weiß nicht wie ich auf die zweite tabelle innerhalb der sql-abfrage zugreifen soll

  • Hi pegasus,


    Wo kommt denn jetzt auf einmal SQL her?


    Erst die ganze Zeit auf Notes bezogen und jetzt auf einmal SQL-Abfragen auf externe Datenanken.


    Und der Zugriff innerhalb einer SQL-Abfrage auf 2 Tabellen realisierst Du mittels INNER JOIN


    Andreas

  • ich komme deswegen auf sql, weil der agent diese ganzen dokumente nachts per sql-abfrage erzeugen soll, deswegen kann ich keine frontend-dinge benutzen....


    und statt die dokumente im nachhinein zu bearbeiten....KÖNNTE
    man auch per sql die richtigen daten aus der Datenbank herausholen...aber wie gesagt...die sql abfrage macht mir probleme..


    ich versuche es gerade mit folgender abfrage um die problematik mit dem refresh und dem aktualisieren zu umgehen:


    qry.SQL = "SELECT Projektplan.Projektnr_, Projektplan.Nr_, Projektplan.Startdatum, Projektplan.Enddatum " &_
    "Ressource.Kostenstelle" &_
    "FROM (Projektplan INNER JOIN Ressource ON Projektplan.Nr_ = Ressource.Nr_)"



    aber das scheint nicht zu klappen :(
    sql ist nicht gerade meine besondere Stärke

  • computewithform bringt leider auch kein passendes Ergebnis in der ansicht...


    die beiden felder die ich benötige sind "berechnet beim anlegen"


    der code mit dem ich die dokumente erzeuge sieht nun so aus:






    qry.SQL = "SELECT Projektnr_, Nr_, Startdatum, Enddatum FROM Projektplan WHERE Art = 'Ressource' AND Nr_ LIKE 'RS%'"
    result2.Execute
    If result2.IsResultSetAvailable Then
    Do
    result2.NextRow
    projektnum = result2.GetValue("Projektnr_")
    searchform$ = {FORM = "Projektkopf" & Projektnummer = "} & projektnum & {"}
    Set collection = db.Search(searchform$, Nothing, 0)
    If collection.Count > 0 Then
    Set doc = db.CreateDocument
    startdatum = result2.GetValue("Startdatum")
    enddatum = result2.GetValue("Enddatum")
    doc.Projektnummer = projektnum
    doc.Nummer = result2.GetValue("Nr_")
    If startdatum <> "01.01.1753" Then
    doc.Startdatum = startdatum
    End If
    If enddatum <> "01.01.1753" Then
    doc.Enddatum = enddatum
    End If
    doc.Form = "Projektplanzeilen"
    Call doc.Save(True, True)
    ------> Call doc.ComputeWithForm(False,False)
    End If
    Loop Until result2.IsEndOfData
    result2.Close

    End If

  • Hi pegasus,


    Zum einen solltest Du nach dem "ComputeWithForm" das doc nochmals speichern.


    Zum Anderen, kleine Fragen noch.
    Warum machst Du die Felder "berechnet beim Anlegen" ?
    Mach sie doch nur "Berechnet"


    Wo liegen diese "berechneten" Felder innerhlab Deiner Maske?
    (vor den Feldern mit deren Werten du rechnest oder danach)


    Andreas

  • Nur mal so am Rande.


    Mit ComputeWithForm wirst du nicht viel Glück haben, da diese Methode nur die Defaultwert-, eingabeübersetzungs- und Validierungsformeln berücksichtigt. Werteformeln von berechneten Feldern interessieren hier gar nicht.


    Du wirst wohl oder übel die Feldinhalte im deinem Script berechnen müssen.



    Axel

  • hmmm..das mit computewithform hat aber jetzt geklappt, nachdem ich danach noch ein save eingesetzt habe.......


    Call doc.Save(True, True)
    Call doc.ComputeWithForm(False,False)
    Call doc.Save(True, True)

  • das du nach dem neuberechnen der felder speichern musst, dürfte logisch sein oder?


    denke eher du kannst den save davor weglassen ...

    bunt ist das dasein und granatenstark. volle kanne hoshi's!


    IBM Certified Advanced System Administrator (R5, D6, D7)
    IBM Certified Advanced Application Developer (R5, D6, D7, D8)

  • Zitat


    pegasus schrieb:
    hmmm..das mit computewithform hat aber jetzt geklappt


    Auch gut. Man kann sich aber nicht immer 100% darauf verlassen. Ich habe schon die tollsten Dinger erlebt.


    Axel