Antw: Re: Fehlermeldung von Avanti

Dirk Scholz dirk.scholz at bsb-muenchen.de
Mi Aug 22 12:32:33 CEST 2001


Lieber Herr Berger, 

vielen Dank auch Ihnen für die Hilfe. Die Lösung scheint über dieTrunkierung zu führen, das leuchtet mir ein, obwohl:  
Nehmen wir als Beispiel den Geburtszeitraum von 912 bis 1972, sicherlich sehr interessant. Hierfür benötigen wir allerdings auch Myriaden von "or GEB"s, allein schon 26 um von 912 bis 999 und 1900 bis 1972 zu gelangen, wenn ich mich nicht verrechnet habe.  Ich schweige von den Jahrzehnten dazwischen ... und nicht auszdenken, wenn der Benutzer dann noch Phantasie beim Sterbedatum entwickelt. 

Also muß wohl doch der Weg über Restriktionen gegangen werden oder liege ich da sehr falsch?

Viele Grüße
Dirk Scholz
BSB

>>> ThB at gymel.com 22.08.2001  11.35 Uhr >>>
Lieber Herr Scholz,

> habe nun erst (was schon gestern hätte geschehen sollen, als ich mir nur die Anzeige im Avanti-w-Server-Fenster ansah) einen Blick in die von Ihnen eigentlich gemeinte log-Datei geworfen. Ergebnis, auch in Zshg. mit dem von Ihnen angesprochen mailing-Verkehr: Höchstwahrscheinlich ist meine Anfrage einfach zu lang.

wie Ihre Zeilen...

Muss jetzt leider Ihren interssanten Absatz manuell zitieren:

> Das hat folgenden Grund: mangels besseren Wissens habe ich die Zeitraumsabfrage als
> eine Kombination von ORs gestaltet, d.h. die Anfrage lautet z.B. "find GEB 1700 or
> GEB 1701 or ... GEB 1750". Viel lieber hätte ich natürlich eine einfache
> Vergleichsanweisung benutzt, kann aber diesbzgl. keinen Hinweis in der
avanti-Dokumentation finden. Was ich finde, gibt mir eher Anlaß zur
Sorge, nämlich
> die Rede von Restriktionen und Restriktionsschlüsseln etc. ; mir versagen die Sinne,
> wenn ich das Hdb. S. 231 f. anläßlich eines Problems studieren muß, das
> beispielsweise in SQL durch eine entsprechende WHERE-Klausel in Nullkommanix gelöst
> wäre. Vielleicht gibt es da doch eine andere Lösung.

Die Konstruktionen sind doch ziemlich aehnlich:

find (DiesundDasinnormalerSyntax) AND GEB>1699 AND GEB<1751

(es gibt dann aber noch die Variante, eine Restriktion
vor dem find ... zu setzen, damit die Zwischenergebnisse
weniger umfangreich sind)

"GEB" darf dann nur kein Register sein, sondern
muss als Restriktion realisiert werden.

In einer von mir realisierten Datenbank (vor der Erfindung
der Restriktionen und auch jetzt noch, da eine
Jahreszahlenbereichssuche als Primaeres Suchkriterium
erlaubt sein muss, d.h. GEB ist hier wieder normales
Register):

find GEB "1698" OR GEB "1699" OR GEB "170?" OR GEB "171?"
OR GEB "172?" OR GEB "173?" OR GEB "174?" OR GEB "1750"

D.h. es wird der Jahreszahlenbereich als Vorbereitung der
Suchanfrage in Intervalle zerlegt und durch Trunkierung
zusammengefasst. Ich hatte das aus Effizienzgruenden von
vorneherein so gemacht, keine Ahnung, ob ich sonst auch in
eine Falle mit zu langem Suchbegriff getappt waere.

viele Gruesse
Thomas Berger





Mehr Informationen über die Mailingliste Allegro