Domino 9 und frühere Versionen > Entwicklung

@DBLookup und ComputeWithForm

(1/3) > >>

TMC:
Hi,

Zwickmühle:
Ein Server-Agent (also Backend) läuft nicht mit den ui-Funktionalitäten, um hier Dokumente zu aktualisieren gibt es nur ComputeWithForm.
ComputeWithForm greift allerdings nicht bei @DBColumn, @DBLookup etc.

Als sog. 'Lösung' wird im www immer wieder vorgeschlagen, die @DBLookups halt im Script zu integrieren.
Dies möchte ich hier aber nicht.

Jetzt habe ich mir überlegt, parallel einen Agenten laufen zu lassen, der @Command([ToolsRefreshSelectedDocs]) macht.

Problem:
Damit wird jedes Dokument für die Replizierung wieder aktiviert, obwohl aber oft keine Änderungen stattfinden (wenn DBLookup-Feld gleich bleibt).

Daher wollte ich jetzt im Maskenkopf ein Hidden Field einsetzen, dass die DBLookup-Felder ausliest. Dann im Maskenfuß im Feld "Replication" eine Formel a la

--- Code: ---_Checker := ReplicationCheck;
_AllFields := (... Liste von Feldern ...)
@If(_Checker != _AllFields;
   "Yes";
   "No"
)
--- Ende Code ---

Dann aber klappt es nur wenn der Agent @Command([ToolsRefreshSelectedDocs])  läuft, geht man manuell ins Dokument, wird immer "No" angezeigt.

Daher habe ich übers Postopen-Event zusätzlich schon getestet um die aktuellen Feldinhalte in ein weiteres Feld zu schreiben für Vergleich, ohne Erfolg.

Was will ich überhaupt:
 - Dokumente sollen regelmäßig aktualisiert werden aufgrund enthaltener @DBLookup-Felder
 - es soll nur repliziert werden wenn sich tatsächlich was geändert hat (getriggert über Feld "Replication" = "Yes" )

Ich bezweifle nun stark meinen Ansatz hier. Hat vielleicht jem. eine andere Idee?

TMC

eknori:
<Dialekt lang = "Kannaksch">
ey, alder, habbisch krass code, guckst du !
</Dialekt>

Function DBLookup (strClass As String, strNoCache As String, strServer As String, strDatabase As String, strView As String, strKey As String, strReturn As String) As Variant
   
   quotes = Chr(34)
   strFormula = "@DbLookup(" & quotes & strClass & quotes & ":" & quotes & strNoCache & quotes & ";" & quotes & strServer & quotes & ":" & quotes & strDatabase & quotes & ";" & quotes & strView & quotes & ";" & quotes & strKey & quotes & ";" & strReturn & ")"
   
   DbLookup = Evaluate( strFormula )
   
End Function

damit kannst du ein DBLookup in LS machen

TMC:
<Dialekt lang = "Kannaksch">
hey Du vollkrasser Coder!!! thanks !!!
</Dialekt>
(auch wenn sich bedanken uncool ist :-))

Klappt Deine Funktion auch bei sowas?

--- Code: ---_5 := @Left(No; 5);
_4 := @Left(No; 4);
_3 := @Left(No; 3);
_2 := @Left(No; 2);
_1 := @Left(No; 1);


_TempLookup5 := @DbLookup( "Notes" : "NoCache" ; ""  : ""  ; "(LookupZIP)"  ; _5  ; 2 );
_TempLookup4 := @DbLookup( "Notes" : "NoCache" ; ""  : ""  ; "(LookupZIP)"  ; _4  ; 2 );
_TempLookup3 := @DbLookup( "Notes" : "NoCache" ; ""  : ""  ; "(LookupZIP)"  ; _3  ; 2 );
_TempLookup2 := @DbLookup( "Notes" : "NoCache" ; ""  : ""  ; "(LookupZIP)"  ; _2  ; 2 );
_TempLookup1 := @DbLookup( "Notes" : "NoCache" ; ""  : ""  ; "(LookupZIP)"  ; _1  ; 2 );

@If(
   !@IsError(_TempLookup5);
   _TempLookup5;
   !@IsError(_TempLookup4);
   _TempLookup4;
   !@IsError(_TempLookup3);
   _TempLookup3;
   !@IsError(_TempLookup2);
   _TempLookup2;
   !@IsError(_TempLookup1);
   _TempLookup1;
   ""
)

--- Ende Code ---

Der function nach sollte es.

Wäre die beste Alternative.

Danke,
TMC

eknori:
check mal aus, man

<ernsthaft>
sollte funktionieren
</ernsthaft>

TMC:
 8)

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln