Autor Thema: Feldinhalte aktualisieren  (Gelesen 11655 mal)

Offline mkrauss

  • Aktives Mitglied
  • ***
  • Beiträge: 169
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Feldinhalte aktualisieren
« am: 21.10.04 - 08:23:30 »
Hallo alle zusammen,

wahrscheinlich ist es ganz einfach, doch ich bekomme es nicht hin.
Ich möchte in einer Maske Felder automatisch mit dem Inhalt aus einer anderen Maske füllen.

Beispiel:

Maske A:  Feld xy

Maske B: Feld xy

Das Feld in Maske B habe ich nachträglich angelegt. Wenn ich Maske B neu erstelle, wird das Feld gefüllt. Aber wie bekomme ich es nun hin, in den Masken die bereits angelegt wurden, das Feld mit Inhalt zu füllen?

Ist wahrscheinlich ganz einfach. Aber ich komm nicht draufß

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Feldinhalte aktualisieren
« Antwort #1 am: 21.10.04 - 09:28:13 »
Hi,

bau dir einen Agenten für ausgewählte Dokumente mit dem Befehl

@Command([ToolsRefreshSelectedDocs])


Dann markierst du die entsprechenden Doks und läßt den Agenten laufen.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline mkrauss

  • Aktives Mitglied
  • ***
  • Beiträge: 169
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Feldinhalte aktualisieren
« Antwort #2 am: 21.10.04 - 11:18:08 »
Hab ich schon gemacht. Doch er baut die nicht auf.

Driri

  • Gast
Re: Feldinhalte aktualisieren
« Antwort #3 am: 21.10.04 - 11:27:13 »
Deine Formulierung ist leider ein wenig unglücklich. Ich deute das mal so, daß Du X Dokumente hast, die mit Maske A erstellt wurden und zusätzlich Y Dokumente, die mit Maske B erstellt wurden.
Maske B ist so eingerichtet, daß Feld xy den Wert aus einem Dokument mit Maske A übernimmt.

Korrekt verstanden ?

Die Felder für Dokumente B nachträglich zu füllen, dürfte nicht ganz einfach sein, Du brauchst ja nachträglich eine Verbindung zum jeweiligen Dokument A. Hast Du da irgendeinen Key, über den Du das Dokument A ermitteln kannst ? Oder sind die Dokumente B Antwortdokumente ?

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Feldinhalte aktualisieren
« Antwort #4 am: 21.10.04 - 11:28:53 »
Hi,

wird der Wert nur bei der Neuanlage übernommen?

Wenn ja, dann steht der Feldname im Vorgabewert und der wird nur bei neuen Dokumenten angezogen. Bei bestehenden Dokumenten hast du dann Pech.

Hast du eine Verbindung von Maske B zu Maske A, z.B. in Maske B ist die ID von Maske A abgelegt? Wenn nicht, sehe ich keine grossen Chancen das automatisiert hinzukriegen.


Axel

 
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline mkrauss

  • Aktives Mitglied
  • ***
  • Beiträge: 169
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Feldinhalte aktualisieren
« Antwort #5 am: 21.10.04 - 12:13:37 »
Hallo Driri,

du hast das ganze Richtig verstanden. Maske B ist ein Antwortdokument.

Maske A wir immer zuerst angelegt. Maske A ist ein Kundenprofil in dem die kompletten daten drin stehen.

Maske B wir im Nachhinein angelegt. Maske B ist ein Antwortdokument. Dort werden zusätzliche daten abgelegt, z.Bsp Ansprechpartner der Fa. usw. In Maske B kommen nun weitere Felder hinzu, die in Maske A bereits vorhanden sind. Beim neuanlegen von Maske B werden die Felder automatisch gefüllt. Nun möchte ich die neuen Felder nachträglich auch mit den Daten befüllen. Hoffe es ist einigermasen Verständlich was ich möchte.

Gruß Michael

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Feldinhalte aktualisieren
« Antwort #6 am: 21.10.04 - 12:25:17 »
Hi,

so ganz grob gesprochen brauchst du einen Agent der sich die markierten Hauptdokumente in eine Collection packt (UnprocessedDocuments).
Dann wird die gesamte Collection durchlaufen und für jedes Dokumente die Antworten in eine weitere Collection gepackt. Dann kannst du mit StampAll in allen Antworten einem Feld einen Wert zuweisen, siehe Code unten. Den Wert liest du aus dem entsprechenden Feld des Hauptdokumentes aus.


Code
...
Dim collection As NotesDocumentCollection

Set collection = doc.Responses
Call collection.StampAll("Feldname", "Feldwert")
...


So könnte es gehen.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline mkrauss

  • Aktives Mitglied
  • ***
  • Beiträge: 169
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Feldinhalte aktualisieren
« Antwort #7 am: 21.10.04 - 13:11:24 »
Danke werd ich gleich mal ausprobieren

