Domino 9 und frühere Versionen > ND7: Entwicklung

Variables Script zur Inhaltsabfrage aufbauen

(1/3) > >>

2stupid4this:
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.

DAU-in:
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 ...

2stupid4this:
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?

Thomas Schulte:
Doch das geht....
Aber du musst NotesItem benutzen.

Die direkte Ansprache eines Feldes KANN so nicht funktionieren.

2stupid4this:
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?

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln