Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: skywook am 25.07.05 - 22:25:00
-
Hallo,
folgende Script gibt mir immer 0 Dokumente zurück. Wo habe ich denn den Fehler? Für eure Hilfe wäre ich sehr dankbar.
Sub Click(Source As Button)
Dim s As New NotesSession
Dim db As NotesDatabase
Dim doc As notesdocument
Dim dc As NotesDocumentCollection
Dim uiw As New NotesUIWorkspace
Dim uidoc As notesuidocument
Dim feld1 As String
Set uidoc = uiw.CurrentDocument
feld1 = uidoc.fieldGetText("AKundenzuordnung")
If uidoc.fieldGetText("KZ") = "" Then
KdZuord$ = {Zuordnung="} + feld1 + {"}
End If
Set db = s.CurrentDatabase
Dim vs As notesviewentrycollection
Dim folderview As notesview
Set folderview = db.GetView("SucheDaten")
Set vs = folderview.AllEntries
Call vs.RemoveAllFromFolder( "SucheDaten" )
Set dc = db.Search( kdZuord$, Nothing, 0 )
Messagebox dc.Count & " gefunden"
Call dc.PutAllInFolder("SucheDaten")
End Sub
-
Füge mal vor dem db.Search ein
Msgbox kdZuord$
ein, um den Suchstring zu kontrollieren.
Andreas
-
Die Box gibt mir einen leeren Suchstring zurück.
-
Und was sagt uns das jetzt ?
-
Das sag uns Herr Lehrer ;D das kdzuord$ dummerweise keinen Wert hat und folglich die Suche auch nix zurückliefern kann.
-
Richtig ! Setzen ....
-
Danke fürs schnelle Antworten.
Das mit der Box habe ich schon vorher getestet. Vielleicht liegts am Ablauf. Habe mit db.search noch nicht viel zu tun gehabt.
Ich habe eine Suchmaske in der die zu suchenden Werte über verschiedene Dialoglisten ausgewählt werden. Wie z. B. im Script wird bei KZ (Kontrollkästchen) ein Haken gesetzt soll nach dem Wert in AKundenzuordnung gesucht werden.
Über einen Button wird die Suche (siehe Script) gestartet. Das Feld Zuordnung ist nicht in der Suchmaske vorhanden sondern in der eigentlichen Eingabemaske. Ist das vielleicht der Fehler?
-
Jawollja, weil wie soll er denn bitteschön einen Wert übernehmen wenn es das dazugehörige Feld nicht gibt?
-
Irgendwie klemmts noch......
Das Feld AKundenzuordnung ist in der Suchmaske vorhanden und wird in die variable feld1 übernommen (kann ich mir auch über eine Box ausgeben). Der Suchstring setzt sich aus dem Feldnamen Zuordnung (das in der Eingabemaske vorhanden ist nicht aber in der Suchmaske) und dem Wert von feld1 zusammen.
feld1 = uidoc.fieldGetText("AKundenzuordnung")
If uidoc.fieldGetText("KZ") = "" Then
KdZuord$ = {Zuordnung="} + feld1 + {"}
End If
Das müsste doch dann klappen.
-
Schon mal den Debugger bemüht ?
-
Und das Feld "KZ" ist in der Suchmaske?
Und das Feld "Zuordnung" ist ein Textfeld und NICHT berechnet zur Anzeige?
Dann sollte es so gehen!
Andreas
-
Auf Deine Frage Andreas:
Und das Feld "KZ" ist in der Suchmaske?
= ja
Und das Feld "Zuordnung" ist ein Textfeld und NICHT berechnet zur Anzeige?
= der Feldtyp ist eine Dialogliste mit zwei Werten zum auswählen.
-
Schalt den debugger ein und schau dir den Inhalt von "KZ" an. Schließlich prüfst du das gegen leer ab.
-
Und das Feld "Zuordnung" ist ein Textfeld und NICHT berechnet zur Anzeige?
= der Feldtyp ist eine Dialogliste mit zwei Werten zum auswählen.
Dann ist es also ein Mehrfachwert und Du musst die Abfrage ändern, da "=" nicht funktioniert, wenn es mehrere Werte hat. In diesem Fall also die Abfrage mit @IsMember.
feld1 = uidoc.fieldGetText("AKundenzuordnung")
If uidoc.fieldGetText("KZ") = "" Then
KdZuord$ = |@IsMember("| + feld1 + |";Zuordnung)|
End If
So, ich hoffe dass keine Klammer fehlt ;)
Andreas
-
Danke,
aber warum IsMember?
Bei der Feld Zuordnung (Feldtyp Dialogliste) sind zwei Werte hinterlegt, kann aber nur eines bei der Eingabe ausgewählt werden.
-
Hallo,
bräuchte nocheinmal eure Hilfe. Sitze schon seit Tagen vor dem Problem.
Möchte gerne eine variable searchformel:
Habe, wie schon beschrieben, eine Suchmaske. In dieser sind verschiedene Felder als Kontrollkästchen. Nun soll die Suchformel für db.search zusammgesetzt werden anhand von dem was der User ankreutzt z.B
Feld1 (Kontrollkästchen) mit Wert = Bestandskunde
Feld 2 (Kontrollkästchen) mit Wert = Sonderkondition
Feld 3 (Kontrollkästchen) mit Wert = Berater
User kreuzt Feld1 und Feld3 an. Anhand von diesem sollte jetzt die Suchformel zusammgesetzt werden.
Funktioniert sowas überhaupt?
-
Ja.
Am besten machst Du Dir ein berechnetes Feld in die Maske und berechnest den Query-String in dem Feld.
-
habe ich probiert.
Aber die IF-Anweisung kommt mit dem Searchsyntax nicht klar z.B
@if(Kundenzuord = "ja"; |NR = "| + a +|" & IJahr = "| + WertJahr +|"|; "")
-
die | dürften in Formeln nicht funktionieren.
@if(Kundenzuord = "ja"; "NR = \"" + a +"\" & IJahr = \"" + WertJahr +"\""; "")
-
Danke für den Tipp Dirk :)
Werd es ausprobieren und eine Rückmeldung geben.
-
Noch eine Frage Dirk:
Was bedeuten denn die / in Deiner Formel
@if(Kundenzuord = "ja"; "NR = \"" + a +"\" & IJahr = \"" + WertJahr +"\""; "")
-
Hi,
da dürfen Steuerzeichen sein, damit das nachfolgende Zeichen als " interpretiert wird.
Axel
-
Warum baust du das denn nicht in dein Script ein, bevor du den Search Parameter abfeuerst?
-
Hi Thomas,
habe ich versucht.
In der Suchmaske sind ca 16 Kontrollkästchenfelder. Die dann zuvor überprüft werden müssen. Und dabei habe ich Probleme mit der Syntax vom Suchstring.
-
Also das ist doch das einfachste von der Welt
if uidoc.fieldgettext("Kontrollkaestchen1")="ja" then
Search_1 = |Feldname = "| + uidoc.fieldgettext("Wertfeld1")
end if
Das ganze zehnmal, für jedes Feld einen Begriff bauen.
und dann mit
if Searchgesamt = "" then
Searchgesamt = Search_1
else
SearchGesamt = SearchGesamt + " & " + Search_1
end if
Das für Search_2 bis _10 wiederholen. Am Ende kommt eine sauberer Suchbegriff raus den du verwenden kannst.
PS. für alle die es besser wissen, ich könnte das auch in einer Schleife mit einem Zähler realisieren, oder mit einem String Array. nur so ist der Kapier ich jetzt Faktor warscheinlich höher.
-
PS. für alle die es besser wissen, ich könnte das auch in einer Schleife mit einem Zähler realisieren, oder mit einem String Array. nur so ist der Kapier ich jetzt Faktor warscheinlich höher.
Ach was, red' Dich jetzt bloß nicht raus, Du bist einfach nur faul!
Btw: Ich auch. :)
-
PS. für alle die es besser wissen, ich könnte das auch in einer Schleife mit einem Zähler realisieren, oder mit einem String Array. nur so ist der Kapier ich jetzt Faktor warscheinlich höher.
Ach was, red' Dich jetzt bloß nicht raus, Du bist einfach nur faul!
Btw: Ich auch. :)
Aber immer Wolfgang. Alle Programmierer sind faul. Und die besten die ich jemals kennengelernt habe. Sind die die am faulsten sind. ^-^