|
|
#1 |
|
Entwickler
|
Abfrage bringt HEAP Error
Um eine Abfrage recht komplex und schnell zu machen (schneller als MATCHES) bin ich auf folgende Idee gekommen:
Code:
local preview daten=from daten where f2 in(t:t9> or mc in (t:t9> or\\ f3 in (t:t9> or f4 in(t:t9> or strasse in(t:t9> or plz in (t:t9>\\ or tel1 in(t:t9> order f2 Enthält Abfrage zb. ein Leerzeichen (also Meier Huber) oder ist einfach länger als ein möglicher Treffer (zb. Vielzulangertext) und die Trefferanzahl ist 0 kommt es zu einem eigenartigen HEAP Error. OA4 stürzt komplett ab. Die zwischenzeitliche Lösung ist die Eingabe auf nur 4 oder 5 Zeichen zu beschränken ist jedoch mittlerweile ein Problem da zuviele Ergebnisse vorkommen. Hat jemand eine Idee ? |
|
|
|
|
|
#2 |
|
Registrierter Benutzer
|
Hi,
ich habe da ein Verständnisproblem ... Mit der Bedingung IN müssen doch ein unterer und ein oberer Grenzwert vorgegeben werden, welche durch einen Doppelpunkt getrennt und von Klammern eingeschlossen werden. Du schreibst aber z.B. in(t:t9> - die schließende Klammer wird also wohl als > dargestellt!? Was steht denn in den beiden Variablen t und t9 drin? Arbeitest Du im Programmierer oder ist das Programm compiliert? Soweit ich das hier bei mir testen kann, ist die Abfrage korrekt und Ausführbar. Auch wenn Leerstellen enthalten sind, werden die richtigen Datensätze geliefert. Es grüßt Dich Heinz |
|
|
|
|
|
#3 |
|
Entwickler
|
Ich arbeite im Programmierer und habe das Teil dann compiliert. Das die oberen und unteren Grenzwerte in Klammern sein müssen steht nicht in meinem Handbuch. Demnach sollte es in
Code:
(t):(t9) |
|
|
|
|
|
#4 |
|
Registrierter Benutzer
|
Nein nein, so war das nicht gemeint. IN (t:t9) ist richtig. Es funktioniert ja bei mir. In Deinem Beitrag stand allerdings IN (t:t9> - dass hatte micht verwirrt.
|
|
|
|
|
|
#5 |
|
Entwickler
|
Ja das geht - ich weiss jetzt nicht mehr genau was das war aber damit kann man die obere Grenze verändern. Steht im Compiler Handbuch nur das habe ich grad hier nicht zur Hand.
|
|
|
|
|
|
#6 |
|
Entwickler
|
So also jetzt hab ich es gefunden - im Datenbank Handbuch auf der Seite 286
Code:
IN (500:500) findet von 100 bis 500 einschließlich IN <500:500> von 101 bis 499 IN <100:500) von 101 bis 500 |
|
|
|
|
|
#7 |
|
Registrierter Benutzer
|
Ist Dein Problem jetzt gelöst oder noch immer offen? Das mit der Klammern und den Größer-/Kleiner-Zeichen hatte ich gar nicht gewusst. Soviel zur Einbildung 'Ich kenn mich gut aus!'. Mit < bzw > wird also lediglich festgelegt, ob der untere und/oder obere Grenzwert ausgeschlossen werden. Vermute ich richtig, dass Du mit mehr oder weniger beliebigen Fragmenten in mehreren Datenfeldern nach Treffern suchen willst? Da bietet sich doch MATCHES für an. Du gibst einen Suchbegriff vor, hängst vorn und hinten einen Stern dazu und formulierst dann WHERE name MATCHES suchbegriff OR strasse MATCHES suchbegriff ....
Wenn noch was offen ist ... ich probiere gerne. Schöne Grüße Heinz |
|
|
|
|
|
#8 |
|
Entwickler
|
Problem ist nicht gelöst - auch wenn ich es wie du mache kommt es manchmal zu besagtem HEAP oder IMPLEMENTED ERROR. Ich werde mal meinen menschlichen Debugger (Ludwig) ranlassen
|
|
|
|
Antwort schreiben... |
| Themen-Optionen | Thema durchsuchen |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Nach Abfrage mit Formel eine Zufallszahl einfügen | waldbauer.com | SPI OA4 Open Access II/III/IV (2,3,4) Anwender Forum | 8 | 28.11.2007 16:24 |
| Abfrage in Programmierer | RKabis | SPI OA4 Open Access II/III/IV (2,3,4) Anwender Forum | 5 | 12.07.2007 16:24 |