Domino 9 und frühere Versionen > Entwicklung

Wert eines Feldes bei mehreren Doks ändern

(1/4) > >>

matzge:
Hallo!

Bei meiner Bibliotheksdatenbank habe ich folgendes Problem.
Es wird jedem Buch (d.h. jedem Dokument) der Wert "Location" zugeordnet.
Ich möchte nun, dass der Benutzer Bücher von einer bestimmten Location in eine andere buchen kann.
D.h. es müsste in allen Dokumenten die einen bestimmten Locationwert besitzen die neue Location eingetragen werden.

Habt ihr vielleicht eine Idee wie ich dieses Problem (ohne Programmieren in LotusScript) lösen könnte.

Grüße und Danke

Roland

Glombi:
Hi,
wenn es denn unbedingt mit der @Formelsprache sein muss, könnte es so gehen:
Erstelle einen "Einmal ausführen" Agenten. Dort ruft Du eine @Promptbox auf, die die Lokationen anzeigt. Der User wählt eine aus.
Der Wert wird in die NOTES.INI geschreiben (bspw "EnvAlteLokation").
Dann in einer weiteren Promptbox die neue Lokation auswählen und auch in NOTES.INI schreiben.
Oder alternativ Auswahl der alten und neuen per Dialogbox.
Dann einen zweiten Agenten aufrufen:
Dieser läuft über alle Dokumente der Datenbank (oder der Ansicht)
Erste Zeile im Agenten
SELECT Lokation = @Environment("EnvAlteLokation");
FIELD Lokation := @Environment("EnvNeueLokation");

Für sowas ist aber Script deutlich besser geeignet.

Andreas

matzge:
Hallo Andreas!

Das ganze sieht ja relativ kompliziert aus.
Da ich ein Anfänger in Lotus Notes bin habe ich mich noch nicht mit LotusScript
auseinandergesetzt.
Vielleicht könntest du mir in Script etwas schreiben (falls es nicht zuviel Aufwand für dich ist.

Ansonsten: Ich kenne nur die Function @Prompt und finde auch die @Promptbox Function nicht. Könntest du mir erklären wie die Sache mit der Promtbox dann funktionieren kann? V.a. wie ich ein einer Promtbox ein Auswahlfeld bekomme das alle Locations anzeigt.

Grüße und Danke

Roalnd

Doc Torte:
vielleict wäre es dann angebracht mal die Designer-Hilfe zu lesen, wer nämlich einige Zeilen weiterliest, der findet

@Prompt([OkCancelEdit];

und da haben wirs auch schon, damit kann ich Eingaben vom User entgegen nehmen und wenn man sich die Beispiele anschaut, findet man auch schon Teile der Lösung...

Glombi:
Hi,
hier ein ausführlicherer Ansatz:
Du musst eine Ansicht erstellen, die in der 1. Spalte nach dem Feld Lokation sortiert (oder kategorisiert) ist.
Erstelle eine Teilmaske DialogLokation. In diese Teilmaske baust Du 2 Felder:
Alte Lokation - Feldname LokationAlt
Neue Lokation - Feldname LokationNeu
Die Felder werden jeweils mit @DbColumn als Schlüsselwortliste berechnet.
@Trim(@Unique(@DbColumn("","";"Name der Ansicht mit Lokationen",1)))

Der User wählt also hier aus.


Mit Script sähe das dann so aus - Formel als Agent, Einmal ausführen

dim ws as NotesUIWorkspace
dim session as NotesSession
dim db as NotesDatabase
dim view as NotesView
dim dc as NotesDocumentCollection
dim doc as NotesDocument
dim dialogdoc as NotesDocument
dim ret as Integer

set ws = New NotesUIWorkspace
set session = New NotesSession
set db = session.CurrentDatabase
set view = db.GetView("Name der Ansicht mit Lokationen")

'Rufe Dialogbox auf
set dialogdoc = db.CreateDocument
ret = ws.Dialogbox("Name der Teilmaske",true,true,false,false,false,false,"Lokation wechseln",dialogdoc)
if not ret then exit sub       'Abbruch, falls Abbrechen gewählt wurde

'Bilde Collection aller Dokument mit der alten Lokation
set dc = view.GetAllDocumentsbyKey(dialogdoc.LokationAlt(0), true )

'Iteriere über alle Dokumente und setze neue Lokation ein
set doc = dc.GetFirstDocument
while not (doc is Nothing)
doc.Lokation = dialogdoc.LokationNeu(0)
call doc.Save(false,true,true)

set doc = dc.GetNextDocument(doc)
wend


Andreas

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln