Autor Thema: Bei Formeln gibts den Befehl, bei Script nicht???  (Gelesen 3494 mal)

Offline Mr.John_Doe

  • Frischling
  • *
  • Beiträge: 11
  • Ich liebe dieses Forum!
Hallo,

ich arbeite immer noch an dem Problem (ein paar Threads früher).
Langsam hab ich eine Ahnung, wie ich dass hier lösen kann. Aber ich hab ein Problem:
Ich möchte, dass jemand 2 Daten eingibt von... bis...
Dann wollte ich in einem LotusScript mit @Explode(Date-range) die Daten in eine Liste machen und die dann durch eine Schleife jagen...
Leider geht der Befehl anscheinend nur in dieser Formelsprache, also nicht im LotusScript. Wie kann ich dass dort machen.
Auch bräuchte ich dann den Befehl IsMember für weitere Operationen.
Kann mir bitte jemand sagen, wie ich dass hier hinkriege.

Noch etwas. Ich möchte dann eine Eingabeform haben, wo der User in Textfelder seine Eingaben machen kann.
Ich hab es mit einer "Seite" versucht, aber da kann ich irgendwie kein Eingabefeld erstellen.
Und bei einer Maske wird doch gleich eine "Datenbank" mit erstellt, oder? Kann mir da bitte einer Helfen.

Ich bin wirklich neu in Lotus...

Und noch was, weiß jemand, wo man gute Tutorials in Deutsch herbekommt. Leider sind die Bücher hier, naja, nicht sonderlich gut.

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Bei Formeln gibts den Befehl, bei Script nicht???
« Antwort #1 am: 29.01.03 - 08:46:56 »
@Explode in LS:

Function Explode(inputString As String, delimiter As String) As Variant
   
   Dim workingString As String
   workingString = inputString
   
   Dim array() As String
   Redim array(0)
   
   Dim pos As Integer
   Dim nextPos As Integer
   pos = Instr(workingString, delimiter)
   While pos <> 0
      array(Ubound(array)) = Left(workingString, pos - 1)
      workingString = Right(workingString, Len(workingString) - Len(delimiter) - pos + 1)
      pos = Instr(workingString, delimiter)
      Redim Preserve array(Ubound(array) + 1)
   Wend
   array(Ubound(array)) = workingString
   
   Explode = array
   
End Function

@isMember

entweder du machst ein @implode in LS

Function Implode(inputArray As Variant, delimiter As String) As String
   
   If Datatype(inputArray) = 8 Then
      Implode = inputArray
      Exit Function
   End If
   
   Forall strInput In inputArray
      Implode = Implode + strInput + delimiter
   End Forall
   
   Implode = Left(Implode, Len(Implode) - Len(delimiter))
   
End Function

und suchst dann den String mit

positionOfChar& = InStr(1, big$, little$)

wenn positionOfChar& > 0 dann ist @Member = true


Alternatic kannst du auch das Array mit

Function inArray (Element As String, Elements As Variant, CaseSensitive As Integer) As Integer
   Dim tmpString As Integer
   inArray = False
   For tmpString = 0 To Ubound (Elements)
      If CaseSensitive Then
         If Ucase(Element) = Ucase(Elements (tmpString)) Then inArray = True
      Else
         If Element = Elements (tmpString) Then inArray = True
      End If
   Next
End Function

durchsuchen.

Wenn der Suchstring ( Member ) enthalten ist, dann liefer die Funktion TRUE zurück.

eknori
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Mr.John_Doe

  • Frischling
  • *
  • Beiträge: 11
  • Ich liebe dieses Forum!
Re:Bei Formeln gibts den Befehl, bei Script nicht???
« Antwort #2 am: 29.01.03 - 09:15:04 »
Danke,
ich probier das mal...
Leider verstehe ich nur die Hälfte  ???

Hoffentlich klappt das...

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Bei Formeln gibts den Befehl, bei Script nicht???
« Antwort #3 am: 29.01.03 - 09:21:37 »
... man kann den @Explode in LS auch mit Evaluate verwenden...

vVariant = Evaluate( |@Explode( "|+sString+|" ; "|+sTrennzeichen+|" )|)

... für einfachere Auftrennungen durchaus verwendbar...

ata
Grüßle Toni :)

Offline Mr.John_Doe

  • Frischling
  • *
  • Beiträge: 11
  • Ich liebe dieses Forum!
Re:Bei Formeln gibts den Befehl, bei Script nicht???
« Antwort #4 am: 29.01.03 - 09:47:02 »
Ich glaub, langsam steig ich hinter den Code -irgendwie...

Leider brauch ich die Explode-Funktion, um ein Array aud dem Anfangs und dem Enddatum zu erstellen.
D.h. jemand gibt z.b. den 01.01.2003 und den 31.01.2003 ein, dann brauch ich ein Array: 01.01.2003|02.01.2003|03.01.2003-| usw...

Ich hab noch ne Frage:
Bis jetzt hab über search alle Dokumente in ein Array geschoben, wo die angegebene ID übereinstimmt. Das dauert aber ziemlich lange. Gibt es da vielleicht noch eine bessere Variante?

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Bei Formeln gibts den Befehl, bei Script nicht???
« Antwort #5 am: 29.01.03 - 10:17:34 »
... über eine Ansicht, erste Spalte sortiert nach ID und dann

view.GetAllDocumentsByKey(...)

ata
Grüßle Toni :)

Offline Mr.John_Doe

  • Frischling
  • *
  • Beiträge: 11
  • Ich liebe dieses Forum!
Re:Bei Formeln gibts den Befehl, bei Script nicht???
« Antwort #6 am: 29.01.03 - 11:16:51 »
Zu dem Evaluate. Ich hab da mal folgenden Script geschrieben zum testen:

Sub Click(Source As Button)
   Dim Date1 As Variant
   Dim Date2 As Variant
   Dim VonBis As String
   Dim vVariant As Variant
   
   Date1 = Inputbox ("Datum1")
   Date2 = Inputbox ("Datum2")
   VonBis = Date1 + "-" + Date2
   
   Messagebox VonBis
   'vVariant = Evaluate( |@Explode( VonBis)|)
   vVariant = Evaluate( |@Explode( "|+VonBis+|")|)
   
   Msgbox vVariant
   
End Sub

Leider funktioniert der nicht. Was mach ich da falsch.
Beide Evaluate-Vaianten laufen leider nicht.

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Bei Formeln gibts den Befehl, bei Script nicht???
« Antwort #7 am: 29.01.03 - 12:32:34 »
... bei deinen Inputs bekommst du Text zurück. Der Text muß in ein Datum gewandelt werden...

ata
Grüßle Toni :)

Offline Mr.John_Doe

  • Frischling
  • *
  • Beiträge: 11
  • Ich liebe dieses Forum!
Re:Bei Formeln gibts den Befehl, bei Script nicht???
« Antwort #8 am: 29.01.03 - 13:03:00 »
Ich kann die nicht mal erzeugen...
Ich bin auf einer Seite, klicke auf das Textfeld und dann kommt die Fehlermeldung:
Ausgewählter Befehl kann nicht ausgeführt werden!

--Sehr informativ, nicht wahr

Offline wflamme

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 690
  • Geschlecht: Männlich
  • Irgendwie geht das schon...
    • wflamme
Re:Bei Formeln gibts den Befehl, bei Script nicht???
« Antwort #9 am: 29.01.03 - 15:35:11 »
DateList := @Explode(
 @TextToTime(
  @Text(StartTagDT) + "-" + @Text(EndeTagDT)
 )
);

@TextToTime(@Text(DateList))

Gibt Datumsliste Zwischen StartTagDT und EndeTagDT zurück.
Am besten in einem versteckten Feld der Eingabemaske berechnen lassen.
Grüße,
Wolfgang

"I love deadlines. I love the whooshing sound they make as they pass by..."
DOUGLAS ADAMS

wflamme@mainz-online.de
http://www.sns1.de/partner/flamme/wflamme.nsf

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Bei Formeln gibts den Befehl, bei Script nicht???
« Antwort #10 am: 29.01.03 - 16:05:57 »
... ohne Explode sieht das so aus...

Code
   Dim Date1 As String
   Dim Date2 As String
   Dim AnzTage As Integer
   Dim i As Integer
   Dim sDate() As String
   
   Date1 = Inputbox ("Datum1") ' # StartDatum
   Date2 = Inputbox ("Datum2") ' # EndDatum
   '
   AnzTage=Datevalue(Date2) - Datevalue(Date1)
   Redim Preserve sDate(0 To AnzTage )
   For i = 0 To AnzTage 
      sDate(i ) = Datevalue(Date1) + i 
      ' Msgbox sDate(i)
   Next
   ' # Die Variable sDate enthält alle Datumswerte

... das liefert im Array genau das, was du brauchst...

ata  ;D
Grüßle Toni :)

Offline Mr.John_Doe

  • Frischling
  • *
  • Beiträge: 11
  • Ich liebe dieses Forum!
Re:Bei Formeln gibts den Befehl, bei Script nicht???
« Antwort #11 am: 29.01.03 - 22:02:52 »
Oh man, bist du Gott. Danke, es pressiert nämlich langsam...

Nur das mit den Textfeldern hab ich noch nicht hingekriegt.
Wenn ich dass alles in eine Maske packe, wird doch gleichzeitig eine Datenbank dafür angelegt, oder.

Ich brauch das aber als Form (wie in VB oder C++).

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Bei Formeln gibts den Befehl, bei Script nicht???
« Antwort #12 am: 30.01.03 - 00:36:52 »
... Was genau hast du eigentlich vor? Du willst eine Eingabemaske, aber keine DB - das geht nicht - Masken sind so etwas wie Formulare, zur Erstellung von Dokumenten (ähnlich wie Datensatz)...

