Scope z.B. von eXPress++ benutzen

Moderator: Moderatoren

Antworten
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Scope z.B. von eXPress++ benutzen

Beitrag 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
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: Scope z.B. von eXPress++ benutzen

Beitrag 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.
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: Scope z.B. von eXPress++ benutzen

Beitrag 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
: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: Scope z.B. von eXPress++ benutzen

Beitrag von brandelh »

Siehe hier die Mitteilung über seinen Tod:

http://www.xbaseforum.de/viewtopic.php? ... rax#p69891
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

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

Beitrag 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.
Gruß
Klaus
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

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

Beitrag 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.)

Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

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

Beitrag 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
Gruß
Klaus
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

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

Beitrag 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
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

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

Beitrag 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!
Gruß,

Andreas
VIP der XUG Osnabrück
Antworten