AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
06.04.20 - 07:36:41
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Domino 8 und frühere Versionen
| |-+  ND7: Entwicklung (Moderatoren: eknori, koehlerbv)
| | |-+  Variables Script zur Inhaltsabfrage aufbauen
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Variables Script zur Inhaltsabfrage aufbauen  (Gelesen 3804 mal)
2stupid4this
Junior Mitglied
**
Offline Offline

Geschlecht: Männlich
Beiträge: 70

Never touch a running system!


« 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.
Gespeichert

Wer Rechtschreibfehler findet, darf diese behalten.
DAU-in
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Weiblich
Beiträge: 1129


- unterwegs -


« Antworten #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 ...
Gespeichert

mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse
2stupid4this
Junior Mitglied
**
Offline Offline

Geschlecht: Männlich
Beiträge: 70

Never touch a running system!


« Antworten #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?
Gespeichert

Wer Rechtschreibfehler findet, darf diese behalten.
Thomas Schulte
@Notes Preisträger
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 4388


Ich glaub mich tritt ein Pferd


« Antworten #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.
Gespeichert

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
2stupid4this
Junior Mitglied
**
Offline Offline

Geschlecht: Männlich
Beiträge: 70

Never touch a running system!


« Antworten #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?
Gespeichert

Wer Rechtschreibfehler findet, darf diese behalten.
koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #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
Gespeichert
2stupid4this
Junior Mitglied
**
Offline Offline

Geschlecht: Männlich
Beiträge: 70

Never touch a running system!


« Antworten #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.
Gespeichert

Wer Rechtschreibfehler findet, darf diese behalten.
koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #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!!  Wink
Gespeichert
Thomas Schulte
@Notes Preisträger
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 4388


Ich glaub mich tritt ein Pferd


« Antworten #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!!
Gespeichert

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
koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #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
Gespeichert
Thomas Schulte
@Notes Preisträger
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 4388


Ich glaub mich tritt ein Pferd


« Antworten #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.
Gespeichert

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
koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #11 am: 28.01.09 - 14:28:38 »

Für @functions auch  Grin 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
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: