Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

Scope z.B. von eXPress++ benutzen

Moderator: Moderatoren

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

Scope z.B. von eXPress++ benutzen

Beitrag von Rudolf » Mi, 24. Okt 2012 9:09

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: 13753
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

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

Beitrag von brandelh » Mi, 24. Okt 2012 9:12

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: 13531
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Kontaktdaten:

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

Beitrag von Martin Altmann » Mi, 24. Okt 2012 9:17

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: http://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: http://meldungen.altem.de/

Mitglied der XUG Osnabrück
stellv. Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13753
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

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

Beitrag von brandelh » Mi, 24. Okt 2012 9:22

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: 1953
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Kontaktdaten:

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

Beitrag von Koverhage » Mi, 24. Okt 2012 9:30

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: 1297
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

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

Beitrag von Rudolf » Mi, 24. Okt 2012 9:51

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: 1953
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Kontaktdaten:

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

Beitrag von Koverhage » Mi, 24. Okt 2012 12:01

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: 1297
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

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

Beitrag von Rudolf » Mi, 24. Okt 2012 12:54

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
Foren-Moderator
Foren-Moderator
Beiträge: 1635
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Kontaktdaten:

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

Beitrag von andreas » Do, 25. Okt 2012 12:54

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
Beisitzer des Deutschsprachige Xbase-Entwickler e. V.

Antworten