DCBROWSE und Filter
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21189
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
DCBROWSE und Filter
Da ich den Anfang schon hier http://www.xbaseforum.de/viewtopic.php?f=24&t=4400 gemacht habe, baue ich das mal ein.
Ich habe unter express++ im DCBROWSE die Möglichkeit gefunden einen Filterblock einzubauen, der evtl. mein Problem lösen könnte. Leider habe ich aber noch nicht herausgefunden ob und wenn ja wie man den aktualisieren kann. Im Moment forsche ich noch. Wenn jemand eine Idee hat?
Ich habe unter express++ im DCBROWSE die Möglichkeit gefunden einen Filterblock einzubauen, der evtl. mein Problem lösen könnte. Leider habe ich aber noch nicht herausgefunden ob und wenn ja wie man den aktualisieren kann. Im Moment forsche ich noch. Wenn jemand eine Idee hat?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21189
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: DCBROWSE und Filter
Das interessante an dem Filterblock ist, wenn ich die Sort Option in DCBROWSECOL nutze, dann klappt der 1.Sort einwandfrei, sobald ich aber nochmals den gleichen SpaltenHeader anklicke für ein Sortieren in die andere Richtung, dann steigt das Programm sofort aus, mit der Fehlermeldung:
Wird eine andere Spalte sortiert als nächstes, passiert das nicht.
Code: Alles auswählen
FATAL ERROR LOG
Error within the error handling!
SYS Thread-ID: 468
Module: EXE
Error Codes: EH: 5 Sub: -1073741819(c0000005) OS: 0 XPP: 41
Call Stack of Thread 1 (468):
(B)@XBPBROWSE@I@FORCESTABLE(1165)
@XBPBROWSE@I@FORCESTABLE(1165)
@DC_XBPBROWSE@I@FORCESTABLE(1118)
@DC_XBPCOLUMN@I@SORT(2549)
(B)_HeaderDown(2663)
@DC_GETLIST@I@EVENTLOOP(4327)
@DC_GETLIST@I@READGUI(3622)
DC_READGUI(98)
VODRUCK(112)
(B)main(77)
@DC_GETLIST@I@EVENTLOOP(4327)
@DC_GETLIST@I@READGUI(3622)
DC_READGUI(98)
MAIN(105)
Call Stack of GUI Thread (664):
Call Stack of Thread 3 (1088):
File: y:\video9\programm\shddruck_gui.exe
TimeStamp: 20100702 11:56
End of FATAL ERROR LOG.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: DCBROWSE und Filter
Hallo Manfred,
was hat denn der Filter mit dem Sortieren der Browserzeilen zu tun?
Wird der Browser nach dem Verändern des Filters korrekt aktualisiert?
Uli
was hat denn der Filter mit dem Sortieren der Browserzeilen zu tun?
Wird der Browser nach dem Verändern des Filters korrekt aktualisiert?
Uli
Zuletzt geändert von UliTs am Fr, 02. Jul 2010 13:21, insgesamt 1-mal geändert.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- Manfred
- Foren-Administrator
- Beiträge: 21189
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: DCBROWSE und Filter
Das probiere ich ja gerade noch aus.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2935
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: DCBROWSE und Filter
@Manfred,
denke daran, wenn du ein Array benutzt, nach Verändern des Arrays den Pointer mit DC_GetBrowArray() zu aktualisieren.
denke daran, wenn du ein Array benutzt, nach Verändern des Arrays den Pointer mit DC_GetBrowArray() zu aktualisieren.
Viele Grüße
Wolfgang
Wolfgang
- Manfred
- Foren-Administrator
- Beiträge: 21189
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: DCBROWSE und Filter
Hi Wolfgang,
im Moment mache ich ja noch gar nichts. Ich benutze nur den Filter im DCBROWSE und Sort in DCBROWSECOL. Alles andere ist rein express++ intern. Das heißt, der Filter wird bei der Erzeugung des Browse schon gesetzt. Solange ich nur 1x den Header anklicke zum Sortieren, ist es auch ok, aber sobald ich die Spalte in Gegenrichtung sortieren will, klappt es nicht mehr. Also habe ich überhaupt gar keine Chance irgendwas zu aktualisieren. Ich kann nicht mal im Debugger sehen, was da wo und warum passiert, weil der Ausstieg schon VOR dem ASort() passiert.
im Moment mache ich ja noch gar nichts. Ich benutze nur den Filter im DCBROWSE und Sort in DCBROWSECOL. Alles andere ist rein express++ intern. Das heißt, der Filter wird bei der Erzeugung des Browse schon gesetzt. Solange ich nur 1x den Header anklicke zum Sortieren, ist es auch ok, aber sobald ich die Spalte in Gegenrichtung sortieren will, klappt es nicht mehr. Also habe ich überhaupt gar keine Chance irgendwas zu aktualisieren. Ich kann nicht mal im Debugger sehen, was da wo und warum passiert, weil der Ausstieg schon VOR dem ASort() passiert.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21189
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: DCBROWSE und Filter
Das hier ist alles, was drin ist
Code: Alles auswählen
********************************************************************************
PROCEDURE vodruck()
LOCAL aVo := {}
LOCAL bFilter := {|a| a[21] >= 'A' }
LOCAL cVersion := "30.06.2010"
LOCAL getlist := {}
LOCAL GetOptions
LOCAL nFensterBreite
LOCAL nFensterHoehe
LOCAL nI
LOCAL nMenge
LOCAL oBrowse := NIL
LOCAL oDialog := NIL
LOCAL oDialogBrowse := NIL
LOCAL oDialogProgress := NIL
LOCAL oEan13 := NIL
LOCAL oGruppeBrowse := NIL
LOCAL oGruppeButton := NIL
LOCAL oProgress := NIL
LOCAL oVo := NIL
LOCAL oVostamm := NIL
MEMVAR oHauptDialog
MEMVAR oMessage
IF ! oMessage:anzeigen("Es wird jetzt eine temporäre Liste ALLER VO erzeugt aus der dann selektiert" + CRLF +;
"und gedruckt werden kann. Dies nimmt etwas Zeit in Anspruch und ist" + CRLF +;
"abhängig von der Menge der VO, die sich im Bestand befinden." + CRLF + CRLF +;
"Soll die Erzeugung gestartet werden?",.T.,"N")
RETURN
ENDIF
nFensterBreite := oHauptDialog:clientsize[1]
nFensterHoehe := oHauptDialog:clientsize[2]
//------------------------------------------------------------------------------
oEan13 := ean13():new()
oVo := kassette():new()
oVostamm := fstamm():new()
oean13:db_oeffnen(,,,,,,,,,,,,,.F.)
oVo:db_oeffnen(,,,,.T.,,,,,,,,,.F.)
oVostamm:db_oeffnen(,,,,,,,,,,,,,.F.)
(oVo:nArea)->(DbSetRelation(oVostamm:nArea ,{|| Str((oVo:nArea)->idvostamm,8,0) },"Str((oVo:nArea)->idvostamm,8,0)","id" ) )
(oVostamm:nArea)->(DbSetRelation(oEan13:nArea,{|| Str((oVostamm:nArea)->id,8,0) } ,"Str((oVostamm:nArea)->id,8,0)" ,"idvostamm" ))
//------------------------------------------------------------------------------
oDialogProgress := DialogFenster():new(AppDesktop(),SetAppWindow(),,{610,60},,,.F.)
oProgress := ProgressBar():new(oDialogProgress,,{ oDialogProgress:currentsize()[1]-10,24 },,.F.)
oDialogProgress:title := "Datenerzeugung VO-Druck..."
oDialogProgress:create()
oProgress:create()
oProgress:minimum := 1
oProgress:maximum := (oVo:nArea)->(LastRec())
oProgress:color := GRA_CLR_GREEN
(oVo:nArea)->(DbEval( { || fuelleVOArray(aVo,oVo,oVostamm,oEan13),oProgress:increment() },,,1000 ) )
oProgress:quit()
oDialogProgress:destroy()
(oVo:nArea)->(DbClearRelation())
(oVostamm:nArea)->(DbClearRelation())
oVo:schliesse_datenbank(.T.)
//------------------------------------------------------------------------------
@ 5,1 DCSTATIC;
OBJECT oDialogBrowse;
SIZE DCGUI_PARENTWIDTH,DCGUI_PARENTHEIGHT;
TYPE XBPSTATIC_TYPE_RECESSEDRECT
//------------------------------------------------------------------------------
@ 10,5 DCGROUP oGruppeBrowse;
CAPTION "VO-Auswahl";
PARENT oDialogBrowse;
SIZE DCGUI_PARENTWIDTH-10,DCGUI_PARENTHEIGHT -60
@ 0,0 DCGROUP oGruppeButton;
EVAL {|| oGruppeButton:setPos( {5,5} ) };
PARENT oDialogBrowse;
SIZE DCGUI_PARENTWIDTH-10,40
//------------------------------------------------------------------------------
@ 15,5 DCBROWSE oBrowse;
DATA aVo;
FILTER bFilter;
OPTIMIZE;
PARENT oGruppeBrowse;
SIZE DCGUI_PARENTWIDTH-10,DCGUI_PARENTHEIGHT - 20
nMenge := Len(aVo[1])
FOR nI := 1 TO nMenge
DCBROWSECOL ELEMENT nI;
HEADER "Spalte" + Alltrim(Str(nI));
PARENT oBrowse;
SORT {|aPos,nColPos,self| Spaltensortierung(aVo,nColPos,@bFilter) }
NEXT
//------------------------------------------------------------------------------
DCGETOPTIONS;
BORDER XBPDLG_SIZEBORDER;
HILITEGETS GRA_CLR_CYAN;
NOMAXBUTTON;
NOMINBUTTON;
PIXEL;
SAYOPTIONS XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT;
TOOLTIPCOLOR GRA_CLR_BLACK, GRA_CLR_YELLOW;
WINDOWWIDTH nFensterBreite;
WINDOWHEIGHT nFensterHoehe
DCREAD GUI;
APPWINDOW oHauptDialog:drawingArea;
OPTIONS GetOptions;
PARENT @oDialog;
TITLE "VO-Druck " + cVersion
RETURN
********************************************************************************
FUNCTION fuelleVOArray(aVo,oVo,oVostamm,oEan13)
LOCAL cDarsteller := oVo:indexohneartikel((oVostamm:nArea)->v_darstell)
LOCAL cTitel := oVo:indexohneartikel((oVostamm:nArea)->v_titel)
AAdd(aVo, {;
(oVo:nArea)->datumein,;
(oVo:nArea)->ean,;
(oVo:nArea)->hapbeivk,;
(oVo:nArea)->internetno,;
(oVo:nArea)->lagerbs,;
(oVo:nArea)->lagernr,;
(oVo:nArea)->preisinet,;
(oVo:nArea)->preisist,;
(oVo:nArea)->preissoll,;
(oVo:nArea)->preisek,;
(oVo:nArea)->reserve,;
(oVostamm:nArea)->datumgestr,;
(oVostamm:nArea)->datumvoe,;
(oVostamm:nArea)->fsk,;
(oVostamm:nArea)->hap,;
(oVostamm:nArea)->indiziert,;
(oVostamm:nArea)->internetno,;
(oVostamm:nArea)->vkgbr,;
(oVostamm:nArea)->vkinet,;
(oVostamm:nArea)->vkneu,;
TokenUpper(cTitel,,1),;
TokenUpper(cDarsteller,,1),;
(oEan13:nArea)->ean,;
(oEan13:nArea)->internetno;
};
)
RETURN(.T.)
********************************************************************************
FUNCTION spaltenSortierung(aVo,nCol,bFilter)
ASort(aVo,,,{|x,y|x[nCol] < y[nCol] } )
RETURN(.T.)
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Bertram Hansen
- Foren-Moderator
- Beiträge: 1015
- Registriert: Di, 27. Sep 2005 8:55
- Wohnort: 51379 Leverkusen
- Hat sich bedankt: 28 Mal
- Danksagung erhalten: 20 Mal
- Kontaktdaten:
Re: DCBROWSE und Filter
Hallo Manfred,
ich mache so etwas auch häufiger. Versuche mal folgendes:
Alternativ setz doch mal einen Breakpoint in die Funktion spaltenSortierung vor und nach dem ASort()
ich mache so etwas auch häufiger. Versuche mal folgendes:
Code: Alles auswählen
FUNCTION spaltenSortierung(aVo,nCol,bFilter)
aVo := ASort(aVo,,,{|x,y|x[nCol] < y[nCol] } )
RETURN aVo
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.
Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2935
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: DCBROWSE und Filter
Ändere mal den Sortblock
und ändere die Funktion so wie Bertram es gemacht hat.
Eventuell geht es auch, wenn du das Array mit @aVo an Spaltensortierung übergibst.
Code: Alles auswählen
SORT {|aPos,nColPos,self| DC_GetBrowArray(oBrowse, Spaltensortierung(aVo,nColPos,@bFilter)), dc_getrefresh(oBrowse) }
Eventuell geht es auch, wenn du das Array mit @aVo an Spaltensortierung übergibst.
Viele Grüße
Wolfgang
Wolfgang
- Manfred
- Foren-Administrator
- Beiträge: 21189
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: DCBROWSE und Filter
Hi,
tut mir echt Leid, aber nichts davon hat den Fehler behoben.
tut mir echt Leid, aber nichts davon hat den Fehler behoben.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21189
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: DCBROWSE und Filter
@Bertram,
ein Breakpoint nutzt da nichts, sobald ich den Header anklicke, ist es vorbei.
ein Breakpoint nutzt da nichts, sobald ich den Header anklicke, ist es vorbei.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21189
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: DCBROWSE und Filter
jetzt habe ich es doch geschafft eine Fehlermeldung auf den Bildschirm zu kriegen.
mal schauen, ob ich weiter komme damit.
Code: Alles auswählen
Beschreibung:Interne Datenstrukturen beschädigt
Operation: <DC_XbpColumn>
aufgerufen von DC_XBPCOLUMN:SORT(2579)
usw.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: DCBROWSE und Filter
das ist aus _DCXBROW.PRG die METHOD DC_XbpColumn:Sort() ?Manfred hat geschrieben:Code: Alles auswählen
Beschreibung:Interne Datenstrukturen beschädigt Operation: <DC_XbpColumn> aufgerufen von DC_XBPCOLUMN:SORT(2579)
ist es die Zeile
Code: Alles auswählen
::parentBrowse:forceStable()
Code: Alles auswählen
::parentBrowse:Hilite()
gruss by OHR
Jimmy
Jimmy