Domino 9 und frühere Versionen > ND7: Entwicklung

Alle Dokumente in der Datenbank aktuallsieren als Agent

<< < (2/3) > >>

Driri:
Auf die Schnelle fallen mir 4 Sachen auf :

1. Du speicherst aktuell auf jeden Fall doc und vdoc, auch wenn die Dokumente gar nicht verändert wurden. Das vdoc.Save reicht eigentlich innerhalb der letzten If-Schleife aus.

2. Du verwendest die Variable Dummy für verschiedene Werte. Das würde ich aus Gründen der Übersichtlichkeit nicht tun. In so kurzen Scripten mag das noch gehen, in längeren läuft dir das garantiert in die Hacken.
Darüber hinaus kannst Du dir den Schritt mit Dummy = eigentlich sparen und direkt den Wert in die Variablen weisen :

KGStatus = doc.GetItemValue("GesamtStatus")(0)

3. Wenn Du nur Werte in Items zuweisen willst und die Items nicht für andere Dinge benötigst, würde ich das Objekt NotesItem nicht benutzen, sondern die Werte direkt mit ReplaceItemValue in die Items schießen.

Call vdoc.ReplaceItemValue("DocStatus1","1")

4. Wenn Du Sprungmarken verwendest, dann solltest Du vor der Sprungmarke noch ein Exit Sub oder Exit Function einfügen. Ansonsten arbeitet das Script auf jeden Fall die Befehle hinter der Sprungmarke ab. Wenn das so gewollt ist, kannst Du dir das natürlich schenken.

DerAndre:
Hi Klaas.

Das ist sehr viel Code der eigentlich nichts macht.
Ich habe mal einen schönen Spruch gehört:
Code ist erst Fertig, wenn man nichts mehr entfernen kann.

Sub Querysave(Source As Notesuidocument, Continue As Variant)
   Dim session            As New NotesSession
   Dim db                As NotesDatabase
   Dim doc               As NotesDocument               'Aktuelles Doc ( AntwortDoc )
   Dim Vdoc                As NotesDocument               'Hauptdokument des AntwortDocs

   Set db                = session.CurrentDatabase
   Set doc                = Source.Document                'UIDoc zu Backend-doc

   Set Vdoc                = db.GetDocumentByUNID(doc.ParentDocumentUNID)      'Vdoc wird zum Vaterdokument

   If doc.GetItemValue("GesamtStatus")(0) = 4 and vdoc.GetItemValue("DocStatus3")(0) <> "" Then

      call vdoc.ReplaceItemValue("DocStatus1","1")
      call vdoc.ReplaceItemValue("DocStatus2","")
      call vdoc.ReplaceItemValue("DocStatus3","")
      Call Vdoc.Save(False, False )
     
   end if

   
End Sub


So sparst Du Dir die Sprungmarke und andere Dinge. Ausserdem ist das so Recht übersichtlich.

Klaas:
Hammer,

ich habe grade meine Ausbildung zum Fachinformatiker abgeschlossen.
Anwendungsentwicklung in der Schule war nicht mal Ansatzweise so.

Ich glaube ich kann die hälfte von dem was ich bis jetzt geschrieben habe, streichen.

Dankeschön. Sowas bringt ein echt weiter.

Wielange Programmiert ihr eigentlich schon?

BigWim:

--- Zitat ---Das Läuft jetzt. Gibts da noch was was man besser machen könnte?

--- Ende Zitat ---
Ob ich verbessern kann, bezweifle ich, aber mal ein Erfahrungsbericht.


Mit dem hier habe ich als fortgeschrittenen Anfänger immer meine Probleme:

--- Code: ---doc.GetItemValue("GesamtStatus")(0) .....  vdoc.GetItemValue("DocStatus3")(0)

--- Ende Code ---

Bei mir besteht die latente Gefahr, dass ich die Items nicht konsequent initialisiere. Und dann habe ich Streß mit den Variablentypen. Ich weiß nicht, ob obige Anfrage damit zu Recht. In meinem Fall würde sich das garantiert so darstellen.

GesamtStatus - Type = Zahl  (wegen =4)
DocStatus3 - Type = String ( wegen = ""), sollte aber Zahl sein ...
(Typisch für mich. Nicht initialisiert)


Deswegen ziehe ich es mittlerweile vor, die Werte in eigene Variablen zu packen, die dem Typ entsprechen (Stichwort Option Declare).

Und bei DB, die ich (zwangsweise wegen einer Erweiterung) übernehmen muß, gehe ich auf Nummer sicher und frage den Type mit TypeName ab ....


--- Zitat ---Wielange Programmiert ihr eigentlich schon?

--- Ende Zitat ---
Lange genug um zu wissen, dass es immer besser geht.
Nicht lange genug um sagen zu können, ich sei ausgebildet ;)

Markus

koehlerbv:
Ist es korrekt, dass im Item Gesamtstatus Zahlen gespeichert sind? Ist das nicht vielmehr auch ein String, der dort zu erwarten ist?

Bernhard

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln