Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: skywook am 25.07.05 - 22:25:00

Titel: db.search Problem
Beitrag 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
Titel: Re: db.search Problem
Beitrag von: Glombi am 25.07.05 - 22:59:14
Füge mal vor dem db.Search ein

Msgbox kdZuord$

ein, um den Suchstring zu kontrollieren.

Andreas
Titel: Re: db.search Problem
Beitrag von: skywook am 26.07.05 - 07:33:22
Die Box gibt mir einen leeren Suchstring zurück.
Titel: Re: db.search Problem
Beitrag von: klaussal am 26.07.05 - 07:49:37
Und was sagt uns das jetzt ?
Titel: Re: db.search Problem
Beitrag von: Thomas Schulte am 26.07.05 - 07:51:20
Das sag uns Herr Lehrer  ;D das kdzuord$ dummerweise keinen Wert hat und folglich die Suche auch nix zurückliefern kann.
Titel: Re: db.search Problem
Beitrag von: klaussal am 26.07.05 - 08:00:17
Richtig ! Setzen ....
Titel: Re: db.search Problem
Beitrag von: skywook am 26.07.05 - 08:31:08
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?
Titel: Re: db.search Problem
Beitrag von: Thomas Schulte am 26.07.05 - 08:32:33
Jawollja, weil wie soll er denn bitteschön einen Wert übernehmen wenn es das dazugehörige Feld nicht gibt?
Titel: Re: db.search Problem
Beitrag von: skywook am 26.07.05 - 09:18:35
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.
Titel: Re: db.search Problem
Beitrag von: klaussal am 26.07.05 - 09:39:35
Schon mal den Debugger bemüht ?
Titel: Re: db.search Problem
Beitrag von: Glombi am 26.07.05 - 09:42:10
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
Titel: Re: db.search Problem
Beitrag von: skywook am 26.07.05 - 12:03:01
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.


Titel: Re: db.search Problem
Beitrag von: Thomas Schulte am 26.07.05 - 12:05:15
Schalt den debugger ein und schau dir den Inhalt von "KZ" an. Schließlich prüfst du das gegen leer ab.
Titel: Re: db.search Problem
Beitrag von: Glombi am 26.07.05 - 12:08:11
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
Titel: Re: db.search Problem
Beitrag von: skywook am 26.07.05 - 12:32:32
Danke,
aber warum IsMember?
Bei der Feld Zuordnung (Feldtyp Dialogliste) sind zwei Werte hinterlegt, kann aber nur eines bei der Eingabe ausgewählt werden.
Titel: Re: db.search Problem
Beitrag von: skywook am 28.07.05 - 15:37:42
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?
Titel: Re: db.search Problem
Beitrag von: diali am 28.07.05 - 15:40:34
Ja.

Am besten machst Du Dir ein berechnetes Feld in die Maske und berechnest den Query-String in dem Feld.
Titel: Re: db.search Problem
Beitrag von: skywook am 28.07.05 - 15:47:25
habe ich probiert.
Aber die IF-Anweisung kommt mit dem Searchsyntax nicht klar z.B

@if(Kundenzuord = "ja"; |NR  = "| + a +|" & IJahr  = "| + WertJahr +|"|; "")
Titel: Re: db.search Problem
Beitrag von: diali am 28.07.05 - 15:50:05
die | dürften in Formeln nicht funktionieren.

@if(Kundenzuord = "ja"; "NR  = \"" + a +"\" & IJahr  = \"" + WertJahr +"\""; "")
Titel: Re: db.search Problem
Beitrag von: skywook am 28.07.05 - 15:54:44
Danke für den Tipp Dirk  :)
Werd es ausprobieren und eine Rückmeldung geben.
Titel: Re: db.search Problem
Beitrag von: skywook am 28.07.05 - 16:19:28
Noch eine Frage Dirk:

Was bedeuten denn die / in Deiner Formel
@if(Kundenzuord = "ja"; "NR  = \"" + a +"\" & IJahr  = \"" + WertJahr +"\""; "")
Titel: Re: db.search Problem
Beitrag von: Axel am 28.07.05 - 16:27:51
Hi,

da dürfen Steuerzeichen sein, damit das nachfolgende Zeichen als " interpretiert wird.


Axel
Titel: Re: db.search Problem
Beitrag von: Thomas Schulte am 28.07.05 - 16:35:02
Warum baust du das denn nicht in dein Script ein, bevor du den Search Parameter abfeuerst?
Titel: Re: db.search Problem
Beitrag von: skywook am 28.07.05 - 17:11:57
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.
Titel: Re: db.search Problem
Beitrag von: Thomas Schulte am 28.07.05 - 17:26:10
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.
Titel: Re: db.search Problem
Beitrag von: wflamme am 29.07.05 - 00:49:01
Zitat
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.  :)
Titel: Re: db.search Problem
Beitrag von: Thomas Schulte am 29.07.05 - 07:46:02
Zitat
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.  ^-^