Seite 1 von 1

ADSDBE Indexerstellung mit FOR-Expression

Verfasst: So, 22. Jul 2007 23:32
von FrankG
Hallo liebes Forum,

ich nutze für meinen Kunden neuerdings die ADSDBE (mit Dictionary) und sitze zur Zeit an der Portierung von der FOXCDX.

Bei der Erstellung eines temp. Index für eine Auswertung habe ich in der Vergangenheit Einschränkungen vorgenommen, die abhängig von Benutzereingaben waren:

index on atnummer to attemp ;
for atdatum >= ddatvon .and. atdatum <= ddatbis

Ergebnis:
Error 3211: Unknown identifier found in index Conditional expression...

Gibt es eine Möglichkeit die For-Expression irgendwie anders aufzubauen?

Grüße


Frank Groß

Verfasst: Mo, 23. Jul 2007 8:34
von Martin Altmann
Hallo Frank,
mein Vorschlag: Klammere mal die FOR-Ausdrücke und schreibe es in eine Zeile:

Code: Alles auswählen

index on atnummer to attemp for ( ( atdatum >= ddatvon ) .and. ( atdatum <= ddatbis ) )
Eigentlich müsste es funktionieren - vorausgesetzt Dein Feld in der Datenbank heißt auch atdatum und die Variablen ddatvon und ddatbis sind befüllt und vom selben Typ, wie Dein Feld atdatum...

Viele Grüße,
Martin

Verfasst: Mo, 23. Jul 2007 10:20
von Rolf Ramacher
Hallo Frank,

wenn dies wie Martin beschrieben hat noch nicht funkt. sollte, setzte mal
einen TAG-Namen ein.

Verfasst: Mo, 23. Jul 2007 12:10
von andreas
War da nicht etwas von Verwendung in der Indexdefinition von Variablen eines bestimmten Types oder täusche ich mich jetzt?

Sehr mühsam

Verfasst: Mo, 23. Jul 2007 14:20
von FrankG
Herzlichen Dank für die Hilfestellungen.

Typen der Variablen stimmen, aber es hängt vielleicht damit zusammen.

Ich habe eine "Lösung" gefunden, die mich nun nicht glücklich macht:

cindexbes="atnummer"
c_neu_tag_name:="DATSPEZ3"
c_neu_indexname:="DAT10IND"
cindexausfo:="(atdatum >= " +chr(34)+dtoc(datvon)+chr(34)+").and. (atdatum <= " +chr(34)+dtoc(datbis)+chr(34)+")"

// So war es früher und es kommt der Absturz
index on &(cindexbes) TAG &(c_neu_tag_name) to &(c_neu_indexname) FOR (atdatum >= (datvon) .and. atdatum <= (datbis))


//So läuft es nun, aber die Def. von cindexausfo ist doch ziemlich aufwendig.
index on &(cindexbes) TAG &(c_neu_tag_name) to &(c_neu_indexname) FOR &(cindexausfo)


Des Weiteren wird ein AUTOOPENINDEX erstellt. Das wollte ich eigentlich auch nicht.

Wie kann ich es besser machen? Neue Session erstellen (ADSCDX) oder für temp. Index gleich wieder mit FOXCDX arbeiten? Oder ist letzteres nicht nur nicht sauber, sondern bringt Probleme mit sich?

Grüße

Frank