Art der Indizierung herausfinden [ERLEDIGT]

Sonstiges (nicht kategorisierbar)

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Art der Indizierung herausfinden [ERLEDIGT]

Beitrag 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.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9355
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Art der Indizierung herausfinden

Beitrag 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.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Art der Indizierung herausfinden

Beitrag 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.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Antworten