Seite 1 von 1

Scope z.B. von eXPress++ benutzen

Verfasst: Mi, 24. Okt 2012 9:09
von Rudolf
Hallo,
ich muss einen Report nach gewissen Kriterien filtern. Mit eXPress++ geht das sehr schnell mittels dc_setscopearray(), da kann ich einzelne Sätze filtern. Aber FRAX ignoriert scopes soweit ich sehe. Habe auch im Sourcecode nichts gefunden, müsste die skip() Funktionen dazu auf dc_dbskip() ändern. Wo kann man die Funktion änderun oder gibt es einen andere Möglichkeit fürs schnelle filtern ?
Spirin hat auf meine Mail Anfrage dazu nicht geantwortet.
Grüße
Rudolf

Re: Scope z.B. von eXPress++ benutzen

Verfasst: Mi, 24. Okt 2012 9:12
von brandelh
Ist es nicht sinnvoller aus dem eXpress++ scope einen Datenextrakt für den Report zu generieren ?
Dann kannst du diesen auch noch Tage später nachdrucken.

Re: Scope z.B. von eXPress++ benutzen

Verfasst: Mi, 24. Okt 2012 9:17
von Martin Altmann
Hallo Rudolf,
Rudolf hat geschrieben:Spirin hat auf meine Mail Anfrage dazu nicht geantwortet.
das wird er persönlich auch nie wieder tun - er ist vor einigen Monaten (im März) verstorben.
Der Hinweis von Hubert ist aber sicher der bessere Weg.

Viele Grüße,
Martin

Re: Scope z.B. von eXPress++ benutzen

Verfasst: Mi, 24. Okt 2012 9:22
von brandelh
Siehe hier die Mitteilung über seinen Tod:

http://www.xbaseforum.de/viewtopic.php? ... rax#p69891

Re: Scope z.B. von eXPress++ benutzen

Verfasst: Mi, 24. Okt 2012 9:30
von Koverhage
Hallo Rudolf,

bei mir werden gesetzte Scopes NICHT ignoriert.
Kannst Du den entsprechenden Code posten ?
Andreas Engler ist Spezialist für FRAX, eventuell kann er Dir einen Tip geben.

Re: Scope z.B. von eXPress++ benutzen

Verfasst: Mi, 24. Okt 2012 9:51
von Rudolf
Hallo,
das ist mein Code mit dem es nicht funktioniert
Grüße
Rudolf


Code: Alles auswählen

     FrPrn := frReportManager():new()
     FrPrn:SetIcon(1)
     FrPrn:SetTitle(cTitle)
     FrPrn:SetVisualActions(FR_ACT_DISABLE);

     FrPrn:SetEventHandler("Report", "OnProgressStart", {|x,y|ShowProgress(x, y, 1)})
     FrPrn:SetEventHandler("Report", "OnProgressStop", {|x,y|ShowProgress(x, y, 2)})
     FrPrn:SetEventHandler("Report", "OnProgress", {|x,y|ShowProgress(x, y, 3)})
     FrPrn:SetEventHandler("Report", "OnBeforePrint", {|ObjName|ShowProcess(ObjName)})

     if fexists(addpath(cResDir,"german.frc"))
          FrPrn:LoadLangRes(addpath(cResDir,"german.frc"))
     endif
     // !!!!!!!!!!!!!!!!!!!!!!
     aScope := {}
     select STD
     std->(setorder("ABR1"))
     std->(seek(auf->nummer))
     do while std->auftrag = auf->nummer
          aadd(aScope,std->(recno()))
          std->(skip())
     enddo
     std->(dc_setscopearray(aScope))
    // !!!!!!!!

     std->(dc_dbgotop())
     FrPrn:SetWorkArea("STD", select("STD"))
     altd()
     cFields := frax_repfields(fielenamefromsel("STD")) //  fields from my data dictonary
     FrPrn:SetFieldAliases("STD",cFields)

     FrPrn:LoadFromFile(cReportFile)

     dc_hourglassoff()
     DO CASE
          CASE cMod = "S"
               FrPrn:ShowReport()
          CASE cMOd = "D"
               FrPrn:DesignReport()
          CASE cMod = "P"
               FrPrn:SetProperty("Report", "ShowProgress", .f.)
               FrPrn:PrepareReport()
               FrPrn:Print(.t.)
               FrPrn:SetProperty("Report", "ShowProgress", .t.)


Re: Scope z.B. von eXPress++ benutzen

Verfasst: Mi, 24. Okt 2012 12:01
von Koverhage
Rudolf,

Frax ignoriert von Express++ gesetzte Scopes, die intern von Express++ verwaltet werden.
Diese sind Frax natürlich nicht bekannt.
Wenn Du statt dessen die Scopes von Xbase+++ benutzt, funktioniert das
ohne Probleme.

Klaus

Re: Scope z.B. von eXPress++ benutzen

Verfasst: Mi, 24. Okt 2012 12:54
von Rudolf
Hallo Klaus,
hab ich befürchtet, hätte sein können dass man im FRAX Sourccode die Funktion anpassen hätte können. Habe die Daten in der Zwischenzeit in eine externe Datei kopiert, geht genausoschnell
LG
Rudolf

Re: Scope z.B. von eXPress++ benutzen

Verfasst: Do, 25. Okt 2012 12:54
von andreas
Hallo Rudolf,

ich habe bei mir immer die Daten in einer temporären Datei (FOXCDX) so zusammengesetzt, wie ich für das Report gebraucht habe. Damit konnte ich auch schnell auf die SQL-Daten umsteigen, ohne die Reports umzustellen. Alternativ kannst du auch Arrays verwenden!