Autor Thema: Ausdruck für Suche mit db.Search funktioniert nicht  (Gelesen 3885 mal)

Offline schmalzz

  • Frischling
  • *
  • Beiträge: 14
Hallo Forum,

ich habe eine Urlaubsdatenbank in der unsere User ihre Urlaubsanträge einstellen. Die zugehörige Maske heißt einfach "Urlaubsantrag".
Zusätzlich gibt es eine weitere Maske mit den User Dokumenten, "Personal" genannt. In diesen Dokumenten stehen der Urlaubsanspruch laufendes Jahr sowie ein eventueller Anspruch aus dem letzten Jahr.
Nun möchte ich in einer Ansicht den restlichen Urlaubsanspruch für das laufende Jahr darstellen. Dazu hole ich mir für jeden User die dazugehörigen Urlaubsanträge. Damit das ein bischen schneller läuft, will ich nur die Anträge aus dem laufen Jahr haben.
Folgende Formel funktioniert:
Code
suche = {Form="Urlaubsantrag" & U_MITARB="} & VornameMA & " " & NachnameMA & {"}

Ergänze ich die Formel um die Suche nach dem laufenden Jahr, bekomm ich 0 Dokumente zurück:
Code
suche = {Form="Urlaubsantrag" & @contains(U_EINSTAG; "2012") & U_MITARB="} & VornameMA & " " & NachnameMA & {"}

Kann man in dem Ausdruck für db.search keine @-Formeln verwenden?

Gruß - Markus

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Ausdruck für Suche mit db.Search funktioniert nicht
« Antwort #1 am: 06.03.12 - 11:17:44 »
Was ist "U_EINSTAG" für ein Feld ? Wenn es ein Datumsfeld ist, dann funktioniert das so nicht.

Wenn Du Dir nicht sicher bist: die db.search- Formel ist das selbe wie eine View- Selection- Formel nur ohne "SELECT" davor...
Erstell Dir eine Ansicht mit Deiner Formel als Suchformel. Wenn die geht, dann geht es auch in db.Search...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline schmalzz

  • Frischling
  • *
  • Beiträge: 14
Re: Ausdruck für Suche mit db.Search funktioniert nicht
« Antwort #2 am: 06.03.12 - 11:25:56 »
"U_EINSTAG" ist ein Datumsfeld. Also keine Chance damit zu filtern?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Ausdruck für Suche mit db.Search funktioniert nicht
« Antwort #3 am: 06.03.12 - 11:27:14 »
Doch, natürlich - nur musst Du das auch mit den passenden Datentypen machen. Die DesignerHelp unter @Year ist Dein Freund.

Bernhard

Offline schmalzz

  • Frischling
  • *
  • Beiträge: 14
Re: Ausdruck für Suche mit db.Search funktioniert nicht
« Antwort #4 am: 06.03.12 - 11:43:31 »
Hm,

wenn ich dich richtig verstehe, soll ich mit @Year mein Feld "U_EINSTAG" in eine Jahreszahl wandeln?

Also so:
Code
suche = {Form="Urlaubsantrag" & @contains(@Year(U_EINSTAG); "2012") & U_MITARB="} & VornameMA & " " & NachnameMA & {"}
Funktioniert leider nicht, auch das nicht:
Code
suche = {Form="Urlaubsantrag" & @Year(U_EINSTAG) = "2012" & U_MITARB="} & VornameMA & " " & NachnameMA & {"}

Oder meinst du das anders? Aber ich muss es ja in den Such-Ausdruck mit einbauen, anders hab ich ja keinen Zugriff auf die Felder.  :-:

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Ausdruck für Suche mit db.Search funktioniert nicht
« Antwort #5 am: 06.03.12 - 11:45:55 »
Schau Dir doch bitte die Datentypen an! Du vergleichst da gerade Äpfel mit Birnen ...

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Ausdruck für Suche mit db.Search funktioniert nicht
« Antwort #6 am: 06.03.12 - 11:51:56 »
Kleiner Tipp @Year() liefert eine Zahl, kein String..... EOM
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Ausdruck für Suche mit db.Search funktioniert nicht
« Antwort #7 am: 06.03.12 - 12:01:34 »
Nochmal: Bevor Du Dich mit db.search rumschlägst: Mache Dir eine Ansicht mit der gewünschten Selektions- Formel und probiere so lange rum, bis die Ansicht die richtigen Dokumente zeigt (@Year(U_EINSTAG) = 2012 wäre richtig), dann musst Du nicht immer Deinen Agenten rennen lassen... und lernst eventuell noch ein wenig über Formelsprache...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline schmalzz

  • Frischling
  • *
  • Beiträge: 14
Re: Ausdruck für Suche mit db.Search funktioniert nicht
« Antwort #8 am: 06.03.12 - 12:05:00 »
Vielen Dank an euch alle für die Hinweise. Das Problem war, dass ich nicht gerafft habe, dass @Year eine Zahl liefert bzw. ich halt zwei verschiedene Datentypen verglichen habe.

Jetzt funktionierts auf alle Fälle mit @Text:
Code
suche = {Form="Urlaubsantrag" & @Text(@year(U_EINSTAG)) = "} & Jahr & {" & U_MITARB="} & VornameMA & " " & NachnameMA & {"}

Gruß - Markus

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Ausdruck für Suche mit db.Search funktioniert nicht
« Antwort #9 am: 06.03.12 - 12:12:43 »
suche = {Form="Urlaubsantrag" & @Text(@year(U_EINSTAG)) = "} & Jahr & {" & U_MITARB="} & VornameMA & " " & NachnameMA & {"}

Und ohne @Text und Jahr ohne Anführungszeichen wird es auch funktionieren, wenn Dir @Text (@Year (...)) aufgrund irgendeiner Plattformeinstellung anstelle von 2012 nur 12 zurückliefert. Wenn Du es schon als Datum hast, solltest Du es auch so verwenden.

Offline schmalzz

  • Frischling
  • *
  • Beiträge: 14
Re: Ausdruck für Suche mit db.Search funktioniert nicht
« Antwort #10 am: 06.03.12 - 13:50:44 »
Das "Jahr" kommt von folgender Zeile:

Code
	'----- Aktuelles Jahr ermitteln
	Jahr = Year(Today())

Ich dachte, es geht halt schneller wenn er nicht bei jedem zu prüfendem Dokument das aktuelle Jahr immer wieder ermitteln muss. Probiert hab ich den Unterschied allerdings nicht.

Markus

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Ausdruck für Suche mit db.Search funktioniert nicht
« Antwort #11 am: 06.03.12 - 14:12:58 »
Hier sind schon wieder die Datentypen verwurschtelt, das Ergebnis passt nur zufällig, weil in diesem Kontext die Stringzuweisung "suche = " die Variable Jahr (Integer!) zu einem String konvertiert (in anderen Konstellationen kann das auch fix zu einem Runtime-Error führen.

Sauber wäre
@Year (U_EINSTAG) = @Year (@Today))

Also: Immer schön sauber bleiben  ;)

Bernhard

Offline schmalzz

  • Frischling
  • *
  • Beiträge: 14
Re: Ausdruck für Suche mit db.Search funktioniert nicht
« Antwort #12 am: 06.03.12 - 15:10:42 »
Ich gelobe Besserung!  ;)

Markus

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz