Seite 1 von 1

SQL - universal SQL - wie geht das ?

Verfasst: Fr, 02. Sep 2016 7:44
von brandelh
Hallo,

ich stochere immer noch mit den neuen Möglichkeiten der 2.0 in Bezug auf SQL auf DBF und ARRAYs rum.
Hier ein Post in den news:

:arrow: news://news.alaska-software.com:119/23af2e90$490bbd92$170de7@news.alaska-software.com

Andreas Gehrs-Pahl hat geantwortet, aber aus dem was ich da lese, ist das alles komplizierter als es einfach so zu machen wie gewohnt ...
Oder die normale SQL Syntax anzuwenden, wenn es ein SQL Server ist.

Wie seht Ihr das ?

Re: SQL - universal SQL - wie geht das ?

Verfasst: Fr, 02. Sep 2016 8:17
von brandelh
Also das funktioniert, aber nur ohne where, da ein normales Array keine Feldnamen hat:

Code: Alles auswählen

   aFiles := directory("d:\test\*.prg")
   SELECT * FROM (aFiles) INTO ARRAY aData
damit ist das aber auch ziemlich sinnfrei - zumindest kann ich keinen erkennen.

Re: SQL - universal SQL - wie geht das ?

Verfasst: Fr, 02. Sep 2016 8:31
von brandelh
und hier der Versuch mit eine meiner großen DBF (schließlich will ich mit dem internen SQL ja schneller abfragen ...)

Code: Alles auswählen

   use Test1 alias DB
   IF neterr()
      msgbox("DBF konnte nicht geöffnet werden")
      quit
   ENDIF

   DbeInfo(DBFDBE_LOCKOFFSET, 0x7FFFFFFF )

   ? "DBF USED()",used(),"NETERR()",neterr(),"Alias()",padr(alias(),8),"Select()",ntrim(SELECT()), "LastRec()",lastrec()
   aData := NIL
   ? "Select start"
   nDauer := seconds()
   // this is line 70, and the next will cause the problem
   SELECT * FROM DB WHERE meja = 2015  INTO ARRAY aData
   nDauer := seconds() - nDauer

   ? "Sekunden: ",nDauer,len(aData)
   inkey(10)
   AEval( aData, {|o|QOut(o)} )
   ?
   ? "Treffer:",len(aData)
ergibt einen internal error ...
: oError:description : Interne Datenstrukturen besch„digt
(312): USQLSTATEMENT:CREATEVIRTUALTABLEFROMWORKAREA
(358): USQLSTATEMENT:REWRITETABLE
(295): ABSTRACTSQLSTATEMENTBUILDER:FROM
main.prg(71): MAIN