Autor Thema: @DBLookup und ComputeWithForm  (Gelesen 3235 mal)

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
@DBLookup und ComputeWithForm
« am: 16.11.03 - 18:40:16 »
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"
)

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
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:@DBLookup und ComputeWithForm
« Antwort #1 am: 16.11.03 - 18:44:49 »
<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

Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:@DBLookup und ComputeWithForm
« Antwort #2 am: 16.11.03 - 18:52:31 »
<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;
   ""
)

Der function nach sollte es.

Wäre die beste Alternative.

Danke,
TMC
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:@DBLookup und ComputeWithForm
« Antwort #3 am: 16.11.03 - 18:55:59 »
check mal aus, man

<ernsthaft>
sollte funktionieren
</ernsthaft>
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:@DBLookup und ComputeWithForm
« Antwort #4 am: 16.11.03 - 18:58:12 »
 8)
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:@DBLookup und ComputeWithForm
« Antwort #5 am: 16.11.03 - 19:03:49 »
heißt das  8) jetzt "cool" oder "krras cool" ??
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:@DBLookup und ComputeWithForm
« Antwort #6 am: 16.11.03 - 19:22:17 »
krrass cool
Umsetzung soll aber der Prakkdikand machen

@MailSend("Chef von TMC";"";"";"hilf mir mal voll krass und besorg uns eine  prakkdikandin die DB-Loogaps draufff had";"";"";[IncludeDocLink])

 8)
TMC
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:@DBLookup und ComputeWithForm
« Antwort #7 am: 16.11.03 - 19:29:54 »
Zitat
krrass cool
Umsetzung soll aber der Prakkdikand machen

@MailSend("Chef von TMC";"";"";"hilf mir mal voll krass und besorg uns eine  prakkdikandin die DB-Loogaps draufff had";"";"";[IncludeDocLink])

das war jetzt kein well-formed posting

besser

<Dialekt lang= 'kannaksch'>krrass cool</dialekt>
Umsetzung soll aber der <Dialekt lang= 'whatever'>Prakkdikand</Dialekt > machen
<Dialekt lang= 'code' option = 'multilang'>
@MailSend("Chef von TMC";"";"";"hilf mir mal voll krass und besorg uns eine  prakkdikandin die DB-Loogaps draufff had";"";"";[IncludeDocLink])
</dialekt>

 ;D
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:@DBLookup und ComputeWithForm
« Antwort #8 am: 16.11.03 - 19:41:43 »
Ohne Ulrichs Korrekturen gibt's nen Syntax Error   ;D
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:@DBLookup und ComputeWithForm
« Antwort #9 am: 16.11.03 - 19:57:25 »
aber <dialekt class="default">krass</dialekt>voll

man kann auch CLS ( cascading language sheets ) verwenden
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:@DBLookup und ComputeWithForm
« Antwort #10 am: 16.11.03 - 21:22:08 »
@TMC: Ich werde irgendwie das Gefühl nicht los, dass es Dir vorrangig um eine Praktikantin geht ;-)

Kannst Du das Ganze nicht gleich über LS lösen ? @dbLookup könnte ja auch dazu führen, daß Du ein Array ("eine Liste") zurück geliefert bekommst. Kannst Du ausschliessen, dass
_TempLookup3 := @DbLookup( "Notes" : "NoCache" ; ""  : ""  ; "(LookupZIP)"  ; _3  ; 2 );
nur ein Ergebnis zurückliefert ?
"No" sei 83313 (Siegsdorf)
In der Ansicht finden sich
83334 (Inzell) und
83324 (Ruhpolding)
_5 liefert nun nix zurück, _4 auch nicht, aber _3 gleich zwei Ergebnisse (nur so als Beispiel, ich kenne ja Deine genauen Rahmenbedingungen nicht).

Eine vernünftiges NotesView.GetAllDocumentByKey mit anschliessendem parsing der Collection bietet Dir doch erheblich mehr Möglichkeiten - inclusive Deiner eigenen Entscheidung, ob Du nun speicherst (Replikation !) oder eben nicht.

HTH - und sag' mal an,
Bernhard

PS: Sollte (!) mein Vorschlag für Dich zielführender sein, würde ich Dich bitten, die Praktikantin dann asap von Nieder ... nach Ober ... zu versetzen ;-)

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:@DBLookup und ComputeWithForm
« Antwort #11 am: 17.11.03 - 22:44:04 »
@Bernhard:

Zur DBLookup-Rückgabe:
In der Ansicht finden sich nur folgende Werte:
833...
834..
835..
(..)
84..

Folgendes gibt es nicht:
833..
8331..
Wenn im Dokument "Inzell" also der DBLookup läuft, wird "833" zurückgegeben, genau so wie in Siegsdorf oder Ruhpolding.

Aber ich werde mir das nochmal genau überlegen, wie ich das ganze realisiere.

Meine Praktikantin kriegste daher vorerst noch nicht  ;D
Aber danach versetzen wir sie zu Euch nach Oberbayern  ;)

TMC
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz