Seite 1 von 1

build():query()

Verfasst: Mo, 18. Mai 2020 14:57
von Manfred
Hi Leute,

ich habe eine Verständnisfrage.
wenn ich sowas hier baue

Code: Alles auswählen

TEXT INTO cSqlStmt WRAP CHr(13) TRIMMED
                       SELECT * FROM tagesdienst
                       WHERE nummer = ':cNummer' AND datum >= ':DATUM' AND datum <= '2030-12-31' and webfrei
                       ORDER BY nummer, datum, zeitvon
                  ENDTEXT
                  cSqlStmt := StrTran(cSqlStmt,":cNummer",cNummer)
                  cSqlStmt := StrTran(cSqlStmt,":DATUM",TransDateToSql(Date()))
                  oSqlStmt := DacSqlStatement(oAdsServer:oSession ):fromChar(cSqlStmt)
                  oSqlStmt:Build():Query(,"tagesdienst3")
kommt ja am Ende eine "Speichertabelle" mit dem namen Tagesdienst3 heraus. Wie muß ich mir diese Tabelle vorstellen? Genügt es, wenn ich am Ende ein Dbclosearea() mache? Muß ich noch weiter was berücksichtigen?
Was passiert wenn ich direkt danach eine weitere ähnliche Abfrage mache, mit demselben Tabellennamen? Geht das überhaupt? Ich meine festgestellt zu haben, das sich xbase++ merkt, wo es zuletzt gestanden hat und dann in der neuen Tabelle auch dort wieder steht.
Was passiert, wenn es eine gleichlautende Tabelle in einer DAtenbank der aktuellen Session gibt? Muß man das auch beachten?
wenn man ein tagesdienst3->(Lastrec()) macht, bekommt man den Wert der aktuellen Speichertabelle zurück. bei einer Abfrage auf tagesdienst3->(Recno()) wird mir der letzte Satz der Ursprungstabelle des SELECT angegeben.
Weiterhin habe ich nach dem ersten Durchlauf die Tabelle geschlossen, aber nach dem 2 Durchlauf wurde keine tabelle mehr erzeugt.
Hat einer von euch mal Erfahrungen damit gemacht?
--

Re: build():query()

Verfasst: Mo, 18. Mai 2020 15:43
von Manfred
was mir noch gerade aufgefallen ist, wenn ein Daumsfeld leer ist, wird anscheinend ein NIL übertragen. Das gibt natürlich später bei einer Abfrage Stress.