Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: hmarco am 22.10.02 - 14:52:24

Titel: Wert eines Autorenfeldes übernehmen
Beitrag von: hmarco am 22.10.02 - 14:52:24
Hallo,

ich habe ein Problem:

Ich habe ein Hauptdokument, in dem ein Autorenfeld names "Kundenbetreuer" existiert. Die Werte dieses Feldes sollen, wenn eine Antwort dieses Hauptdokumentes angezeigt werden soll, in das Autorenfeld "Systemtechniker" übernommen werden.

Noch eine zusätzliche Frage, kann man mehrere Autorenfelder in einem Dokument anlegen, die zusammengenommen sich als ein Autorenfeld darstellen?

Wäre für jede Hilfe dankbar.

Mfg Marco
Titel: Re:Wert eines Autorenfeldes übernehmen
Beitrag von: Axel am 22.10.02 - 15:30:00
Hi

Zitat
Die Werte dieses Feldes sollen, wenn eine Antwort dieses Hauptdokumentes angezeigt werden soll, in das Autorenfeld "Systemtechniker" übernommen werden.

Ist hier anzeigen oder erstellen gemeint ? Kannst du das mal ein bisschen näher erklären ?

Zitat
Noch eine zusätzliche Frage, kann man mehrere Autorenfelder in einem Dokument anlegen, die zusammengenommen sich als ein Autorenfeld darstellen?

Ja das geht.

Axel

Titel: Re:Wert eines Autorenfeldes übernehmen
Beitrag von: hmarco am 22.10.02 - 15:43:08
Jo hi,

ich habe ein paar Antworten auf das Haptdokument erstellt,
nun sollen alle Personen, die im Autorenfeld "Kundenbetreuer" stehen, Autorenzugriff auf das Antwortwortdokument bekommen.

Ob derjenige zu den Autoren gehört,  soll sich beim Anzeigen des Dokumentes entscheiden werden, indem beim Anzeigen des Antwortdokumentes, die Werte des Autorenfeldes des Hauptdokuments in das Autorenfeld "Kundenbetreuer" des Antwortdokumentes kopiert wird. :o

Ich hoffe meine Erklärung ist einigermaßen verständlich.  ::)

Mfg Marco
Titel: Re:Wert eines Autorenfeldes übernehmen
Beitrag von: ata am 22.10.02 - 15:53:06
... sorry, geht das nochmal einfacher formuliert...

ata
Titel: Re:Wert eines Autorenfeldes übernehmen
Beitrag von: Axel am 22.10.02 - 16:00:43
Hi,

mir fällt da nur der folgende Weg ein:

Im QueryOpen-Event des Antwortdokuments müsste folgender Code rein:

Dim doc As NotesDocument
Dim parentdoc As NotesDocument

If Not Source.IsNewDoc Then
  Set doc = Source.Document  'aktuelles Antwortdokument
  Set parentdoc = db.GetDocumentByUNID(doc.ParentDocumentUNID) 'Hauptdokument

  doc.Systemtechniker = parentdoc.Kundendienst
  Call doc.Save(True,False)
End If

Ist nur eine Idee, ich habs nicht getestet. Könnte aber so funktionieren.

Axel

Titel: Re:Wert eines Autorenfeldes übernehmen
Beitrag von: Rob Green am 22.10.02 - 16:03:35
er meint folgendes ata (wenn Du mir erlaubst, den "Rest" überlasse ich Dir):

Hauptdoc A, hat Autorenfeld "Aut", Inhalt "Ray Ozzie"
nun wird
Response B erstellt, hat Autorenfeld "Autsch", Inhalt "leer"

Erst beim Öffnen des Docs zum Editieren soll Autsch befüllt werden.

edit: eine Lösung ist auch schon da...ata, Du wirst alt, muß ich feststellen  ;D ;D ;D
Titel: Re:Wert eines Autorenfeldes übernehmen
Beitrag von: ata am 22.10.02 - 16:07:15
... du hast recht, morgens bin ich jünger - ich hol mir nen Kaffee...

