Seite 1 von 1

Art der Indizierung herausfinden [ERLEDIGT]

Verfasst: Do, 16. Feb 2012 11:26
von Manfred
Hi,

ich habe einen Browser gebaut, in dem man Suchen kann. Es erscheint also am unteren Rand ein Eingabefeld die Möglichkeit im jeweiligen Index zu suchen. So weit so gut. Das klappt auch, solange man sich an die Regeln hält. Bei mir bedeutet das, das ein Index grundsätzlich immer als String aufgebaut wird, egal ob numerisch oder Datum. Jetzt gibt es aber Ausnahmen, in denen ich leider Indexschlüssel bekomme, die auf numerische Felder sind, aber nicht in String umgewandelt wurden. Da klappt mein "schönes" Pauschalsystem nicht. Also dachte ich mir, dass ich vorher eine Abfrage einbaue, ob die Suche überhaupt zu dem Indexschlüssel paßt. Grob dachte ich mir, ich schaue nach, welche Art Feld ist es und wie ist der Indexschlüssel dazu. Dann wird halt im numerischen Index ohne Stringumwandlung gearbeitet. Aber irgendwie will mir nicht der zündende Gedanke kommen, wie ich das umsetzen kann. Es ist nämlich möglich, dass der aktive Index derzeit ein anderer ist, als der in dem gesucht werden soll.

Im wesentlichen interessiert mich aber an besagter Stelle, ob der "Suchstring" mit dem Indexschlüssel übereinstimmt. Also, wenn meine Eingabe einen String erzeugt, ich aber einen numerischen Wert benötigen würde, dass es dann vorher numerisch gemacht wird, bevor gesucht wird.

Re: Art der Indizierung herausfinden

Verfasst: Do, 16. Feb 2012 11:48
von Tom
IndexKey() liefert den Indexausdruck für den aktuell kontrollierenden Index.
Type(IndexKey()) liefert den Typ, also C, N, D oder L.

Im Prinzip kann über IndexKey() auch ermittelt werden, wie lang z. B. der String oder die numerische Eingabe sein darf, wenn nur ein Feld (!) indexiert ist. FieldPos(IndexKey()) würde dann einen Verweis auf dieses Feld liefern, mit FieldInfo() kämst Du dann an Länge und Nachkommastellen. Auf all das kann Dein Suchfeld reagieren. Schwierig wird's bei konktatinierten Indexen (NAME+VORNAME o.ä.), bei eingebetteten Funktionen (UPPER(NAME)) und bei UDFs. Die Rückgabe von Type() ist dann zwar immer noch verlässlich, aber ob nun nur Großbuchstaben erlaubt sind oder es um einen numerischen Wert mit Nachkommastellen geht, diese Untersuchung erfordert dann schon etwas mehr.

Re: Art der Indizierung herausfinden

Verfasst: Do, 16. Feb 2012 12:02
von Manfred
Hi Tom,

Danke erstmal. Daran hatte ich mal wieder nicht gedacht. Aber ich denke mal das sollte für meine Zwecke genügen. Wenn ich z.B. ein numerisches Feld habe und ich im Indexkey ein Str finde, dann wäre ich auch schon mal weiter. Der Rest wird sich von Fall zu Fall ergeben, in dem ich es dann nach und nach prüfe, wenn es eintritt.