Autor Thema: Variables Script zur Inhaltsabfrage aufbauen  (Gelesen 6216 mal)

Offline 2stupid4this

  • Junior Mitglied
  • **
  • Beiträge: 70
  • Geschlecht: Männlich
  • Never touch a running system!
Variables Script zur Inhaltsabfrage aufbauen
« am: 27.01.09 - 16:04:18 »
Hallo zusammen,

habe bisher eine Eingabeprüfung starr in der Datenbank

...
if doc.Status(0)="" then fehler=fehler+"Status nicht gefüllt"
..
if fehler<>"" then
messagebox "Es sind folgende Fehler aufgetreten:"+chr$(13)+fehler
continue =false
exit sub
....


Würde nun gerne die Eingabeprüfung über Eingabeprüfungsdokumente vornehmen, die z.B. den Feldnamen, den Operator und den Inhalt beinhalten

Gibt es eine Möglichkeit das Script "variabel" aufzubauen?

Hätte mir das so gedacht:

....
        Dim pdoc        As NotesDocument
        Dim col           As NotesDocumentCollection
        Dim view        As NotesView
       
        Dim fehler$, temp$
       
        Set view = db.getView("view.eingabepruefung")
        Set col  = view.GetAllDocumentsByKey(doc.form(0))
        Set pdoc = col.GetFirstDocument
       
        While Not pdoc Is Nothing
                temp = "doc."&pdoc.Var1(0)&"(0) "&pdoc.Op1(0)&" "&pdoc.Formel1(0)
                If temp Then
                        Fehler = Fehler + pdoc.Fehlertext(0)+Chr$(13)
                End If
                Set pdoc=col.GetNextDocument(pdoc)
        Wend
       if fehler <>"" then
      ......


Funktioniert wie erwartet auch nicht. Jemand eine Idee, wo ich den Denkfehler habe, oder funktioniert das gar nicht.

Das das mit Evaluate und Formelbedingungen funktioniert weiss ich, würde ich aber eigentlich recht ungern verwenden.
Wer Rechtschreibfehler findet, darf diese behalten.

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Variables Script zur Inhaltsabfrage aufbauen
« Antwort #1 am: 27.01.09 - 16:39:19 »
While Not pdoc Is Nothing
                temp = "doc."&pdoc.Var1(0)&"(0) "&pdoc.Op1(0)&" "&pdoc.Formel1(0)
                If temp Then



temp ist jetzt ein Boolean?

und eine Zeile drüber sieht es aus, als obs ein String wäre ...
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline 2stupid4this

  • Junior Mitglied
  • **
  • Beiträge: 70
  • Geschlecht: Männlich
  • Never touch a running system!
Re: Variables Script zur Inhaltsabfrage aufbauen
« Antwort #2 am: 27.01.09 - 17:06:20 »
In Temp steht dann z.B. doc.Status(0)=""

Das ist ja gerade mein Problem. Hier soll sich die Abfrage, die True oder False ergibt erst generieren. Ähnlich dem in meinem Ursprungs-Script.

Var1 enthält z.B. Status
Op1 enthält z.B. =
Formel1 enthält z.B. ""

Ich könnte natürlich auch schreiben

 temp = pdoc.Var1(0)&" "&pdoc.Op1(0)&" "&pdoc.Formel1(0)
 if evaluate(temp, doc) then
    fehler = fehler + .....
 ....
 end if
....


Aber geht das rein in Script nicht auch?
Wer Rechtschreibfehler findet, darf diese behalten.

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: Variables Script zur Inhaltsabfrage aufbauen
« Antwort #3 am: 27.01.09 - 17:29:33 »
Doch das geht....
Aber du musst NotesItem benutzen.

Die direkte Ansprache eines Feldes KANN so nicht funktionieren.
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 2stupid4this

  • Junior Mitglied
  • **
  • Beiträge: 70
  • Geschlecht: Männlich
  • Never touch a running system!
Re: Variables Script zur Inhaltsabfrage aufbauen
« Antwort #4 am: 27.01.09 - 19:28:54 »
Ich stehe leider auf dem Schlauch.

Könttest Du mir das bitte noch ein bißchen mehr erklären. Ich sehe momentan den Wald vor lauter Bäumen nicht.

Hatte schon einen Ansatz mit

doc.getItemValue(gdoc.Var1(0)) = gdoc.Formel1(0)

aber dann verliesen sie mich, da ich nicht weiss wie ich den Operanten wie größer, kleiner, ungleich, etc. variabel einbinden kann. Also das = in obiger Zeile variable gestalten.

Als einziges würde mir noch einfalllen das mit


select case gdoc.Op1(0)
case "="
doc.getItemValue(gdoc.Var1(0)) = gdoc.Formel1(0)

case "<>"
doc.getItemValue(gdoc.Var1(0)) <> gdoc.Formel1(0)
....


Das muss doch noch einfacher gehen, oder?
Wer Rechtschreibfehler findet, darf diese behalten.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Variables Script zur Inhaltsabfrage aufbauen
« Antwort #5 am: 27.01.09 - 20:19:30 »
Das muss doch noch einfacher gehen, oder?

Ja, mit Evaluate, dann kannst Du den Operator auch mit dynamisch halten, Erik.

Nur: Sparst Du Dir damit wirklich Arbeit? Für eine Konfigurierbarkeit ("tragt Euch doch dort ein, was Ihr wollt und überprüft haben wollt") - okay. Aber ansonsten pinselst Du entweder am LS-Code *oder* am Konfigurations-Dokument.

Ausserdem: Was machst Du mit den ganzen schwierigen Bedingungen? Inhalt von Feld A darf nicht grösser sein als der Feld B? C muss in der Zukunft liegen? Usw. usf.

Bernhard

Offline 2stupid4this

  • Junior Mitglied
  • **
  • Beiträge: 70
  • Geschlecht: Männlich
  • Never touch a running system!
Re: Variables Script zur Inhaltsabfrage aufbauen
« Antwort #6 am: 28.01.09 - 11:23:11 »
Dann werde ich im Konfigurationsdokument die Abfragen über Formelsprache eingeben lassen.

Hintergrund ist eine Eingabeprüfung für Masken, die variabel sein soll, somit auch von einem Kollegen bedienbar ist, der keine Script-Erfahrung hat.

Ich will auch nicht immer eine neue Version erstellen, wenn ich nur an den Eingabeprüfungen was ändere.
Wer Rechtschreibfehler findet, darf diese behalten.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Variables Script zur Inhaltsabfrage aufbauen
« Antwort #7 am: 28.01.09 - 12:30:09 »
Ich arbeite massiv mit Evaluate, um erfahrenen Anwendern oder den Admins die Möglichkeit zu geben, Anwendungen oder Prozesse weitgehend selbst zu gestalten und unnötige Änderungen im Programmcode zu vermeiden.

Anwendungsfälle sind zum Beispiel die User-Unterstützung bei Suchabfragen oder die Festlegung von Archivierungsoptionen ... oder auch die flexible Festlegung, wer unter welchen Umständen welche Benachrichtigungen per eMail bekommen soll.

Ganz trivial ist das nicht, und man muss auch dafür sorgen, dass bereits bei der Eingabe mögliche (syntaktische) Fehler erkannt und dem Anwender / Admin gemeldet werden. Dafür steht einem dann ein sehr mächtiges Werkzeug zur Hand.

Bernhard

PS: Wirf in dieser Sache auch mal einen Blick in !!HELP!!  ;)

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: Variables Script zur Inhaltsabfrage aufbauen
« Antwort #8 am: 28.01.09 - 13:19:21 »
Stimmt- !!HELP!! hat in der Beziehung ein voll konfigurierbares Teil zu bieten.
Wobei die Konfiguration selber auch nicht unbedingt einfach ist.#


optGetsBack|DEPENDAND|default|ISVALUE#default#0~optReturn|NOBLANK|default
optGetsBack|DEPENDAND|default|ISVALUE#default#0~datReturnDate|NOBLANK|default
datOf|NOBLANK|default
datTo|NOBLANK|default
datTo|DEPENDAND|default|NOBLANK#default#~datTo|DATETIMECOMPARE|default|GE|datOf
datTo|DEPENDAND|default|NOBLANK#default#~datTo|DATETIMECOMPARE| - Eine Ausleihdauer über 3 Monate ist nicht möglich!|LT|maxLendDuration
namBorrower|NOBLANK|default
datReturnDate|DEPENDAND|default|NOBLANK#default#~optReturn|NOBLANK|default
datReturnDate|DEPENDAND|default|NOBLANK#default#~optGetsBack|ISVALUE|default|0
optReturn|DEPENDAND|default|ISVALUE#default#1~txtLack|NOBLANK|default
datReturnDate|DEPENDAND|default|NOBLANK#default#~datReturnDate|DATETIMECOMPARE|default|GE|datOf
optGetsBack|DEPENDAND|default|ISVALUE#default#1~optActive|ISVALUE|Wenn das Gerät noch nicht zurückgegeben wurde kann der Leihschein nicht auf erledigt gesetzt werden|0

ist nur ein Beispiel, allerdings nicht aus !!HELP!!
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: Variables Script zur Inhaltsabfrage aufbauen
« Antwort #9 am: 28.01.09 - 13:26:57 »
Da müssen wir nun aber trennen, Thomas: Du beschreibst einen eigenen Parser (der i.d.R. noch mehr Möglichkeiten bietet), das andere ist ein Formelinterpreter (der den Vorteil hat, dass "nur" die Kenntnis der Formelsprache ausreicht - aber dann kann man halt nicht alles abdecken, was man zum Beispiel mit Eurem Parser machen kann).

Bernhard

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: Variables Script zur Inhaltsabfrage aufbauen
« Antwort #10 am: 28.01.09 - 14:23:01 »
Stimmt. Wobei ich den Parser heute auch anders schreiben würde. Für die Konfiguration brauchst du einen eigenen Kurs.
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: Variables Script zur Inhaltsabfrage aufbauen
« Antwort #11 am: 28.01.09 - 14:28:38 »
Für @functions auch  ;D Es kommt halt immer darauf an, wo was adäquat ist.

Einen Parser setze ich beispielsweise zur Konfiguration meiner Workflow-Engine ein. Sooo viel Optionen hat man da zwar naturgemäss nicht (anders wie in !!HELP!! und Kameraden), aber mit @functions wäre das wiederum nicht zu realisieren gewesen, weil da nicht einmal ein Bezug besteht (ausser, man würde @functions dazu verwenden, die Werte zu setzen, die man so eben direkt aufmalt - was also Blödsinn wäre).

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz