Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Daniel Weiß am 10.03.06 - 08:07:56

Titel: mal wieder Feldwerte übernehmen
Beitrag von: Daniel Weiß am 10.03.06 - 08:07:56
Hallo zusammen,

kurz vorm WE benötige ich nochmal Hife.
Kann ich aus einer Maske, wenn sie gespeichert wird, den Feldwert automatisch in eine andere maske (keine Antwortmaske) übertragen?

Also ich dachte irgendwie so: Maske wird ausgefüllt und beim speichern wird z.B. das Feld Thema in eine andere Maske übertragen und diese dann automatisch abgespeichert.


Geht das irgendwie??

Gruß Daniel
Titel: Re: mal wieder Feldwerte übernehmen
Beitrag von: Klafu am 10.03.06 - 08:19:15
Sollte eigentlich ganz normal gehen, indem du den Feldnamen als Formel ind das Feld einträgst, in das der Wert übernommen werden soll

gruß
Titel: Re: mal wieder Feldwerte übernehmen
Beitrag von: Axel am 10.03.06 - 08:23:20
Geht das irgendwie??

Ganz pauschal, ja.

Der prinzipielle Ablauf ist der, dass im QuerySave-Event sich mit Backendfunktionen Zugriff auf das andere Dokument verschafft, das Feld/die Felder ändert und dann speichert.

Um genaueres sagen zu können, brauchen wir mehr Infos. Zum Beispiel handelt es sich um ein neues Dokument oder einbestehendes? Wenn es sich um ein bestehendes Dokument handelt, wie kann man es eindeutig identifizieren?.

Axel
Titel: Re: mal wieder Feldwerte übernehmen
Beitrag von: robertpp am 10.03.06 - 08:25:28
Ich denke auch dass da noch einiges an Info fehlt. Wenn du zb die zweite Maske die ja eigentlich ein doc ist per script erstellst dann ist es garkein Problem. Wenn du aber das zweite doc irgendwann und von irgendwo erstellt hast dann schon.

robert
Titel: Re: mal wieder Feldwerte übernehmen
Beitrag von: Daniel Weiß am 10.03.06 - 09:47:46
Also, ich wollte ja mal eine Ansicht erstellen in der man nur die Beaschreibung sehen kann, aber nicht durch doppelklick auf das Thema in die Maske gelangt. (Mein Beitrag vom 24.02. In Ansicht nur Beschreibung anzeigen). Jetzt dachte ich mir dann erstelle ich halt eine neue Maske die den Feldwert der Hauptmaske übernimmt und erstelle darauf die Ansicht.

Es soll so sein: Ich erstelle über die Hauptmaske ein Dokument. Wenn dieses gespeichrt wird, soll die Themabeschreibung in eine neue Maske übertragen werden und die neue Maske dann den Eintrag speichern. Dann kann man über die Ansicht nur das Thema sehen und wenn man einen doppelklick drauf macht kommt man in die Maske und nicht mit der das Dokument erstellt wurde.

Hoffe das ist einigermassen verständlich geschrieben
Titel: Re: mal wieder Feldwerte übernehmen
Beitrag von: klaussal am 10.03.06 - 10:02:11
Wenn ich doch in der Ansicht das Thema sehen kann, was bringt mir dann das Ansehen des Docs, wenn ich da auch nur das Thema sehe ?

Den rudimentären Infos nach zu urteilen, würde ich sagen: was soll das Ganze. ?  :-:
Titel: Re: mal wieder Feldwerte übernehmen
Beitrag von: Klafu am 10.03.06 - 10:06:23
Ich denke ein kleiner Blick hier in die vorgeschichte könnte helfen

http://atnotes.de/index.php?topic=29023.0
Titel: Re: mal wieder Feldwerte übernehmen
Beitrag von: Axel am 10.03.06 - 10:14:43
Nicht's einfacher als das. Das sind Grundlagen der ersten Programmierstunde. ;)

Im QuerySave-Event:

...
Set db = session.CurrentDatabase
Set newdoc = New NotesDocument(db)
newdoc.Form = "Name der Maske"
newdoc.Feldname = Source.FieldGetText("Feldname mit Thema")
Call newdoc.Save(True,False)
...


Die Sache hat allerdings einen entscheidenden Haken. Was passiert, wenn das Thema eines bestehenden Dokumentes geändert wird? Im vorliegenden Fall wird bei jedem Speichern ein neues Dokument angelegt.

 
Axel
Titel: Re: mal wieder Feldwerte übernehmen
Beitrag von: klaussal am 10.03.06 - 10:23:47
Deshalb habe ich ja nach dem tieferen Sinn gefragt.
Irgendwie scheint mir das Konzept nicht ganz zu Ende gedacht zu sein.
Titel: Re: mal wieder Feldwerte übernehmen
Beitrag von: Axel am 10.03.06 - 10:54:58
Deshalb habe ich ja nach dem tieferen Sinn gefragt.
Irgendwie scheint mir das Konzept nicht ganz zu Ende gedacht zu sein.

