Domino 9 und frühere Versionen > Entwicklung

Agent via LS

<< < (3/4) > >>

harkpabst_meliantrop:
Nochmal ganz kurz nachgehakt:

Robs Code ist eigentlich schon fast vollständig. Du brauchst keine Ansichten abzugleichen (wie sollte das auch gehen, Ansichten sind  Abfragestatements an die Datenbank, das Ergebnis folglich dynamisch). Wenn du die Dokumente abgeglichen hast, dann sind die Ansichten damit automatisch abgeglichen, weil es ja jetzt in beiden Datenbanken dieselben Dokumente gibt.

Speziell das Vergleichen bereits vorhandener Dokumente auf Änderungen (und alleine das Erkennen einer Änderung!) ist schon ziemlich umständlich, wenn es außer dem "Subject" noch weitere Felder geben sollte. Genau für solche Anwendungsfälle haben uns die Notes-Väter nicht umsonst die Replikation mitgegeben.

Wenn das ausscheidet, dann halte ich es nicht für sinnvoll machbar, dass in beiden Datenbanken diese Dokumente geändert werden dürfen.


Rob Green:
ja, also hier der Code, wobei @harkpabst schon das wichtigste gesagt hat, wenn man nämlich auch Änderungen in verschiedenen Feldern triggern möchte, daß dazu eigentlich die Replikation absolut ideal ist. daher berücksichtige ich diesen speziellen Fall nicht.

Ein Agent, der in der Quell DB startet, die ALLE Docs vorhält und nun nachschaut, ob in der "Slave" (ich nennen sie "DB2.nsf") DB auch diese Docs vorhanden sind.



_Quellview_In_QuellDB="ICH_HEISSE_VIEW"
_Searchview_In_Slave="ICH_HEISSE_AUCH_VIEW"
_Server="ICH_BIN_DER_SERVER"
_SlaveDB="Test\\ICH_HEISSE_SLAVE_DATENBANK.NSF"

'Quell DB referenzieren
Dim session1 As New NotesSession
Dim db1 As NotesDatabase
Set db1 = session1.CurrentDatabase
'View in Quell DB festlegen
Dim view1 as NotesView
Set view1 = db1.GetView( _Quellview_In_QuellDB )

'Slave DB referenzieren
Dim db2 As New NotesDatabase( _Server, _SlaveDB )
Dim view2 As NotesView
Dim doc2 As NotesDocument
Set view2 = db2.GetView( _Searchview_In_Slave )

'erstes Doc im View der QuellDB holen
Set doc1 = view1.GetFirstDocument
Dim _Suchkey as String

'solange Docs noch in View gehe um ein Doc weiter
While Not(doc1 Is Nothing)

'wenn fokussiertes Doc kein item Subject hat, weiter zum nächsten Doc
If doc1.HasItem("Subject") Then

'Feld_Subject auslesen
   _suchkey=doc.Subject(0)
'in Slave DB nach diesem Begriff suchen
   Set doc2 = view2.GetDocumentByKey( _suchkey)

'wenn kein Doc gefunden, dann rüberkopieren aus Quelle nach Slave DB
If ( doc2 Is Nothing ) Then
Call doc1.CopyToDatabase( Db2 )
End if

End if

'und weiter zum nächsten Doc in Quell DB
Set doc1 = view1.GetNextDocument(doc1)

Wend

Jo, das müßte passen, habs aber nicht debugged, da hier reingehauen. Checks bitte auf Schreibfehler oder prgrammatische Fehler per Debugger.

Madmission:
Ich danke dir viel mals, es hat mir sehr weitergeholfen und ich weis das man das mit replizieren eigenschaft einstellen kann aber meine chefin ist nicht so begeistert von dieser funktion und wegen dem muss ich das LS schreiben.

Ich habe glaub noch ein kleiner fehler drin den er copyert immer alle dokumente vielleicht sieht ihr ja was.

Ich danke dir nochmal, für die hilfe

Rob Green:
ich gehe davon aus, daß view2 so sortiert ist, daß die erste Spalte das Subject >>>>>>>>>>sortiert aufsteigend<<<<<< anzeigt!?!?!

"Set doc2 = view2.GetDocumentByKey( suchkey )"
wenn das im Debugger Modus durchläuft, ist dann doc2 immer leer?
Das kannste kontrollieren, indem Du Dir bewußt ein Doc schnappst, dessen Feldinhalte von Subject 1000% gleich sind. Das Feld heißt doch Subject, oder, zumindest in der Quell DB mit allen Docs?

Übrigens: Grüße an Deine Chefin, sie sollte etwas mehr Grips als Geld kassieren, dann würde sie nicht meinen, daß "ach, Replikation gefällt mir nicht, da ist jetzt aberrrr keine Frühjarsmode"  ;D ;D

Madmission:
Hi

Da gebe ich dir recht was meine chefin angeht, hatte das problem gelöst indem ich auf jeder DB ein seperate view gemacht habe und da eine spalte mit subject gemacht habe die sortiert ist und dannging es wie am schnürchen.

Ach meine chefin die spinnt, die ist glaub in einer dimension, ach was soll jetzt will sie noch das die dokument miteinander abgeglichen werden und wenn was fehlt, das fehlende feld gefühlt wir oder das neuere doc updaten wird...


ggggggggggrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.............

danke dir nochmals für alles

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln