Autor Thema: Wert eines Feldes bei mehreren Doks ändern  (Gelesen 3399 mal)

Offline matzge

  • Frischling
  • *
  • Beiträge: 21
  • Ich liebe dieses Forum!
Wert eines Feldes bei mehreren Doks ändern
« am: 28.07.03 - 08:16:11 »
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

  • Gast
Re:Wert eines Feldes bei mehreren Doks ändern
« Antwort #1 am: 28.07.03 - 10:56:40 »
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

Offline matzge

  • Frischling
  • *
  • Beiträge: 21
  • Ich liebe dieses Forum!
Re:Wert eines Feldes bei mehreren Doks ändern
« Antwort #2 am: 28.07.03 - 11:21:52 »
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

Offline Doc Torte

  • Aktives Mitglied
  • ***
  • Beiträge: 178
  • Geschlecht: Männlich
  • ...promovierter Bäcker... ;-)
    • ...that's me
Re:Wert eines Feldes bei mehreren Doks ändern
« Antwort #3 am: 28.07.03 - 11:33:27 »
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...

Wer nicht ständig besser wird, hört bald auf gut zu sein !
Schritt für Schritt geht's immer vorwärts...

Glombi

  • Gast
Re:Wert eines Feldes bei mehreren Doks ändern
« Antwort #4 am: 28.07.03 - 11:34:03 »
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

Offline matzge

  • Frischling
  • *
  • Beiträge: 21
  • Ich liebe dieses Forum!
Re:Wert eines Feldes bei mehreren Doks ändern
« Antwort #5 am: 28.07.03 - 11:50:36 »
Hallo Andreas!

Danke für das Script. Die Ansicht habe ich bereits erstellt und das Script verstehe ich auch so einigermaßen.

Nur noch eine Frage. Du sprichst von einer Teilmaske. Reicht es wenn ich eine Form mit den enprechenden Feldern erstelle?

Grüße und herzlichen Dank

Roland

Glombi

  • Gast
Re:Wert eines Feldes bei mehreren Doks ändern
« Antwort #6 am: 28.07.03 - 11:58:26 »
Hallo Roland,
wenn ich eine Dialogmaske erstelle, nehme ich immer Teilmasken und nenne die dann "(DialogSinnUndZweck) | DialogSinnUndZweck".
Damit hat man eine saubere Trennung bei den Teilmasken. Du kannst aber auch eine "normale" Maske nehmen.

Andreas
« Letzte Änderung: 28.07.03 - 11:58:51 von Glombi »

klaussal

  • Gast
Re:Wert eines Feldes bei mehreren Doks ändern
« Antwort #7 am: 28.07.03 - 11:59:10 »
... jau, geht auch.

Offline matzge

  • Frischling
  • *
  • Beiträge: 21
  • Ich liebe dieses Forum!
Re:Wert eines Feldes bei mehreren Doks ändern
« Antwort #8 am: 28.07.03 - 12:05:13 »
DANKE!

Ich werde dann eher eine eigene Form nehmen

Nochmal herzlichen Dank an alle die mir geholfen haben

Grüße

Roland

Offline matzge

  • Frischling
  • *
  • Beiträge: 21
  • Ich liebe dieses Forum!
Re:Wert eines Feldes bei mehreren Doks ändern
« Antwort #9 am: 28.07.03 - 14:10:00 »
Hallo Andreas!

Leider habe ich mich etwas zu früh gefreut.
Ich habe jetzt alles so erstellt wie du gesagt hast.
Das Script habe ich bei Initialize eingefügt. Das Dialogfeld wird ordnungsgemäß eingefügt. Wenn ich auf Ok klicke, dann wird das Programm (so scheint es zumindest) ausgeführt. Leider ändern sich die Lokationen der Bücher nicht.
(Ich habe die Ansicht refreshed)

Hast du eine Idee wo der Fehler liegen könnte.

Grüße und Danke
Roland

Glombi

  • Gast
Re:Wert eines Feldes bei mehreren Doks ändern
« Antwort #10 am: 28.07.03 - 14:18:05 »
Hallo Roland,
poste Deinen Code bitte mal.

Und gib bitte an, wie die Felder in der Dialogmaske heißen.

Ich gehe davon aus, dass in der View alle Dokumente stehen, die geändert werden sollen.

Andreas

Offline matzge

  • Frischling
  • *
  • Beiträge: 21
  • Ich liebe dieses Forum!
Re:Wert eines Feldes bei mehreren Doks ändern
« Antwort #11 am: 28.07.03 - 14:30:54 »
Hallo Andreas!

Also hier der Code:
    Sub Initialize
   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("ExchangeView")
   
'Rufe Dialogbox auf
   Set dialogdoc = db.CreateDocument
   ret = ws.Dialogbox("DialogLokation",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
End Sub

Die Felder im Form (Name der Form: DialogLokation):LokationAlt, LokationNeu.
Wenn ich mir den View anzeigen lasse, so beinhaltet er alle Dokumente in der Datenbank. Eben geordnet nach der Lokation (nicht kategorisiert).

Grüße und Danke

Roland

klaussal

  • Gast
Re:Wert eines Feldes bei mehreren Doks ändern
« Antwort #12 am: 28.07.03 - 14:38:48 »
... hat script die felder im doc geändert ?
lass mal den debugger mitlaufen, da kann man schön verfolgen, was sache ist.

Glombi

  • Gast
Re:Wert eines Feldes bei mehreren Doks ändern
« Antwort #13 am: 28.07.03 - 14:43:59 »
Evtl. liegt es hier dran:
doc.Lokation = dialogdoc.LokationNeu(0)

Prüf mal ob der Feldname wirklich "Lokation" ist.

Andreas

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline matzge

  • Frischling
  • *
  • Beiträge: 21
  • Ich liebe dieses Forum!
Re:Wert eines Feldes bei mehreren Doks ändern
« Antwort #15 am: 28.07.03 - 15:11:08 »
Hallo!

Danke für die Hilfe!
Es lag tatsächlich an Feldnamen "Lokation". Sollte eigentlich "Location" heißen.
Jetzt funktioniert die Sache sehr gut.

Danke und viele Grüße

Roland

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz