Seite 1 von 1

Xbase++ ALASKA SQL ... wie geht das mit SELECT auf DBF ?

Verfasst: Mo, 27. Apr 2015 13:36
von brandelh
Hi,

ich bekomme das nicht zum Laufen und finde in den vielen Verzeichnissen auch kein Beispiel.

WAS WILL ICH ?

SELECT * FROM ... auf eine DBF Datei, es ist MIR egal ob die schon offen oder noch geschlossen ist, hauptsache ich bekomme mal Ergebnisse ...

angeblich soll das auch auf ein Array als Datengrundlage funktionieren, hat das schon jemand gesehen ?

Re: Xbase++ ALASKA SQL ... wie geht das mit SELECT auf DBF ?

Verfasst: Mo, 27. Apr 2015 14:33
von Tom
Die Tabelle muss geöffnet sein, aber nicht selektiert. "FROM" erwartet den Alias als Parameter. Wenn kein Alias angegeben wurde, sollte der Tabellenname der Alias (Vorsicht bei ADS!) sein. Der Tabellenname kann nicht verwendet werden. Ein "Auto-Open" gibt es m.E. nicht.

Re: Xbase++ ALASKA SQL ... wie geht das mit SELECT auf DBF ?

Verfasst: Mo, 27. Apr 2015 16:55
von brandelh
danke für die Info, so konnte ich meine Fehler eingrenzen und beseitigen.
Dass das Select in einem neuen Selectbereich ausgeführt wird und auf ein ALIAS einer offenen DBF zugreift ist nachvollziehbar, wenn auch etwas umständlich ... (ich will ja das Array of DataObjects aus dem aktuellen Bereich ...)
So hat das mit dem normalen Suchen funktioniert ... bei meiner zweiten Testdatei ...
Die große bringt immer internal Error, offensichtlich stößt da die interne Verwaltung an Grenzen ...

Mein SELECT mit Variablen bringt immer 0 Treffer, erst die Verwendung von PPO zeigt einen Weg ...

Code: Alles auswählen

   SELECT * FROM DB WHERE dru_aktiv="X" INTO ARRAY aData // so geht es, aber ich will variabel suchen

   // so sollte es auch gehen ... aber es tut es nicht: Kein Fehler aber 0 Treffer statt 1
   cSuche := "X"
   SELECT * FROM DB WHERE dru_aktiv=&(cSuche) INTO ARRAY aData // so nicht, 0 Treffer
   SELECT * FROM DB WHERE ("dru_aktiv='"+cSuche+"'") INTO ARRAY aData // so auch nicht
   
   //  so geht es ...
   USqlStatement():New():Select( {{ 1 }} ):From( {{"DB"}} ):Where( &("{|| dru_aktiv='"+cSuche+"'}") ):Limit( 20 ):Build():Query( 2, @aData )
Ich denke ich werde noch etwas mit USqlStatement() experimentieren ...

Re: Xbase++ ALASKA SQL ... wie geht das mit SELECT auf DBF ?

Verfasst: Mo, 27. Apr 2015 16:58
von brandelh
so sieht übrigens die Auswahl von 2 Feldern aus:

Code: Alles auswählen

:Select( {{"dru_aktiv"}, {"dru_name"}} )
warum die Felder jeweils in einem eigenen Array stehen ?

Re: Xbase++ ALASKA SQL ... wie geht das mit SELECT auf DBF ?

Verfasst: Di, 28. Apr 2015 8:17
von brandelh
das mit dem "nicht selektiert" kann nicht stimmen, ein Beispiel von Till:

Code: Alles auswählen

SET DEFAULT TO ...\Xbase++\source\samples\data\misc
USE parts
// Ermitteln der Menge als Array von DataObjekten
SELECT partno, partname, sellprice FROM parts WHERE sellprice < 200 INTO OBJECTs aObjs
das Beispiel funktioniert so ... nun suche ich nach einem Wort das in der DBF enthalten ist:

SELECT partno, partname, sellprice FROM parts WHERE partname = 'Icebear' INTO OBJECTs aObjs => 1 Treffer, richtig
SELECT partno, partname, sellprice FROM parts WHERE partname = 'icebear' INTO OBJECTs aObjs => KEIN Treffer, NUR mit genau gleicher Schreibweise wird gefunden ...

auf mit Teilbegriff kein Treffer ... für SQL sollte das doch so stimmen oder ?

SELECT partno, partname, sellprice FROM parts WHERE partname LIKE 'Ice%' INTO OBJECTs aObjs

In der Hilfe heist es lapidar:
<FieldName1> is the name of a field in a table, <cFieldName2> is the name of a field in another table, and <comparison> is one of the comparison operators.
und was sind diese "operators" die in Alaska USQL gelten ?

Re: Xbase++ ALASKA SQL ... wie geht das mit SELECT auf DBF ?

Verfasst: Di, 28. Apr 2015 8:25
von brandelh
das geht:

SELECT partno, partname, sellprice FROM parts WHERE lower(partname) = 'icebear' INTO OBJECTs aObjs // 1 Treffer, OK
SELECT partno, partname, sellprice FROM parts WHERE lower(partname) = "icebear" INTO OBJECTs aObjs // 1 Treffer, OK

also ist der Vergleich selbst noch Xbase Angelegenheit, somit sollte das doch einen Teilstring finden ...

SELECT partno, partname, sellprice FROM parts WHERE lower(partname) = "ice" INTO OBJECTs aObjs // Kein Treffer
SELECT partno, partname, sellprice FROM parts WHERE left(lower(partname),3) = "ice" INTO OBJECTs aObjs // Kein Treffer

ich sehe da nichts was mir das Leben LEICHTER macht :badgrin:

Re: Xbase++ ALASKA SQL ... wie geht das mit SELECT auf DBF ?

Verfasst: Di, 28. Apr 2015 8:53
von Martin Altmann
Versuch es mal mit like statt = - kann auch sein, dass du dann das Feld vor das like ziehen musst.

Re: Xbase++ ALASKA SQL ... wie geht das mit SELECT auf DBF ?

Verfasst: Di, 28. Apr 2015 8:58
von brandelh
das habe ich in der Message davor schon probiert:
auf mit Teilbegriff kein Treffer ... für SQL sollte das doch so stimmen oder ?

SELECT partno, partname, sellprice FROM parts WHERE partname LIKE 'Ice%' INTO OBJECTs aObjs
Ich habe mal JANs Anfrage nach Suche mit Variablen zugestimmt und um diese Frage erweitert ... es geht ja um das Gleiche ... wie sollen wir es nutzen.

Re: Xbase++ ALASKA SQL ... wie geht das mit SELECT auf DBF ?

Verfasst: Sa, 23. Jan 2016 16:51
von Werner_Bayern
brandelh hat geschrieben:SELECT partno, partname, sellprice FROM parts WHERE partname LIKE 'Ice%' INTO OBJECTs aObjs
So sollte es gehen:

Code: Alles auswählen

SELECT partno, partname, sellprice FROM parts WHERE upper(partname) LIKE 'ICE%' INTO OBJECTs aObjs