Autor Thema: Optimierung Lotus Script  (Gelesen 4134 mal)

Offline Wilhelm Weber

  • Junior Mitglied
  • **
  • Beiträge: 75
Optimierung Lotus Script
« am: 04.02.09 - 12:14:00 »
Hallo zusammen,

ich bräuchte mal einen Tipp..:-)

Folgendes Problem: Ich habe eine Maske mit ca. 30 Feldern.

Jetzt habe ich ein Skript, das sobald in einem der Felder ein Wert steht, daraus ein Neues Dokument erstellt.
Meine Frage ist, ob ich es in Skript so hinbekomme , dass der die Leeren Felder direkt übersspringt, weil ich sonst einen RiesenCode habe.
In der Formelsprache kann ich ja folgendes machen:
Liste:= @Trim(@Replace(Feld1:Feld2; ""; ""));
Damit kriege ich nur die Felder , die einen Wert haben indie Liste .
Wenn ich das in Skript versuche nachzubauen, klappt es leider nicht.
Deshalb sieht mein Code so aus, dass ich jedes Feld aufrufe , schaue ob was drin steht, wenn ja wird ein neues Dok erstellt, wenn nein gehts zum nächsten Feld.

das sieht dann so aus....

einlesen der Felder, dan die prüfung

If F1 <> "" Then
      Set doc1 =New NotesDocument (db)
      doc1.form = "xx"
      doc1.ma = F1
            
      Dim aut1  As String
      aut1 = "[Konfig]"
      Dim authorsitem As New NotesItem(doc1, "autor", aut1, AUTHORS)
      
      Call doc1.ComputeWithForm(True, False)
      Call doc1.save(True,False)
   End If
   
   If f2 <> "" Then
      Set doc2 =New NotesDocument (db)
      doc2.form = "xx"
      doc2.ma = f2
      
      Dim aut2  As String
      aut2 = "[Konfig]"
      Dim authorsitem2 As New NotesItem(doc2, "autor", aut2, AUTHORS)
      
      Call doc2.ComputeWithForm(True, False)
      Call doc2.save(True,False)
   End If

und so weiter...

Das geht bestimmt eleganter ??

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Optimierung Lotus Script
« Antwort #1 am: 04.02.09 - 12:16:29 »
NotesDocument.GetItemValue erlaubt die Angabe des auszulesenden Items durch eine Variable. Du brauchst tatsächlich also nur eine einzige Schleife.
Die Itemnamen kannst Du in ein Array packen oder ggf. "errechnen", wenn die Dinger wirklich "Feld1", "Feld2", ... heissen.

Bernhard

Offline atbits

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • sei Du selbst die Veränderung, die Du Dir wünschst
    • atBits
Re: Optimierung Lotus Script
« Antwort #2 am: 04.02.09 - 12:19:01 »
Eine eigene Funktion und eine Schleife?
Die Frage nach dem Sinn für jeden Feldwert immer ein Dokument zu schreiben stellt sich irgendwie aber auch.

Grüße David
David Schiffer
================================
atBits GmbH & Co. KG - https://atbits.de
im Einsatz: Lotus Domino 8.5, 9, 10

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: Optimierung Lotus Script
« Antwort #3 am: 04.02.09 - 12:37:48 »
Sollte dann etwa so gehen

const AUTH = "[Konfig]"
Dim retVal as Variant
Dim i as integer
For i = 1 to 30
  if Trim(doc.GetItemValue("Feld" &cstr(i))(0)) <> "" then
      Set newdoc =New NotesDocument (db)
      newdoc.form = "xx"
      newdoc.ma = "Feld" & cstr(i)
      Dim authorsitem As New NotesItem(newdoc, "autor", AUTH, AUTHORS)
      Call newdoc.ComputeWithForm(True, False)
      Call newdoc.save(True,False)
  end if
next 
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Wilhelm Weber

  • Junior Mitglied
  • **
  • Beiträge: 75
Re: Optimierung Lotus Script
« Antwort #4 am: 04.02.09 - 12:44:06 »
Der Ansatz hilft mir schonmal wesentlich weiter.

Der Sinn der ganzen Sache ist für jeden Tag im Monat ein einzelnes Dokument in eine Klaenderansicht zu bringen.

dazu müsste noch ein Startdatum gesetzt werden durch Auslesen des aktuellen Monats und Jahr.
Der Tag entspricht dann dem Feld.

