Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: sylli1908 am 26.03.07 - 12:50:34

Titel: Suche nach datum in db
Beitrag von: sylli1908 am 26.03.07 - 12:50:34
Hallo, ihr alle die mehr Ahnung haben als ich,

ich habe eine Datenbank mit Besuchsberichten des Außendienstes.

Nun will ich in einer Maske für's Web eine Suche im Feld Bearbeitungsdatum (einfaches Datumsfeld Tag.Monat.Jahr) und Feld Kontakt_Bearbeiter (  Name des Mitarbeiters) ermöglichen.

In der Maske gibt es ein Feld (Dialogliste)"Suche" zum auswählen des Mitarbeiters (z.B. Helga Müller) und ein Feld (Dialogliste) "Suche_1" zur Auswahl des Zeitraumes der Bearbeitung (z.B. März 2007). Nach betätigen des Suchen-Buttons soll es auf eine Volage ($$Templete ...) gehen um die Ergebnisse, die dem Mitarbeiter und dem Zeitraum entsprechen, anzuzeigen. Der Mitarbeiter ist kein Problem, aber das Datum. So hat ich mir das $$Return-Feld gedacht:

SuchString := @If(Suche = ""; "*";
@Implode(@ReplaceSubstring(Suche_Kat;uml;huml)));
db := @Subset(@DbName; -1);
Ansicht := "Aktivitaet";

_T:=@RightBack(@Text(Bearbeitungsdatum);3) ;
_M:=@LeftBack(_T;5);
_J:=@RightBack(_T;3);
@If(_M="01";"Januar "+_J;_M="02";"Februar "+_J;_M="03";"März "+_J;
_M="04";"April "+_J;
_M="05";"Mail "+_J;
_M="06";"Juni "+_J;
_M="07";"Juli "+_J;
_M="08";"August "+_J;
_M="09";"September "+_J;
_M="10";"Oktober "+_J;
_M="11";"November "+_J;
_M="12";"Dezember "+_J;
"");


Bearbeiterabfrage:=(" Field Kontakt_Bearbeiter Contains " +Suche+"and"+" _M" +Suche_1);
Abfrage:=(@Trim(Bearbeiterabfrage));

Konstante:="Start=1&Count=7";
SuchAnsicht := @Implode(@Explode(Ansicht; " "); "+");
@Return ("[/" + db + "/" + SuchAnsicht + "?SearchView&Query="+Abfrage+"&"+Konstante+"&searchOrder=4]")

Er findet leider keinen Datensatz der dieser Suche enspricht. Wo sind die Denkfehler und Scriptfehler?  Wäre toll wenn mir jemand helfen könnte. Sylli.
Titel: Re: Suche nach datum in db
Beitrag von: Axel am 26.03.07 - 13:20:49
Überprüf mal diese Zeile:

Bearbeiterabfrage:=(" Field Kontakt_Bearbeiter Contains " +Suche+"and"+" _M" +Suche_1);

Die kommt mir reichlich spanisch vor, besonders die Ecke hier:

...+"and"+" _M" +Suche_1);


Mit welcher Notes-Version arbeitest du denn. Ich kann mir nicht vorstellen, das du die DB mit der 8er Betaversion erstellt hast.

Axel
Titel: Re: Suche nach datum in db
Beitrag von: sylli1908 am 26.03.07 - 13:33:02
Sorry, mit der 7-er . Wie haste das denn gemerkt ...
Titel: Re: Suche nach datum in db
Beitrag von: Axel am 26.03.07 - 13:50:32
Sorry, mit der 7-er . Wie haste das denn gemerkt ...

Ich kann mir nicht vorstellen, dass man mit einer Betaversion schon produktive Datenbanken erstellt.

Axel
Titel: Re: Suche nach datum in db
Beitrag von: sylli1908 am 02.04.07 - 11:34:35
Hat jemand mal einen Vorschlag wie die Sache funktionieren könnte?
Titel: Re: Suche nach datum in db
Beitrag von: Driri am 02.04.07 - 11:47:59
Axel hat doch schon geantwortet. Hast Du dir den Searchstring, der da erzeugt wird, schon mal näher angesehen ?

Zitat
Bearbeiterabfrage:=(" Field Kontakt_Bearbeiter Contains " +Suche+"and"+" _M" +Suche_1);

Da kommt z.B. so ein Suchstring bei heraus :

Field Kontakt_Bearbeiter Contains <Inhalt Suche> and _M <Inhalt Suche_1>