Sehe ich auch so.

Soweit ich das Ganze bis jetzt verstanden habe, geht es darum das bestimmte User nur das Thema sehen dürfen und keine anderen Informationen, die in dem Dokument noch enthalten sind.

Ein durchgängigeres Konzept wäre es die Infos innerhalb des Dokumentes zu verbergen. Allerdings sollte dann auch die Gestaltung der DB verborgen werden, damit die Feldinhalte nicht über die Dokumenteigenschaften lesbar sind.

Ganz wasserdicht ist die Lösung aber nicht. Findige User kommen dennoch an die Infos ran.

Wasserdicht wäre nur die Lösung über Leserfelder. Dann braucht's aber eine zweite Maske, die mit der ersten in irgendeiner Art und Weise verlinkt sein muss.

Schaun mer mal was der Fragesteller zu dem Thema zu sagen hat.

Axel
 
Titel: Re: mal wieder Feldwerte übernehmen
Beitrag von: klaussal am 10.03.06 - 11:04:20
Ich würde das ja über berechnete Teilmasken machen, wo dann die geheimen Informationen drinne stehen bzw. eine leere Teilmaske für den Rest der Welt.
Titel: Re: mal wieder Feldwerte übernehmen
Beitrag von: umi am 10.03.06 - 16:06:57
@Klauss
und was ist mit den Dokumenteneigenschaften? Dort können die Felder ja weiterhin eingesehen werden...
Titel: Re: mal wieder Feldwerte übernehmen
Beitrag von: Masterkrueger am 30.12.06 - 19:45:41
Hi, ich habe ein ähnliches/gleiches? Problem und wollte nicht noch ein Thread aufmachen ;)
also hier mein Problem. Ich habe eine Hauptmaske und erstelle Antwortdokumente daraus. Bedeutet das unter Extras der Antwortmaske "Felder übernehmen Werte aus gewähltem Dokument" angehakt ist. Wenn ich jetzt in einer Ansicht vom Hauptdokument auf Aktion erstelle Antwortdokument gehe werden alle Werte die ich angegeben habe mit übernommen.
Problem: es handelt sich jetzt um einen Workflow den ich einbaue und erstelle neue Dokumente, setz das Form-feld und lass die Maske drübervalidieren. Schön und gut, aber so werden die Werte nicht übernommen und ich wollte ungerne alle Felder im Code nochmal angeben (also wenn es nicht möglich oder nur sehr schwer durchführbar ist mache ich es so, aber es muss doch eine elegante Lösung geben aus der Ansicht heraus über eine Aktion das Hauptdokument zu schnappen und das Antwortdokument generieren zu lassen.

Vielen Dank im Vorraus

Stefan
Titel: Re: mal wieder Feldwerte übernehmen
Beitrag von: koehlerbv am 31.12.06 - 00:10:45
Puh, am Wochenende hat meine Kristallkugel immer frei  ;D Das einzige, was ich erahne, ist, dass da was im Backend laufen soll, und dort scheitern natürlich Vererbungsmethoden aus dem Frontend.
Ich ahne auch, dass ich Möglichkeiten benennen könnte, wie man hier trotzdem mit wenig Aufwand aus der Sache herauskommt. Eine Ahnung ist mir aber zu wenig, um mich dafür anzustrengen.
Ergo: Mehr Input, mehr Output. Mit einer sauberen Beschreibung der Aufgabe kommen wir bestimmt weiter.

Bernhard
Titel: Re: mal wieder Feldwerte übernehmen
Beitrag von: Masterkrueger am 31.12.06 - 15:19:27
puh, also eine exakte Beschreibung meines Problems. Ich versuchs mal  ::) Ich habe ein Hauptdokument (kurz HD), nein ich geh noch weiter zurück, ich habe natürlich ein Formular, dieses nennt sich Hauptmaske und erstellt die oben genannten Dokumente. Ein zweites Formular, die Antwortmaske (also die Dokumente die daraus entdtehen Antwortdokumente kurz AD). Ich kann jetzt, wie kann es auch anders sein, nur von einer Ansicht aus ein HD wählen und über den Menüpunkt Erstellen/Antwortmaske ein AD erzeugen. Die Werte werden dabei wie gewünscht vom HD in das neue AD übernommen. Da ich nun aber ein Workflow erstellen will, bzw bereits teilweise getan habe, muss das Ganze automatisch vonstatten gehen. Mein Ziel ist es in einem HD eine Aktion über die Aktionsleiste aufzurufen, wonach n-Antwortdokumente erstellt und gespeichert werden. Vielleicht sollte ich einfach mal den Code posten (das ist die ganze Aktion im HD):
Code
	Dim ws As New NotesUIWorkspace
	Dim s As New NotesSession
	Dim uidoc As NotesUIDocument
	Set uidoc = ws.CurrentDocument
	Call uidoc.Save()
	Dim hddoc As NotesDocument
	Set hddoc = uidoc.Document	
	Dim db As NotesDatabase
	Set db = s.CurrentDatabase
	Dim addoc As NotesDocument
	'Anzahl der zu erstellenden Antwortdokumente ermitteln
	'und in der Schleife erstellen	
	Dim flag As Boolean	
	Dim tempIDsAD As NotesItem
	Set tempIDsAD = hddoc.GetFirstItem("IDsAD")
	Forall lElements In hddoc.ZugeordnetePersonen
		Set addoc = db.CreateDocument
		addoc.Form = "Antwortmaske"
		flag = addoc.Save(False,False)	
		flag = addoc.ComputeWithForm(False,False)
		If flag = False Then
			Print "Fehler beim ComputeWithForm der Maske"
		Else
			Print "ComputeWithForm ok"
		End If	
		'IDsAD im HD anhängen	
		tempIDsAD.AppendToTextList(addoc.NoteID)
		Call hddoc.Save(False,False)
		
		'Neues Dokument zum Antwortdokument machen
		Call addoc.save(False,True)
	End Forall
	Call hddoc.Save(False,False)