ata   ;D ;D 8)
Titel: Re:Wert eines Autorenfeldes übernehmen
Beitrag von: hmarco am 22.10.02 - 16:29:44
Hallo,

also ich habe mal den Code eingefügt.

Sieht genauso wie vorher aus.

Ich trage im Hauptdokument Feld "Kundenbetreuer" Marco Horstmann/Ar-Hannover und Maik Jahnke/Ar-Hannover ein.

Wenn ich jetzt das Antwortobjekt öffne oder erstelle steht nur mein Name dort. Woran kann das liegen? ???

Ich muss gestehen was Lotus Notes angeht habe ich kaum Ahnung.

Kann heute leider nicht mehr wiederarbeiten an dem Problem, da ich jetzt nochmal schnell zu einem Kunden rausfahren muss.

Die besten Ideen habe ich sowieso gegen Mitternacht.  ;D

Mfg Marco

Titel: Re:Wert eines Autorenfeldes übernehmen
Beitrag von: Axel am 22.10.02 - 16:37:49
Hi,

sind in beiden Autorenfeldern (Haupt- und Antwortdokument) Mehrfachwerte zugelassen ?


Axel
Titel: Re:Wert eines Autorenfeldes übernehmen
Beitrag von: hmarco am 23.10.02 - 13:11:35
Hallo,

sind richtig eingestellt.

Mehrfachwerte sind erlaubt.

Mfg Marco
Titel: Re:Wert eines Autorenfeldes übernehmen
Beitrag von: Rob Green am 23.10.02 - 13:34:13
weitere Frage:
hast Du eine Formel in diesem Autorenfeld? Weil die berechnet natürlich den Inhalt neu! Mögl. steht daher nur Dein Name drin.

Sonst mach mal folgendes /(etwas abgewandeltes Script):

Dim doc As NotesDocument
Dim parentdoc As NotesDocument

If Not Source.IsNewDoc Then
  Set doc = Source.Document  'aktuelles Antwortdokument
  Set parentdoc = db.GetDocumentByUNID(doc.ParentDocumentUNID) 'Hauptdokument

  doc.Systemtechniker = parentdoc.GetItemValue("Kundendienst")
  Call doc.Save(True,False)
End If

Titel: Re:Wert eines Autorenfeldes übernehmen
Beitrag von: hmarco am 23.10.02 - 13:50:57
Moin,

die Autorenfelder sind nicht berechnet.

Außerdem funktioniert den Skript leider auch nicht. :'(
Das seltsame ist auch noch, dass es keine Fehlermeldung gibt.

Mfg Marco
Titel: Re:Wert eines Autorenfeldes übernehmen
Beitrag von: Rob Green am 23.10.02 - 14:01:00
ok