Darüber hinaus prüfst Du direkt in der ersten Zeile, ob "Suche" leer ist, verwendest dann aber doch wieder "Suche".
Titel: Re: Suche nach datum in db
Beitrag von: m3 am 02.04.07 - 11:57:04
Ich persönlich finde ja den
Code
@If(_M="01";"Januar "+ ...
Teil lustig.
Da wird in einem riesen Konstrukt was zusammengebaut und dann weggeschmissen. Wolltest Du das, was aus dem @IF rauskommt nicht in einer Variablen aufheben?

Und da weiterdenkend ... ich kann mir nicht vorstellen, dass man - beispielsweise - den String "Juli_06" in einem Datumsfeld finden kann.

Und bei der Zeile
Code
@Return ("[/" + db + "/" + SuchAnsicht + "?SearchView&Query="+Abfrage+"&"+Konstante+"&searchOrder=4]")
ist mir aufgefallen, dass "Abfrage" nicht mit @URLEncode behandelt wurde. Auch das kann zu Problemen führen.
Titel: Re: Suche nach datum in db
Beitrag von: sylli1908 am 02.04.07 - 12:00:46
Als Antwort bekomme ich immer keine Datensätze gefunden. Scheinbar kann Notes das  Feld Bearbeitungsdatum nicht  mit _M vergleichen.  Ist doch aber beides Text, Oder?
Titel: Re: Suche nach datum in db
Beitrag von: Axel am 02.04.07 - 12:06:46
Hast du dir inzwischen mal deinen Suchstring angeschaut? Das kann so nicht funktionieren.

Bei der Suche im _M fehlt auf jeden Fall der Operator, z.B. Contains


Axel
Titel: Re: Suche nach datum in db
Beitrag von: m3 am 02.04.07 - 12:07:04
ROTFL

1) Notes kann die das Feld sehr wohl mit der Variablen vergleichen. Die Frage ist nur, was dabei heraus kommt.
2) Ob das beides Text ist, können wir Dir nicht beantworten, das kannst nur Du, da wir das Design nicht kennen.

ABER:

a) _M hat - laut Deinem Script - einen Wert zwischen "01" und "12"
b) Das Feld "Bearbeitungsdatum" ist, laut Deinen Angaben, ein Datumsfeld
c) Nein, einen String wie "09" kann man nicht einfach mit einem Datumsfeld vergleichen. Wo/wie soll er denn "09" vergleichen? Mit dem Tag, dem Monat oder dem Jahr?


Nachtrag:
Das Ende Deiner Abfrage lautet derzeit
VORHERIGERSUCHBEGRIFFand _M

Hier fehlen
1) Abstände
2) Eckige Klammern oder ein "FIELD"
3) Der Feldname, der durchsucht werden soll
4) Der Operator (CONTAINS, ...)
5) Der Wert, mit dem das Feld verglichen werden soll. Die Variable "Suche_1", in der dieser Wert anscheinend definiert werden sollte, wird in dem von Dir geposteten Script nicht befüllt.

Hol Dir mal einen Kaffe und dann denk das Codefragemtn nochmal durch. Da stimmt einiges nicht.

Und nein, ich schreibe es nicht für Dich neu.
Titel: Re: Suche nach datum in db
Beitrag von: sylli1908 am 02.04.07 - 12:12:32
Ich wäre ja schon froh wenn er es irgenwo im Datumsfeld Bearbeitungsdatum suchen würde. Er findet es ja weder bei Tag noch bei Monat ...

Aber das Mit dem Contains schau ich mir mal an, danke
Titel: Re: Suche nach datum in db
Beitrag von: m3 am 02.04.07 - 12:13:45
Wie in meinem Nachtrag angeführt: Dann sag ihm bitte auch, dass er das Feld Bearbeitungsdatum durchsuchen soll.

P.S.: Es hilft oft, den gesuchten Suchausdruck zuerst manuell für einen Suchwert im FT-Dialog händisch zusammen zu bauen und dann den String im Script nachzubauen.
Titel: Re: Suche nach datum in db
Beitrag von: sylli1908 am 02.04.07 - 15:22:36
Ich habe es mit einem festen Wert "2007" versucht. Es sollen also alle Datensätze anzeigezeigt werden die 2007 im Feld Bearbeitungsdatum enthalten.
Mein Returnfeld sieht so aus:


REM {Ermittlung der Suchabfrage};

db := @Subset(@DbName; -1);
Ansicht := "Aktivitaet";

Bearbeiterabfrage:=
" FIELD Kontakt_Bearbeiter Contains "+Suche+ " and "  +"FIELD @Text(Bearbeitungsdatum) Contains "+"2007";


Abfrage:=(@Trim(Bearbeiterabfrage));

Konstante:="Start=1&Count=7";
SuchAnsicht := @Implode(@Explode(Ansicht; " "); "+");
@Return ("[/" + db + "/" + SuchAnsicht + "?SearchView&Query="+Abfrage+"&"+Konstante+"&searchOrder=4]")


Die Suche nach dem Bearbeiter klappt ohne Probleme. Aber sobald das Datum dazukommt ist Schluß mit lustig. Es werden keine Datensätze mehr gefunden.
Folgende Anzeige kommt:
Es wurden keine Dokumente gefunden, die Ihrer Suche Fachberater: Barbara Maier, Zeitraum: 2007 entsprechen! Das kann doch nur am Datumsformat des Feldes liegen.
Titel: Re: Suche nach datum in db
Beitrag von: koehlerbv am 04.04.07 - 00:00:03
Hier stimmt doch die ganze syntaktische Logik nicht: Du hast ganz bestimmt kein Feld, dass den Namen "@Text(Bearbeitungsdatum)" trägt!
Und ohne syntaktischer Logik geht da gar nichts.

Bernhard