So, können Werte hier im LS-Code ebenso leicht übernommen werden, wie über die Aktion?
z.B. HD -> Feld Berichtsname = "Bericht2007" das geht in das AD Feld Berichtsname = Berichtsname

Ich hoffe, das ist alles einigermassen verständlich  ;D

p.s. ganz kurze Frage noch, wie starte ich @Formeln aus LS heraus? Ich weiss das es geht, finde die Seite aber nicht wieder :(

Vielen Dank

Stefan
Titel: Re: mal wieder Feldwerte übernehmen
Beitrag von: MadMetzger am 31.12.06 - 15:35:20
p.s. ganz kurze Frage noch, wie starte ich @Formeln aus LS heraus? Ich weiss das es geht, finde die Seite aber nicht wieder :(

Das geht mit Evaluate. Dazu gibt es auch einen BestPractice-Artikel, denn nicht alle Formeln funktionieren mit Evaluate.

EDIT: Der Artikel ist hier (http://atnotes.de/index.php?topic=28334.0).

EDIT2:

Wenn du per Script die Werte übernehmen willst, geht das relativ einfach analog zu addoc.Form = "Antwortmaske". Und zwar kannst du per
addoc.Berichtsname = hddoc.Berichtsname einfach die Werte übernehmen.
Titel: Re: mal wieder Feldwerte übernehmen
Beitrag von: koehlerbv am 31.12.06 - 16:07:37
Es geht also wirklich um eine Backend-Aktion. Wie schon gesagt: Du kannst dort den Vererbungsmechanismus des Frontends nicht verwenden und musst alles "zu Fuss" erledigen.

By the way:
  'Neues Dokument zum Antwortdokument machen
  Call addoc.save(False,True)
erzeugt Dir kein Antwortdokument, hierfür brauchst Du Call addoc.MakeResponse (hddoc).

Du musst jetzt entscheiden, ob Du mehr Items aus hddoc in addoc übernehmen willst oder eher weniger. Im Fall 1: Da lohnt sich das Kopieren der Items von hddoc nach addoc und danach unbenötigte wieder entfernen, im Fall 2 müssten die Items einzeln übernommen werden.

Bei der ganzen Party kannst Du ja auch mit einem Array der zu kopierenden Itemnamen operieren und dieses zum Kopieren der Items verwenden.

Auf jeden Fall ist Handarbeit angesagt  ;D

Bernhard
Titel: Re: mal wieder Feldwerte übernehmen
Beitrag von: Masterkrueger am 31.12.06 - 16:30:30
Ok ;) dann weiss ich ja was zu tun ist.
Ich hatte zuerst MakeResponse benutzt, aber dann gesehen das notesDocument.Save( force, createResponse [, markRead ] ) also in meinem Falle false,true doch ein Antwortdokument erzeugt (tut es wirklich :)

HAAAALT :)) ich nehme alles zurück!!! es fehlt das $REF Feld, also hatten Sie recht, nur mit MakeResponse wird es eingefügt ;) sry
Titel: Re: mal wieder Feldwerte übernehmen
Beitrag von: MadMetzger am 31.12.06 - 17:14:10
Oder du arbeitest mit einer List(die ja eigentlich eine Art Map ist), die sogar ermöglichen würde, dass Feldnamen in andere umgesetzt werden.
Titel: Re: mal wieder Feldwerte übernehmen
Beitrag von: Masterkrueger am 31.12.06 - 18:54:58
stimmt, mit den Feldnamen als Index hmmmm ich glaube das mache ich noch, danke.
Ich habe jetzt die n00b-Variante gewählt ;)
AntwortDoc.Feldname = HauptDoc.FeldValue
naja aber es läuft :)

thx4all