Offline cococo69

  • @Notes Preisträger
  • Senior Mitglied
  • ****
  • Beiträge: 286
  • Geschlecht: Männlich
  • Super dieses Forum!!!
    • Mein Hobby...
Re: Feldinhalte aktualisieren
« Antwort #8 am: 21.10.04 - 17:42:30 »
Hallo,

in "At Notes Best Practices" gibt es einen guten Artikel über Haupt- und Antwortdokumente http://www.atnotes.de/index.php?topic=13984.0.

Dort wird dies m.E. ausführlich beschrieben!

Gruß
Armin

Offline Schnulli

  • Aktives Mitglied
  • ***
  • Beiträge: 107
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Re: Feldinhalte aktualisieren
« Antwort #9 am: 22.10.04 - 14:00:06 »
Hallo Armin,

bei Feldern mit Mehrfachwerten scheint aber nur jeweils der erste Wert übertragen zu werden .....
Iris
Notes 8.5.3
Notes-Formelsprache (keine Script-Kenntnisse)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Feldinhalte aktualisieren
« Antwort #10 am: 22.10.04 - 14:04:09 »
Das scheint nicht nur so, sondern das ist auch so. Das wird im Code dort ausdrücklich so gemacht.
Wenn man den Index (0) weglässt, wird natürlich das komplette Item übertragen.

Bernhard

Offline Schnulli

  • Aktives Mitglied
  • ***
  • Beiträge: 107
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Re: Feldinhalte aktualisieren
« Antwort #11 am: 22.10.04 - 14:16:37 »
Na, dann hätte ich ja schon mal einen meiner Fehler gefunden!!! Wie doof! Vielen Dank!


Leider habe ich mir wohl dadurch ein paar Leserfelder abgeschossen.
Kann man noch etwas retten, wenn Dokumente sich zwar noch in der DB befinden, aber für niemanden mehr sichtbar sind? (ich sehe, daß sie noch da sind anhand der Anzahl von Antworten zum Mutterdoku)
Iris
Notes 8.5.3
Notes-Formelsprache (keine Script-Kenntnisse)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Feldinhalte aktualisieren
« Antwort #12 am: 22.10.04 - 14:21:08 »
IMHO: Nein. Da vermutlich in den Feldern jetzt irgendein String steht, ist da kein Herankommen mehr.

Ich kann mir übrigens nicht vorstellen, dass diese "neuen" Inhalte durch irgendeine Korruption der DB entstanden sind. Hat da jemand mal 'nen Agent laufen lassen (da Du ja sagst, dass die Dokumente "früher" mal korrekt waren) ?

Bernhard

Glombi

  • Gast
Re: Feldinhalte aktualisieren
« Antwort #13 am: 22.10.04 - 14:24:03 »
Man kommt an die Dokumente heran, wenn der Admin Dir eine Kopie der Datenbank ohne konsistente ACL sendet. Die Kopie muss mit dem Betriebssystem auf dem Server gemacht werden.
Oder der Admin sucht die Dokumente mit dem Full Admin Access (beliebtes Thema heute).

Andreas

Offline Schnulli

  • Aktives Mitglied
  • ***
  • Beiträge: 107
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Re: Feldinhalte aktualisieren
« Antwort #14 am: 22.10.04 - 14:39:56 »
@Andreas: Du machst mir Hoffnung, werde mir am Montag gleich einen Admin schnappen
Die erste Methode hatten wir soweit ich mich erinnere schon ausprobiert, das hatte nicht funktioniert. Aber die zweite ist vielleicht eine Chance.
Laut Admin ist es ihnen übrigens inzwischen gelungen, die Dasi der DB von gestern zurückzuholen....

@Bernhard: Tja, ob da ein Agent lief oder was auch immer da los war, kann ich nicht mehr lückenlos nachvollziehen. (Ich muss meine Dokumentation verbessern, das steht auf jeden Fall fest.) Sicherheitskopien habe ich irgendwann nicht mehr gemacht, weil es hieß, die Platten wären voll und die DB würde ja gesichert ......
Habe jetzt in einer Kopie (die natürlich die unsichtbaren nicht enthält) alle Autoren und Leserfelder erstmal "geleert".
Muss halt die ganze Programmierung noch mal durchgehen.

Gruß
Iris
Iris
Notes 8.5.3
Notes-Formelsprache (keine Script-Kenntnisse)

Glombi

  • Gast
Re: Feldinhalte aktualisieren
« Antwort #15 am: 22.10.04 - 14:48:15 »
Wichtig ist wie gesagt, dass die Kopie direkt am Server über das Betriebssystem gemacht wird bzw. über eine Netzwerkverbindung.

Eine Kopie über Notes ist nicht hilfreich, da ja nur diejenigen Dokumente kopiert werden, die derjenigen in Notes lesen darf.

Damit Du wieder alle Dokumente lesen, solltest Du in der lokalen Kopie einen Agenten erstellen, der in allen Dokumenten ein neues Autorenfeld setzt. Dort schreibst Du dann die Rolle [EditAll] rein. Diese Rolle musst Du zur ACL hinzufügen und zumindest mal Dir, dem Server und der Admingruppe gegeben.
Der Agent sollte über alle Dokumente der Datenbank laufen.

Da alle Dokumente geändert wird, besteht natürlich ie Gefahr von Speicher- und Replizierkonflikten, wenn Du die Datenbank wieder zurückreplizierst. Daher würde ich für die Zeit der "Reparatur" die Datenbank sperren. Wenn Du die Datenbank repariert hast, soll der Admin diese wieder auf dem Server ersetzen.


Nachtrag: Wichtig - Autorenfeld, kein Lesenamensfeld!

Andreas

Offline Schnulli

  • Aktives Mitglied
  • ***
  • Beiträge: 107
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Re: Feldinhalte aktualisieren
« Antwort #16 am: 25.10.04 - 14:18:49 »
@Andreas,
Vielen Dank für Deine Hilfe bezüglich meiner "unsichtbaren" Dokumente.
Mein Admin hat mir inzwischen eine Kopie mitsamt der "unsichtbaren" Dokus zur Verfügung stellen können.

Nun Schritt 2, den Du mir empfohlen hast: "Erstelle per Agent ein neues Autorenfeld und füge [EditAll] ein ......"

Ich beherrsche leider nur die Formel-Sprache, deshalb meine Frage:

Ich würde ein neues Feld mit FIELD := "[EditAll]" erstellen, aber wie sage ich Notes, daß es sich dabei um ein Autorenfeld handelt?

Geht wahrscheinlich nur mit Script, oder?

Viele Grüße
Iris


Antwort von Glombi:
Hallo Iris,
ja das geht nur mit Script. Hier ein Script, das in ALLE Dokumente der Datenbank das neue Autorfeld schreibt.

Der Code muss in einen Agenten, der über alle Dokumente der Datenbank läuft. Du kannst es auch auf alle gewählten Dokumente setzen, musst dann natürlichvorher die Dokumente wählen:

Sub Initialize
dim session as New NotesSession
dim db as NotesDatabase
dim dc as NotesDocumentCollection
dim doc as NotesDocument
dim item as NotesItem

set db = session.CurrentDatabase
set dc = db.UnprocessedDocuments
set doc = dc.GetFirstDocument
while not (doc is Nothing)
set item = New NotesItem(doc,"DefaultAuthors","[EditAll]",AUTHORS)
call doc.Save(false,true,true)
set doc = dc.GetNextDocument(doc)
wend
Iris
Notes 8.5.3
Notes-Formelsprache (keine Script-Kenntnisse)

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Feldinhalte aktualisieren
« Antwort #17 am: 25.10.04 - 14:35:56 »
Antwort von Glombi:
Hallo Iris,
ja das geht nur mit Script. Hier ein Script, das in ALLE Dokumente der Datenbank das neue Autorfeld schreibt.

Der Code muss in einen Agenten, der über alle Dokumente der Datenbank läuft. Du kannst es auch auf alle gewählten Dokumente setzen, musst dann natürlichvorher die Dokumente wählen:

Sub Initialize
dim session as New NotesSession
dim db as NotesDatabase
dim dc as NotesDocumentCollection
dim doc as NotesDocument
dim item as NotesItem

set db = session.CurrentDatabase
set dc = db.UnprocessedDocuments
set doc = dc.GetFirstDocument
while not (doc is Nothing)
set item = New NotesItem(doc,"DefaultAuthors","[EditAll]",AUTHORS)
call doc.Save(false,true,true)
set doc = dc.GetNextDocument(doc)
wend

Hi,

da hast du doch schon die Antwort. Genauso geht das, fast.  ;)
Hinter der Zeile

Set item = New...

musst du noch

item.IsAuthors= True

einfügen, damit es auch wirklich ein Autorenfeld wird.


Axel

Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Feldinhalte aktualisieren
« Antwort #18 am: 25.10.04 - 14:39:26 »
Unnötig, Axel - das macht schon der Parameter specialType% von New NotesItem  ;)

Bernhard

Offline Schnulli

  • Aktives Mitglied
  • ***
  • Beiträge: 107
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Re: Feldinhalte aktualisieren
« Antwort #19 am: 25.10.04 - 14:42:45 »
Vielen Dank, habe das Script nun ausprobiert, den Agent gestartet und leider folgende Fehlermeldung erhalten:
Auch mit der Zeile von Axel kam leider die gleiche Fehlermeldung:

"Could not create field DefaultAuthors!"

Der Agent ist "gemeinsam", "Alle Dokumenten in der Datenbank",
Options -> Option Public
Initialize -> Formel wie beschrieben

Hat jemand eine Idee warum Notes nicht will?

Viele Grüße
Iris
Iris
Notes 8.5.3
Notes-Formelsprache (keine Script-Kenntnisse)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz