Alaska Software Inc. - Fehler bei SQL WHERE
Username: Password:
AuthorTopic: Fehler bei SQL WHERE
Jan EscholtFehler bei SQL WHERE
on Sat, 25 Apr 2015 16:22:35 +0200
Der folgende Code führt zu einem Laufzeitfehler:

Use adressen NEW
cName := adressen->name
SELECT * FROM adressen WHERE name = cName

Ergibt Fehlermeldung:

Xbase++ Version     : Xbase++ (R) Version 2.00.575
Betriebssystem      : Windows 7 06.01 Build 07601 Service Pack 1
------------------------------------------------------------------------------
oError:args         :
           -> VALTYPE: U VALUE: NIL
oError:canDefault   : J
oError:canRetry     : N
oError:canSubstitute: J
oError:cargo        : NIL
oError:description  : No such column: cName [S1]
oError:filename     :
oError:genCode      :       9002
oError:operation    : USQLSTATEMENT:QUERY
oError:osCode       :          0
oError:severity     :          2
oError:subCode      :          1
oError:subSystem    : Local SQL
oError:thread       :          1
oError:tries        :          0

Wie kann ich ein WHERE mit einem Variableninhalt ausführen?

Jan
Hubert BrandelRe: Fehler bei SQL WHERE
on Tue, 28 Apr 2015 08:36:09 +0200
Ich habe mit einem Beispiel experimentiert und habe wie JAN das Problem, 
dass der Suchbegriff eben NICHT im Quellcode schon bekannt ist, sondern 
zur Laufzeit per Variable ermittelt werden muss.
Wie geht das ?

Aber auch mit der direkten Eingabe bekomme ich nicht das was ich 
erwarte. Die erste Zeile stammt von einem Beispiel von Alaska, dessen 
Feldnamen ich kürze damit es hier besser aussieht:

SELECT f1, f2, f3 FROM db WHERE f2 < 200 INTO OBJECTs aObjs

funktioniert wunderbar, nun suche ich nach einem bestehenden Inhalt:

SELECT f1, f2, f3 FROM db WHERE f2='Icebear' INTO OBJECTs aObjs

ergibt wie erwartet genau 1 Treffer, OK !
nun mit Suchbegriff in Kleinschreibung

SELECT f1, f2, f3 FROM db WHERE lower(f2)='icebear' INTO OBJECTs aObjs

ergibt wie erwartet genau 1 Treffer, OK !
nun mit Teilstringsuche

SELECT f1, f2, f3 FROM db WHERE left(lower(f2),3)='ice' INTO OBJECTs aObjs

KEIN TREFFER ! Warum nicht ? SQL Syntax ?

SELECT f1, f2, f3 FROM db WHERE f2 LIKE 'Ice%' INTO OBJECTs aObjs

KEIN TREFFER ! Warum nicht ? WIE DANN ?????

Und das wie gesagt mit Variablen im Suchbegriff.
Am Besten gleich als Objektaufruf ...
Hubert BrandelRe: Fehler bei SQL WHERE
on Thu, 13 Aug 2015 11:16:53 +0200
Hallo Alaska,

ein SQL Aufruf ohne Parameterübergabe in Variablen ist wenig nützlich.
Wie geht das ?