Sprich Feld1 sollte am ersten Tag des Monats einen Eintrag erzeugen.

Kann man das auch variabel lösen.

Sorry, ist mein 2. Post bin noch sehr neu in der Thematik..

Grüße
Wilhelm

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Optimierung Lotus Script
« Antwort #5 am: 04.02.09 - 12:47:40 »
Der Sinn der ganzen Sache ist für jeden Tag im Monat ein einzelnes Dokument in eine Klaenderansicht zu bringen.

Und wozu brauchst Du dazu 31 Felder??

Bernhard

Offline Wilhelm Weber

  • Junior Mitglied
  • **
  • Beiträge: 75
Re: Optimierung Lotus Script
« Antwort #6 am: 04.02.09 - 13:15:39 »
weil z.B. Sonntags keine Einträge gemacht werden sollen und sich hinter jedem tag je nach Verfügbarkeit andere werte zur Auswahl ergeben.

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Optimierung Lotus Script
« Antwort #7 am: 04.02.09 - 15:31:05 »
im Script den Wochentag abfragen ?? ??  :o
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline Wilhelm Weber

  • Junior Mitglied
  • **
  • Beiträge: 75
Re: Optimierung Lotus Script
« Antwort #8 am: 05.02.09 - 08:28:52 »
erstmal Danke an alle !!

Hab eine für mich gute Lösung zusammenbekommen..

Const AUTH = "[Konfig]"
   
   Dim i As Integer
   For i = 1 To 31
      If Trim(doc.GetItemValue("F" &Cstr(i))(0)) <> "" Then
         Set newdoc =New NotesDocument (db)
         newdoc.form = "xx"
         
         If i > 9 Then
            newdoc.startdatum = Cdat( Cstr(i) & "." & doc.GetItemValue("mon")(0) & "." & doc.GetItemValue("jahr")(0))
         Else
            newdoc.startdatum = Cdat( "0" &Cstr(i) & "." & doc.GetItemValue("mon")(0) & "." & doc.GetItemValue("jahr")(0))
         End If
         
         newdoc.ma = doc.GetItemValue("F" &Cstr(i))(0)
         Dim authorsitem As New NotesItem(newdoc, "autor", AUTH, AUTHORS)
         Call newdoc.ComputeWithForm(True, False)
         Call newdoc.save(True,False)
      End If
   Next 

Damit läuft es einwandfrei..

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Optimierung Lotus Script
« Antwort #9 am: 05.02.09 - 16:54:47 »
Ich will dir deine Lösung ja nicht verhageln, aber wie schaut es mit Feiertagen, dem Wechsel der AnzahlTage pro Monat und Schaltjahren aus?
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Optimierung Lotus Script
« Antwort #10 am: 05.02.09 - 17:04:49 »
Feiertage oder Schaltjahre sind ja gar nicht notwendig - was passiert mit einem Eintrag für den 31. April 2009?

Wilhelm, ich glaube, Du rennst hier mit einer scheinbar funktionierenden Lösung in einen unstatthaften Holzweg. Wenn Du uns beschreibst, was Du *eigentlich* erreichen willst, geben wir Dir sehr gerne Tipps, die Dir bestimmt auch in er Zukunft helfen werden. Derzeit erscheint es aber so, dass man nur sagen kann: "So kann das nix werden!".

Bernhard

Offline Wilhelm Weber

  • Junior Mitglied
  • **
  • Beiträge: 75
Re: Optimierung Lotus Script
« Antwort #11 am: 06.02.09 - 21:54:56 »
Danke für eure Einwände..

Ich fange die Problematik dadurch ab, dass  in der Eingabemaske ein Eintrag für ein nicht
existierendes datum ( 31.4 oder 29.02.2009) deshalb nicht möglich ist, da das Feld  für dieses datum (wenn @weekday -1 ergibt) ausgeblendet wird.

Vlt. nicht elegant, aber es klappt.

Grüße
Wilhelm

P.S. Versuche immer gut zu beschreiben, wenn es manchmal nicht funktioniert... Sorry !!


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Optimierung Lotus Script
« Antwort #12 am: 06.02.09 - 22:47:28 »
Ich mag jetzt gar nicht mehr wissen, warum Du nun wirklich diese Maske mit den 31 Feldern brauchst, denn auch dabei wirst Du Dir etwas denken. Das Abfangen ungültiger Tage löst Du auf jeden Fall elegant  :)

Ich freue mich auf weitere Fragen von Dir, Wilhelm.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz