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

Alles zum SQL-Dialekt

Moderator: Moderatoren

Antworten
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

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

Beitrag 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 ?
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

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

Beitrag 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.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

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

Beitrag 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 ...
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

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

Beitrag 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 ?
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

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

Beitrag 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 ?
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

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

Beitrag 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:
Gruß
Hubert
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

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

Beitrag von Martin Altmann »

Versuch es mal mit like statt = - kann auch sein, dass du dann das Feld vor das like ziehen musst.
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

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

Beitrag 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.
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

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

Beitrag 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
es grüßt

Werner

<when the music is over, turn off the lights!>
Antworten