Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: DaHias am 03.07.09 - 08:09:13

Titel: NotesDatabase.Search(SearchString) - er will nicht wie er soll
Beitrag von: DaHias am 03.07.09 - 08:09:13
Moin Moin,

Hab ein Problem mit meinem SearchString den ich einfach nicht dazu krieg das zu tun was ich will. Ich überseh wohl einfach was... wies hald immer is wenn man zu lang davor sitzt. Vielleicht könnt ihr mir helfen oder seht einen Fehler:

Code
Dim dateTime As New NotesDateTime( "Today" )
Call dateTime.AdjustMonth( -2 )

searchString = {Form = "Positionen"&Bestellsumme = 0& (ZwfStepName = "KantineNeu" | ZwfStepName = "KantineAng") & @TextToTime(datum1) <= dateTime.LocalTime}	

Also:
Maskename = Positionen (String)
Bestellsumme = 0 (Integer)
ZwfStepname = KantineNeu | KantineAng (String)

und wohl der Knackpunkt:
datum1 (String) <= Heute - 2 Monate

Ich tippe mal die @Formel klappt da nicht in dem SearchString oder?

Danke für die Hilfe!
Mathias
Titel: Re: NotesDatabase.Search(SearchString) - er will nicht wie er soll
Beitrag von: ascabg am 03.07.09 - 08:34:29
Hallo,

Versuch mal diese Schreibweise.

Code
{Form = "Positionen & Bestellmenge = 0 & (ZwfStepName = "KantineNeu" : "KantineAng") & @TextToTime(} & datum1 & {) <= } & dateTime.LocalTime

Andreas
Titel: Re: NotesDatabase.Search(SearchString) - er will nicht wie er soll
Beitrag von: DaHias am 03.07.09 - 08:42:56
Hi,

Danke, aber ich glaub das klappt so nicht, weil das "datum1" keine definierte Variable ist, sondern ein Feld in den Dokumenten. Ich krieg hald die Fehlermeldung "Variable not declared".

Mathias
Titel: Re: NotesDatabase.Search(SearchString) - er will nicht wie er soll
Beitrag von: ascabg am 03.07.09 - 09:34:19
Ok. Diese Info hatte ich nicht.
Dann versuch es eben mal so.

Code
{Form = "Positionen & Bestellmenge = 0 & (ZwfStepName = "KantineNeu" : "KantineAng") & @TextToTime(datum1) <= } & dateTime.LocalTime

Andreas
Titel: Re: NotesDatabase.Search(SearchString) - er will nicht wie er soll
Beitrag von: DaHias am 03.07.09 - 11:02:56
Danke nochmals :)

Hab ich grad ausprobiert, krieg aber die Fehlermeldung:

Notes-Fehler: Formelfehler (Form = "Positionen" & Bestellmenge = 0 & (ZwfStepName = "KantineNeu" : "KantineAng") & @TextToTime(datum1) <= 03.05.2009")

Also er setzt jetzt immerhin das Datum hinten um, aber er scheint an dem @TextToTime zu scheitern?

Mathias
Titel: Re: NotesDatabase.Search(SearchString) - er will nicht wie er soll
Beitrag von: ascabg am 03.07.09 - 11:38:23
Schreibfehler beim Post oder ist dieses hier so in der Formel:

@TextToTime(datum1) <= 03.05.2009")

Man beachte die Anfuehrungszeichen


Andreas
Titel: Re: NotesDatabase.Search(SearchString) - er will nicht wie er soll
Beitrag von: DaHias am 10.07.09 - 12:20:47
Hi,

Das war lediglich ein Schreibfehler. Also die Fehlermeldung lautet schon:

Notes-Fehler: Formelfehler (Form = "Positionen" & Bestellmenge = 0 & (ZwfStepName = "KantineNeu" : "KantineAng") & @TextToTime(datum1) <= 03.05.2009)
Titel: Re: NotesDatabase.Search(SearchString) - er will nicht wie er soll
Beitrag von: koehlerbv am 10.07.09 - 12:26:41
Ich entdecke da auf Anhieb zwei Fehler:

ZwfStepName *= "KantineNeu" : "KantineAng"

@TextToTime(datum1) <= @TextToTime ("03.05.2009")
oder
@TextToTime(datum1) <= @Date (2009; 5; 3)

Ist datum1 überhaupt Text? Das wäre vermutlich "pfui" - man sollte immer den passenden Datentyp zum Speichern verwenden.

Bernhard
Titel: Re: NotesDatabase.Search(SearchString) - er will nicht wie er soll
Beitrag von: DaHias am 10.07.09 - 12:52:24
Hi Bernhard,

was genau meinst du mit *=?

datum1 ist leider immer Text da es bei der Erstellung des Antwortdokuments per "SetText" generiert wird. Hässlich - will ich auch ändern, aber vorher brauche ich diese Suche, um abgeschlossene Dokumente zu finden.
Titel: Re: NotesDatabase.Search(SearchString) - er will nicht wie er soll
Beitrag von: Thomas Schulte am 10.07.09 - 13:02:19
was genau meinst du mit *=?
such in der Online Hilfe nach Operations on Lists, da ist das erklärt.
Titel: Re: NotesDatabase.Search(SearchString) - er will nicht wie er soll
Beitrag von: Glombi am 10.07.09 - 13:45:15
Was ist denn der Unterschied zwischen
ZwfStepName *= "KantineNeu" : "KantineAng"
und
ZwfStepName = "KantineNeu" : "KantineAng"
wenn ZwfStepName keine Mehrfachwerte hat?

Andreas
Titel: Re: NotesDatabase.Search(SearchString) - er will nicht wie er soll
Beitrag von: DaHias am 10.07.09 - 13:55:46
Also ZwfStepName ist lediglich ein String.

@Thomas: Danke jetzt hab ich das zumindest verstanden ^^
Titel: Re: NotesDatabase.Search(SearchString) - er will nicht wie er soll
Beitrag von: koehlerbv am 10.07.09 - 13:58:36
Andreas, Deine Frage verstehe ich nicht so ganz: Der Unterschied ist doch gewaltig - gerade im Fall "skalarer Wert".

Bernhard
Titel: Re: NotesDatabase.Search(SearchString) - er will nicht wie er soll
Beitrag von: Glombi am 10.07.09 - 15:02:05
Andreas, Deine Frage verstehe ich nicht so ganz: Der Unterschied ist doch gewaltig - gerade im Fall "skalarer Wert".

Bernhard
Was ist denn der Unterschied? Momentan stehe ich etwas auf dem Schlauch...

Andreas
Titel: Re: NotesDatabase.Search(SearchString) - er will nicht wie er soll
Beitrag von: koehlerbv am 10.07.09 - 15:36:05
Ich hoffe, ich bin nicht derjenige, der auf dem Schlauch steht nach über 20.000 Metern hoch und runter in den Alpen in der letzten Woche  ;)

Die Vorgabe war
ZwfStepname = KantineNeu | KantineAng (String)

ZwfStepName = "KantineNeu" : "KantineAng"
bringt da niemals ein Ergebnis - skalarer Wert verglichen mit einem Array ...

ZwfStepName *= "KantineNeu" : "KantineAng"
bedeutet: Ein Treffer reicht.  Die Kombination von ZwfStepName mit einem Array ergibt "wahr", sowie einer der (x) Arraywerte im Gegenstück (egal, ob skalar oder Array) vorkommt.

Bernhard
Titel: Re: NotesDatabase.Search(SearchString) - er will nicht wie er soll
Beitrag von: ascabg am 10.07.09 - 15:49:09
@Bernhard

Jetzt muss ich doch auch noch eine kleine Frage hierzu stellen.

Warum funktioniert dann aber

SELECT Form = "Test" : "Test1"

als Selektionsformel fuer eine Ansicht?


Andreas
Titel: Re: NotesDatabase.Search(SearchString) - er will nicht wie er soll
Beitrag von: koehlerbv am 10.07.09 - 16:01:05
Unter welchen Versionen hast Du das ausprobiert, Andreas? Funktioniert das überall?
Weil: Syntaktisch ist das falsch (und von der Schreibweise auch unsinnig).

Bernhard
Titel: Re: NotesDatabase.Search(SearchString) - er will nicht wie er soll
Beitrag von: ascabg am 10.07.09 - 16:04:05
Eigentlich schon seit Version 5 und bis heute.

Und ehrlich es hat noch nie ein Problem gegeben, dass Dokumente angezeigt wurden die hier nicht angezeigt werden durften bzw. dass Dokumente die haetten angezeigt werden sollen nicht angezeigt wurden.


Andreas
Titel: Re: NotesDatabase.Search(SearchString) - er will nicht wie er soll
Beitrag von: Werner Götz am 10.07.09 - 16:36:36
Ich arbeite immer so, wenn ich prüfe, ob ein Element in einer Liste vorkommt.

Und das ist weder syntaktisch falsch noch unsinnig, denn der skalare Wert wird als Liste mit 1 Element interpretiert, bei dem laut Doku das letzte (einzige) Element so oft "aufgefüllt" wird, bis beide Listen gleich viele Elemente haben.

*= wird erst beim Vergleich von 2 Listen mit jeweils mehr als 1 Element interessant.


Schönes Wochenende!
-Werner
Titel: Re: NotesDatabase.Search(SearchString) - er will nicht wie er soll
Beitrag von: Glombi am 10.07.09 - 21:39:32
Das ist genau meine Erfahrung. Wenn das eine nur ein skalarer Wert ist, dann ist es wurscht, ob mit = oder *= verglichen wird. Das mache ich nun seit 16 Jahren so.

Andreas
Titel: Re: NotesDatabase.Search(SearchString) - er will nicht wie er soll
Beitrag von: koehlerbv am 11.07.09 - 14:26:50
Syntaktisch sauber ist das aber nicht, denn "A" = "A" : "B" ist nun mal nicht "ist gleich". Was bei einem eventuellen Update der Formula Engine damit passieren wird, steht sicherlich auch in den Sternen (wir haben da ja einiges erlebt mit der damals neuen Version 6).

Bernhard
Titel: Re: NotesDatabase.Search(SearchString) - er will nicht wie er soll
Beitrag von: DaHias am 13.07.09 - 07:20:53
Moin,

Also aktuell habe ich es nun folgendermaßen gelöst:

{Form = "Positionen" & Bestellsumme = 0 & (ZwfStepName = "KantineNeu" : "KantineAng") & @TextToTime(datum1) <=  @Adjust(@Today;0;-2;0;0;0;0)}
   

So funktioniert es jetzt auch so wie es soll.

Danke für alle Hilfestellungen :)