... Soll das ein Web-DB sein?

... in einer Page kannst du keine Felder verwenden, daß geht nur mit einer Maske. Die Maske kann aber auch nur im UI gehalten werden, ohne daß ein Dokument gespeichert wird - dann braucht die Maske ein Textfeld, das  "SaveOptions" heißt und den String "0" enthält...

ata
« Letzte Änderung: 30.01.03 - 07:21:04 von ata »
Grüßle Toni :)

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Bei Formeln gibts den Befehl, bei Script nicht???
« Antwort #13 am: 30.01.03 - 05:54:12 »
Zitat
Wenn ich dass alles in eine Maske packe, wird doch gleichzeitig eine Datenbank dafür angelegt, oder.

da frage ich mich nur, wo und wie du den bisher geposteten Code getestet hast.

Zitat
...wirklich neu in Lotus...

offensichtlich sooooooo neu, daß du dich vielleicht erst einmal darüber informieren solltest, WAS Notes eigentlich ist. Möglicherweise verwechselst du das mit einer Programmiersprache.


Zitat
Wenn ich dass alles in eine Maske packe, wird doch gleichzeitig eine Datenbank dafür angelegt, oder ?

noch einmal, WO vollziehst du denn die ganzen Postings nach ???


eknori

Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Mr.John_Doe

  • Frischling
  • *
  • Beiträge: 11
  • Ich liebe dieses Forum!
Re:Bei Formeln gibts den Befehl, bei Script nicht???
« Antwort #14 am: 30.01.03 - 07:28:57 »
Ich hab das alles bis jetzt mit Inputboxen und einer Schaltfläche getestet.

Ich hab vor kurzem von meinem Meister den Auftrag bekommen, mach das...
Und nun muss ich fertig werden. Und jeden Tag ändert sich die Aufgabenstellung.
Notes ist keine Programmiersprache sondern eine "Dokumentenverwaltung"
Aber selbst im M$ Access hab ich das realisieren können. Jetzt soll ich das "nur" noch auf Notes portieren.
Meinem Meister interessiert nicht, ob ich da neu bin oder ob es einfach zu realisieren ist. Der will BALD Ergebnisse sehen.

Offline Mr.John_Doe

  • Frischling
  • *
  • Beiträge: 11
  • Ich liebe dieses Forum!
Re:Bei Formeln gibts den Befehl, bei Script nicht???
« Antwort #15 am: 30.01.03 - 09:02:11 »
Meine Aufgabe: Ich soll eine bestehende Datenbank nutzen. Dort sind Daten (meine damit die Mehrzahl von Datum) und Gerätenummern eingegeben.
Nun soll durch eine Eingabemaske ein Zeitrahmen von bis und eine Gerätenummer angegeben werden. Notes soll dann in einer Ansicht die Daten auflisten und die Anzahl der Tage, an denen die ID vorkommt.
Icj wollte dass jetzt so machen, dass dem User eine Maske mit 3 Textfeldern angezeigt wird. Dort gibt er die Daten und die ID ein, dann soll in einer Ansicht das angezeigt werden und oben in der Kopfzeile oder einer Seite über Frames die Anzahl.
Ich hab das jetzt so weit, dass eine Ansicht nur noch die die entsprechenden Dokumente anzeigt, aber leider hab ich dass bis jetzt nur fest in der Auswahlformel verankert:

SELECT (@Contains(HUB_ENC_ID; "11232234")) & (HUB_Datum => [27.01.2003]) & (HUB_Datum <= [28.01.2003])

Jetzt wollte ich die Eingabeform erstellen und wollte dazu eine Seite nutzen, was ja leider nicht geht.
Wie kann ich das machen, oder geht das überhaupt, dass ich die Auswahlkriterien von einer Maske übergeben kann?

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:Bei Formeln gibts den Befehl, bei Script nicht???
« Antwort #16 am: 30.01.03 - 11:09:15 »
im Gegensatz zu relationalen Anwendungen beherrscht Notes keine dynamischen Selects.
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

Offline Mr.John_Doe

  • Frischling
  • *
  • Beiträge: 11
  • Ich liebe dieses Forum!
Re:Bei Formeln gibts den Befehl, bei Script nicht???
« Antwort #17 am: 30.01.03 - 11:11:36 »
Kann ich das dann nicht irgendwie anders realisieren.

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Bei Formeln gibts den Befehl, bei Script nicht???
« Antwort #18 am: 30.01.03 - 11:56:37 »
... wie wärs denn die Dokumente mit db.Search in eine Collection zu ziehen und dann die Docs in einen privaten Ordner schieben, der zuvor gelleert wurde...

... nicht unbedingt schön, aber eine Möglichkeit...

ata
Grüßle Toni :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz