Autor Thema: "stampAll" für flag IsReaders  (Gelesen 3642 mal)

Offline tabama

  • Aktives Mitglied
  • ***
  • Beiträge: 233
  • Geschlecht: Männlich
  • hier werden Sie geholfen
"stampAll" für flag IsReaders
« am: 08.11.18 - 15:12:27 »
Hallo,
mit der DC-Methode "StampAll" ist es ja möglich, den Wert eines Items für alle in der DC enthaltenen Docs zu setzten.
Ich suche eine Möglichkeit, dies für den Flag "IsReaders" eines Readerfeldes zu tun.

Hintergrund: Ich importiere monatlich ca. 150.000 Datensätze in eine Datenbank. In der Importdate sind bereits die Inhalte der Readerfelder belegt. Damit das aber auch in Notes funktioniert, muss ich noch den Flag setzten.

Wenn ich mich mit "while not doc is nothing" durch die DC wühle, dauert das sehr lange. Deshalb suche ich eine andere Lösung.

Es muss auch nicht aus einer DC heraus sein. Ich möchte alle Dokumente der DB stempeln.

Gibt es so was?

Offline ronka

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Was macht der hier denn, muß der überall sein ?
    • das nächste DominoCamp kommt in Juni 2023
Re: "stampAll" für flag IsReaders
« Antwort #1 am: 08.11.18 - 22:24:09 »
Nein, das geht nicht mittels Stamp All, damit kann nur einen WERT gesetzt werden, nicht einen Typ.

Dafür musstest du jedes feld als NotesItem holen, und dort der wert des Items mittels IsReader=True setzen.

Sprich einen ForAll oder einen While-Do schleife erstellen und durch ALLE dokumente gehen.
das neueste von Notes und Domino auf den DominoCamp vom 19 bis 21 Juni 2023 auf www.DominoCamp.de

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: "stampAll" für flag IsReaders
« Antwort #2 am: 09.11.18 - 08:14:41 »
Sind es denn jedesmal andere / neue  150.000 Dokumente, oder ist das nur einfach so Sch... programmiert, dass monatlich die selben 150.000 Datensätze gelöscht / neu angelegt werden, weil man nicht weiss, wie es richtig geht?
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline tabama

  • Aktives Mitglied
  • ***
  • Beiträge: 233
  • Geschlecht: Männlich
  • hier werden Sie geholfen
Re: "stampAll" für flag IsReaders
« Antwort #3 am: 09.11.18 - 11:45:20 »
Hallo Thorsten,

es sind zum Großteil immer die Gleichen. Es kommen ein paar hinzu und ein paar fallen weg.
Bisher war der "Sch..." auch das Einfachste. Ich brauchte mir keine Gedanken über das "Update-Thema" zu machen. -> Löschen, Import, Fertig!

Nun ist aber jemand auf die Idee gekommen. dass nicht mehr jeder alles sehen darf. Deshalb nun die Reader-Felder. Wenn es mit dem "stampAll" odgl. nicht geht (was ich schon vermutete), muss ich mir nun mal Gedanken machen, was auf Dauer mehr Sinn macht. (Löschen und neu, oder Update).

Vielen Dank für die Antworten.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: "stampAll" für flag IsReaders
« Antwort #4 am: 09.11.18 - 12:35:18 »
Löschen und Neu ist die allerschlechteste Lösung in Notes. Replikation und Deletion-Stubs seien nur zwei Stichworte

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: "stampAll" für flag IsReaders
« Antwort #5 am: 09.11.18 - 14:11:44 »
Boah... 150000 Datensätze monatlich löschen.... würde mich nicht wundern, wenn Euch diese Applikation irgendwann um die Ohren fliegt...
Es ist doch so einfach, bei einem import zu prüfen, ob ein Dokument schon da ist oder nicht:

1. Ansicht, sortiert nach "eindeutigem Schlüssel". Wenn der nur eindeutig ist, wenn man alle Felder miteinander verknüpft, dann ist das halt so. 2. Spalte: @Text( @DocumentUniqueID)
2. Vor Beginn des Imports diese Ansicht iterieren und eine Liste mit den existierenden Schlüsseln erstellen. Eine Liste mit 150.000 Dokumenten könnte wird speichertechnisch problematisch sein, deshalb würde ich hier mit UNID arbeiten:

Code
Dim lstrUnid List as String
'- Ansicht durchlaufen und für jeden ViewEntry:
lstrUnid( ViewEntry.ColumnValues(0) ) = ViewEntry.ColumnValues(1)

Dieses Vorgehen hat den Vorteil, dass man später nicht 150.000 Lookups machen muss, die die Laufzeit sprengen

3. Für jeden importierten Datensatz Schlüssel bilden und schauen: ist in Liste? Wenn ja: Dokument per Unid holen, Updaten (oder sogar prüfen, ob man updaten muss, hier arbeite ich gerne mit Hashwerten wegen der Performance), und Eintrag aus Liste entfernen. Wenn nein: Dokument neu erstellen

4. Am Ende sind alle Einträge, die in der Liste noch drin sind, nicht mehr im Quellsystem: UNIDs durchlaufen und Dokumente löschen...

Ohne Hashing- Vergleiche sind das max. 100 Zeilen Code. Wenn man zur Performance- Optimierung auch noch Hashed und die Hashes vergleicht, dann sind es vielleicht 200 Zeilen Code...
« Letzte Änderung: 09.11.18 - 16:25:42 von Tode »
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: "stampAll" für flag IsReaders
« Antwort #6 am: 09.11.18 - 14:35:23 »
...
Eine Liste mit 150.000 Dokumenten könnte Speichertechnisch problematisch sein, deshalb würde ich hier mit UNID arbeiten:
...
Völlig einig, nur das Wort "KÖNNTE" ist hier m.E. falsch, da müssten die Dokumente schon sehr klein sein, damit das problemlos geht. ;)

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: "stampAll" für flag IsReaders
« Antwort #7 am: 09.11.18 - 16:26:18 »
Hast vollkommen recht, ich habe das korrigiert: könnte -> wird
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz