Domino 9 und frühere Versionen > ND7: Entwicklung
Variables Script zur Inhaltsabfrage aufbauen
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