also ich streiche die
(http://www.formel1saison.de/images/flaggen/Weiss.gif)

oder Du attached hier diese beknackte DB...der Fehler muß schlicht und einfach billig sein.
Titel: Re:Wert eines Autorenfeldes übernehmen
Beitrag von: hmarco am 23.10.02 - 14:05:19
Moin,

also hier ist die beknackte DB.

Mfg Marco
Titel: Re:Wert eines Autorenfeldes übernehmen
Beitrag von: Rob Green am 23.10.02 - 14:23:43
look im Anhang, habs getestet mit dem Code.
Einzigste Unterschied ist zum obigen Code, daß das zu lesende Autorenfeld nicht Kundendienst sondern Kundenbetreuer heißt eigentlich. Funktioniert einwandfrei.

Und was auch klar ist: beim ersten Erstellen des Password Docs wird nur der Ersteller selbst ins Feld eingetragen, was für später völlig wurscht ist, da das vom QueryOpen drübergebügelt wird.
Da mitunter der Code im QueryOpen checked, ob Doc neu ist oder nicht.

hier der Code, aus der Maske Password und dem Event der Maske QueryOpen:
Code
If Not Source.IsNewDoc Then
      Dim session As New notessession
      Dim Db As notesdatabase
      Set Db=session.currentdatabase
      
      Dim doc As NotesDocument
      Dim parentdoc As NotesDocument      
      
      Set doc = Source.Document  'aktuelles Antwortdokument
      Set parentdoc = db.GetDocumentByUNID(doc.ParentDocumentUNID) 'Hauptdokument
      
      doc.Systemtechniker = parentdoc.GetItemValue("Kundenbetreuer")
      Call doc.Save(True,False)
   End If

und die DB:
Titel: Re:Wert eines Autorenfeldes übernehmen
Beitrag von: hmarco am 23.10.02 - 14:47:25
Hallo,

super es funktioniert.

Können wir irgendwie das Skript noch abändern, dass er noch ein weiteres Feld "Systemtechniker" (Autorenfeld) , dass auch im Parentdokument ist, mit dem Feld "Kundenbetreuer" zusammen in ein Feld zu übernehmen.

Mfg Marco
Titel: Re:Wert eines Autorenfeldes übernehmen
Beitrag von: Rob Green am 23.10.02 - 15:24:11
warum fasst Du nicht einfach im Quelldoc beide Feldinhalte in ein drittes FeldC mit der Formel FeldA:FeldB zusammen, wobei FeldC auch Multivalue ist?

Dann mußt Du das obige Script nur nach dem Namen díeses neuen Feldes ändern.


Wenn Du es nicht tun willst, dann Code ergänzen um
dim LISTE As Variant
LISTE = Evaluate( "FELDA:FELDB", doc )
und Zielfeld wird mit Inhalt von LISTE befüllt
Titel: Re:Wert eines Autorenfeldes übernehmen
Beitrag von: hmarco am 23.10.02 - 16:04:52
Genial,

es funktioniert wunderbar.

Jedoch habe ich mit der Feld "Uebertrag", das die Felder "Systemtechniker" und "Kundenbetreuer" enthält noch ein kleines Problem. Ich versuche grade aus einer Antwort auf eine Antwort auf dieses Feld zuzugreifen, jedoch zeigt er nichts dort an.

Das ist dann auch in der Hinsicht das letzte Problem, sodass ich, wenn ihr mir noch bei dem kleinen Problem helft, mit der Datenbank fertig bin.

Mfg Marco
Titel: Re:Wert eines Autorenfeldes übernehmen
Beitrag von: Rob Green am 23.10.02 - 16:43:33
mal eine Frage, da Du Dich nunmehr von Problemchen zu Problemchen hangelst: beim Kopieren von Code mag es ja sein, daß der klappt, doch im Gesamtkontext zu einem Problem führt, wenn man sich keine Gedanken um die Gesamtlösung gemacht hat. Die Gefahr sehe ich momentan mE. Sprich: der jetzige Code sorgt dafür, daß ein Doc bei jedem Aufruf gespeichert wird. Bei ausnahmslos jedem Aufruf. Was wird eigentlich passieren, wenn zB ein Leser auf das Doc zugreift? Oder ein Autor, der n.n. als Autor im Autorenfeld des Antwortdocs/Originaldocs gelistet ist? Das sind zunächst Fragen, die nix direkt mit dem o.g. Code und auch prinzipiell mit jedem kopierten Code nix zu tun haben.

Ist Dir das bewußt oder hast Du Dir keine Gedanken um die Abläufe gemacht?
Titel: Re:Wert eines Autorenfeldes übernehmen
Beitrag von: hmarco am 23.10.02 - 17:17:23
Hallo,

ich habe mir so grob einen Plan zurechtgelegt, jedoch bin
ich so ein Typ der meistens Learning-by-Doing macht.

Um ehrlich zu sein habe ich in Hinsicht auf Autoren und Lesern
überhaupt keine Ahnung was ich da eingentlich tue.

Im Endefekt habe ich mir das so überlegt, dass wer keine Autorenrechte auf ein Dokument hat, dieses auch nicht sehen kann.
Dies würde ich einfach mit einem Leserfeld machen, in dem ein Leerzeichen steht, machen.

So mal 'ne Frage, wie würdest du denn überhaupt anfangen eine DB zu erstellen. Gibt es da irgendeinen Leitfaden?

Mein Chef hat nru ein paar Anforderungen gestellt.

Er möchte ein Dokument wo er den Kunden anlegt, dann möchte er wie in einer Baumstruktur die Projekte haben und wieder alla Baumstruktur die Passwörter. Die Kundendokumente sollen alle Lesen können. Die Projektdokumente sollen nur von den Autoren des Kundendokumentes gelesen und geschrieben werden. Genauso ist das mit den Passwortdokumenten, diese sollen nur von den Autoren des Projektes bearbeitet und gelesen werden können.

Mir ist keine andere Möglichkeit wie diese eingefallen, jedoch hast
du auf alle Fälle mehr Ahnung als ich.

Mfg Marco
Titel: Re:Wert eines Autorenfeldes übernehmen
Beitrag von: Rob Green am 24.10.02 - 13:48:17
also folgendes Konstrukt:

KUNDENDOC
- JEDER kann mit mehr als Leserrecht ein PROJEKTDOC anlegen
- Person A legt Kunden-Doc A an.
- Autorenfeld AUTHOR, Multivalue, Editierbar: Person A und Person B (von A zusätzlich aufgenommen)
- Leserfeld: keines vorhanden

- Folge: nur Person A und B können Doc A editieren.
- Alle anderen können es lesen.
- Alle anderen können es nicht editieren, solange sie in der ACL nicht mehr als Authorenrecht haben.


PROJEKTDOC
- in Maskeneigenschaften, 2 Lasche: "Formeln übernehmen Werte ..." anhaken
- Feld AUTHOR mit Vorgabewert-Formel AUTHOR, editierbar, Multivalue
- Maskentyp: Response
- JEDER kann mit mehr als Leserrecht ein PROJEKTDOC anlegen
- Person A legt Projekt-Doc A an
- Autorenfeld mit Person A und B vorbelegt
- Leserfeld READ, berechnet, multivalue, Formel: "[Admin]":AUTHOR

- Folge: nur Person A und B können Doc A editieren.
- Alle anderen können es NICHT lesen, es sei denn sie haben in der ACL die Rolle Admin bekommen
- Hinweis: unbedingt SERVER diese Admin Rolle geben und als Authorenserver definieren (siehe ACL)
- Alle anderen können es NICHT editieren, auch wenn sie in der ACL Editor sind, denn sie können das Doc ja nicht sehen  ;)


So würde ich es angehen enstprechend den Forderungen Deines Chefs. Wenn Du mit den obigen Dingen nicht klarkommst (ich habe versucht Dir deutlich zu machen, was ein Autor bedeutet, was ein Leser bedeutet, etc...), empfehle ich Dir unbedingt ein Developer Redbook von IBM zu Lotus zu lesen (dazu zB das R5 Developer Handbook auf LDD, Redbooks). Sonst wird es eine üble Stocherei und das kostet Dich nur unnötig Nerven. Lieber 8 Stunden in Ruhe Zeit investiert, die Dinge zu verstehen, als zig STunden unnötig verbraten.  Oder ganz billig vom Herdt Verlag für ca. 20 Euro anscheinend excellente Schulungs-Handbücher.
Titel: Re:Wert eines Autorenfeldes übernehmen
Beitrag von: hmarco am 24.10.02 - 17:22:59
Moin,

hört sich echt gut an. Ich werde heute leider nicht mehr
dazu kommen das zu probieren.  :D

Ich versuche morgen Nachmittag an der Datenbank noch
zu schreiben.

Mfg Marco

P.S.: Die Herdt-Unterlagen sind schon bestellt. ;)
Titel: Re:Wert eines Autorenfeldes übernehmen
Beitrag von: hmarco am 27.10.02 - 11:44:37
Hallo,

es funtioniert jetzt.  :D

Ich danke allen die mir geholfen haben,
insbesondere Rob Green.

Mfg Hmarco