XbpBrowse,,Nur ein Teil der Basis
Moderator: Moderatoren
XbpBrowse,,Nur ein Teil der Basis
Hallo,
Wie nur bestimmte Datensätze aus einer Datei mit dem Befehl XbpBrowse angezeigt werden oder nur diejenigen, die eine bestimmte Bedingung erfüllen?
Zum Beispiel löste das Clipper Programm, das ich es so aus:
DECLARE Felder [2], siehe [2], tekstic [2]
Felder [1] = "IIF (Lager VRSI + = + lag+ VRS, Rehnung, SPACE (6))"
Felder [2] = "IIF (Lager VRSI + = + lag+ VRS, Name, SPACE (10))"
tekstic [1] = "Nummerierungs --->"
tekstic [2] = "Datum"
DBEdit (5,2,21,77, DB1 "funcnaO" -Display, tekstic, CHR (205))
Danke
Wie nur bestimmte Datensätze aus einer Datei mit dem Befehl XbpBrowse angezeigt werden oder nur diejenigen, die eine bestimmte Bedingung erfüllen?
Zum Beispiel löste das Clipper Programm, das ich es so aus:
DECLARE Felder [2], siehe [2], tekstic [2]
Felder [1] = "IIF (Lager VRSI + = + lag+ VRS, Rehnung, SPACE (6))"
Felder [2] = "IIF (Lager VRSI + = + lag+ VRS, Name, SPACE (10))"
tekstic [1] = "Nummerierungs --->"
tekstic [2] = "Datum"
DBEdit (5,2,21,77, DB1 "funcnaO" -Display, tekstic, CHR (205))
Danke
- Manfred
- Foren-Administrator
- Beiträge: 21192
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: XbpBrowse,,Nur ein Teil der Basis
Hi, bestimmte Spalten, oder bestimmte Datensätze?
Bei Datensätzen entweder mit Filter, oder Scopes und Filter. Oder vorher über einen Export. Je nach Wunsch und Bedürfnis.
Bei Datensätzen entweder mit Filter, oder Scopes und Filter. Oder vorher über einen Export. Je nach Wunsch und Bedürfnis.
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: 2825
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 96 Mal
- Danksagung erhalten: 13 Mal
Re: XbpBrowse,,Nur ein Teil der Basis
Hallo,
also das XbpColumn-Objekt hat einen :dataLink-Slot, der bestimmt, welche Daten angezeigt werden.
Was Du im Clipper-Code gemacht hast, kannst Du ja auch in einem Codeblock abbilden, den Du im XbpColumn:dataLink speicherst.
also das XbpColumn-Objekt hat einen :dataLink-Slot, der bestimmt, welche Daten angezeigt werden.
Was Du im Clipper-Code gemacht hast, kannst Du ja auch in einem Codeblock abbilden, den Du im XbpColumn:dataLink speicherst.
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Re: XbpBrowse,,Nur ein Teil der Basis
Grüße,Manfred hat geschrieben:Hi, bestimmte Spalten, oder bestimmte Datensätze?
Bei Datensätzen entweder mit Filter, oder Scopes und Filter. Oder vorher über einen Export. Je nach Wunsch und Bedürfnis.
bestimmte Datensätze (records). Mittel aus einer Datenbank, die mehr Speicher angezeigt werden nur ein Lager hat. Der Klipper Programm konnte ich mit der oben genannten Reihenfolge (IIf (lager = lag, rehnung, blank)) und die Funktion innerhalb des Arbeitssteuerbefehl DBEdit diese Ansichten Silben. So zeigt die Datensätze nur von einem Lager.
schönen gruß
Re: XbpBrowse,,Nur ein Teil der Basis
Hallo,georg hat geschrieben:Hallo,
also das XbpColumn-Objekt hat einen :dataLink-Slot, der bestimmt, welche Daten angezeigt werden.
Was Du im Clipper-Code gemacht hast, kannst Du ja auch in einem Codeblock abbilden, den Du im XbpColumn:dataLink speicherst.
können Sie ein kleines Beispiel schreiben!
vielen Dank
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2825
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 96 Mal
- Danksagung erhalten: 13 Mal
Re: XbpBrowse,,Nur ein Teil der Basis
Hallo,
ausgehend vom Titel "XbpBrowse..." wäre das so:
ausgehend vom Titel "XbpBrowse..." wäre das so:
Code: Alles auswählen
oCol := XbpColumn():new(oBro)
oCol:dataLink := {|| IIF (Lager VRSI + = + lag+ VRS, Rehnung, SPACE (6))}
oCol:create()
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- AUGE_OHR
- Marvin
- Beiträge: 12907
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: XbpBrowse,,Nur ein Teil der Basis
hi
DbEdit() wird in Xbase++ als Tbrowse() nachgebildet.
siehe c:\ALASKA\XPPW32\SOURCE\SYS\dbedit.prg
Beispiele für XbpBrowse() findest du unter c:\ALASKA\XPPW32\SOURCE\samples\basics\GuiBrow\
Ein XbpBrowse() benötigt Column.hier wird mit o:addColumn() gearbeitet. Die FUNCTION FieldBlockTrimmed() zeigt dir wie man den Codeblock zusammenbaut.
wenn du "mehr" willst brauchst du die Presentation Parameter
DbEdit() wird in Xbase++ als Tbrowse() nachgebildet.
siehe c:\ALASKA\XPPW32\SOURCE\SYS\dbedit.prg
Beispiele für XbpBrowse() findest du unter c:\ALASKA\XPPW32\SOURCE\samples\basics\GuiBrow\
Ein XbpBrowse() benötigt Column.
Code: Alles auswählen
// Für alle Felder Spalten erzeugen
imax := FCount()
aStruct := DbStruct()
FOR i:=1 TO imax
IF .NOT. aStruct[i,2] $ "BOVTXY"
oBrowse:addColumn( FieldBlockTrimmed(aStruct[i,1], aStruct[i,2]), , aStruct[i,1] )
ENDIF
NEXT
Code: Alles auswählen
FUNCTION FieldBlockTrimmed( cFieldName, cType )
LOCAL bBlock
IF FieldPos( cFieldName ) <> 0
IF ! "->" $ cFieldName
cFieldName := "FIELD->"+cFieldName
ENDIF
IF cType = "C"
bBlock := &( "{|x| IIf(x==NIL,RTrim("+cFieldName+"),"+cFieldName+":=x) }" )
ELSE
bBlock := &( "{|x| IIf(x==NIL,"+cFieldName+","+cFieldName+":=x) }" )
ENDIF
ENDIF
RETURN bBlock
Code: Alles auswählen
LOCAL aPP := { { XBP_PP_COL_HA_CAPTION , " " }, ;
{ XBP_PP_COL_HA_BGCLR , XBPSYSCLR_3DFACE }, ;
{ XBP_PP_COL_HA_FGCLR , GRA_CLR_BLACK }, ;
{ XBP_PP_COL_DA_BGCLR , GRA_CLR_WHITE }, ;
{ XBP_PP_COL_DA_FGCLR , GRA_CLR_BLACK }, ;
{ XBP_PP_COL_DA_HILITE_FGCLR , XBPSYSCLR_HILITEFOREGROUND }, ;
{ XBP_PP_COL_DA_HILITE_BGCLR , XBPSYSCLR_HILITEBACKGROUND }, ;
{ XBP_PP_COL_DA_CHARWIDTH , 1 }, ;
{ XBP_PP_COL_DA_CELLALIGNMENT , XBPALIGN_LEFT }, ;
{ XBP_PP_COL_DA_FRAMELAYOUT , XBPFRAME_NONE }, ;
{ XBP_PP_COL_DA_HILITEFRAMELAYOUT, XBPFRAME_NONE }, ;
{ XBP_PP_COL_DA_CELLFRAMELAYOUT , XBPFRAME_BOX + XBPFRAME_RAISED } }
FOR i:=1 TO imax
aPP[1,2] := aStruct[i,1]
aPP[8,2] := aStruct[i,3]*Faktor
oCol := XbpColumn():new(oBrowse,,,, app)
oCol:dataLink := {|| FIELD->aStruct[i,1] }
* oCol:colorBlock := {|xValue| IIf( <lExpression>, {<nColorFG1>,<nColorBG1>}, ;
* {<nColorFG2>,<nColorBG2>} )
oCol:create()
oBrowse:addColumn(oCol)
NEXT
gruss by OHR
Jimmy
Jimmy
Re: XbpBrowse,,Nur ein Teil der Basis
Hallo,AUGE_OHR hat geschrieben:hi
DbEdit() wird in Xbase++ als Tbrowse() nachgebildet.
siehe c:\ALASKA\XPPW32\SOURCE\SYS\dbedit.prg
Beispiele für XbpBrowse() findest du unter c:\ALASKA\XPPW32\SOURCE\samples\basics\GuiBrow\
Ein XbpBrowse() benötigt Column.hier wird mit o:addColumn() gearbeitet. Die FUNCTION FieldBlockTrimmed() zeigt dir wie man den Codeblock zusammenbaut.Code: Alles auswählen
// Für alle Felder Spalten erzeugen imax := FCount() aStruct := DbStruct() FOR i:=1 TO imax IF .NOT. aStruct[i,2] $ "BOVTXY" oBrowse:addColumn( FieldBlockTrimmed(aStruct[i,1], aStruct[i,2]), , aStruct[i,1] ) ENDIF NEXT
wenn du "mehr" willst brauchst du die Presentation ParameterCode: Alles auswählen
FUNCTION FieldBlockTrimmed( cFieldName, cType ) LOCAL bBlock IF FieldPos( cFieldName ) <> 0 IF ! "->" $ cFieldName cFieldName := "FIELD->"+cFieldName ENDIF IF cType = "C" bBlock := &( "{|x| IIf(x==NIL,RTrim("+cFieldName+"),"+cFieldName+":=x) }" ) ELSE bBlock := &( "{|x| IIf(x==NIL,"+cFieldName+","+cFieldName+":=x) }" ) ENDIF ENDIF RETURN bBlock
Code: Alles auswählen
LOCAL aPP := { { XBP_PP_COL_HA_CAPTION , " " }, ; { XBP_PP_COL_HA_BGCLR , XBPSYSCLR_3DFACE }, ; { XBP_PP_COL_HA_FGCLR , GRA_CLR_BLACK }, ; { XBP_PP_COL_DA_BGCLR , GRA_CLR_WHITE }, ; { XBP_PP_COL_DA_FGCLR , GRA_CLR_BLACK }, ; { XBP_PP_COL_DA_HILITE_FGCLR , XBPSYSCLR_HILITEFOREGROUND }, ; { XBP_PP_COL_DA_HILITE_BGCLR , XBPSYSCLR_HILITEBACKGROUND }, ; { XBP_PP_COL_DA_CHARWIDTH , 1 }, ; { XBP_PP_COL_DA_CELLALIGNMENT , XBPALIGN_LEFT }, ; { XBP_PP_COL_DA_FRAMELAYOUT , XBPFRAME_NONE }, ; { XBP_PP_COL_DA_HILITEFRAMELAYOUT, XBPFRAME_NONE }, ; { XBP_PP_COL_DA_CELLFRAMELAYOUT , XBPFRAME_BOX + XBPFRAME_RAISED } } FOR i:=1 TO imax aPP[1,2] := aStruct[i,1] aPP[8,2] := aStruct[i,3]*Faktor oCol := XbpColumn():new(oBrowse,,,, app) oCol:dataLink := {|| FIELD->aStruct[i,1] } * oCol:colorBlock := {|xValue| IIf( <lExpression>, {<nColorFG1>,<nColorBG1>}, ; * {<nColorFG2>,<nColorBG2>} ) oCol:create() oBrowse:addColumn(oCol) NEXT
danke für das Beispiel, aber dies ist im Zusammenhang mit der Bildung Spalte und ich möchte aus der Datenbank nur die Datensätze angezeigt werden, die eine bestimmte Bedingung erfüllen.
beispielsweise verwendet werden raubend Befehl oder die Zeit zu filtrieren.
Daher frage ich angeben, dass XbpBrowse nur einige Datensätze zuordnen.
Es bedeutet, dass aus der Datenbank werden nur jene gezeigt, dass die Anforderung zu erfüllen.
Beispiel für ein Lager, die Prüfung und die andere zu gelangen, die in der Datenbank vorhanden sind, die nicht sichtbar sind.
schönen gruß
- Manfred
- Foren-Administrator
- Beiträge: 21192
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: XbpBrowse,,Nur ein Teil der Basis
wie schon oben erwähnt, dann bleiben nur Scopes und/oder Filter. Oder Du exportierst vorher die gewünschten Daten in eine temporäre Datei und zeigst diese im Browse an. Oder Du schreibst die Daten in ein Array und zeigst das an. Beim Filter immer darauf achten, es kann dauern wenn die Datei zu groß ist und bei den Scopes muß ein entsprechender Index gesetzt sein.
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: 2825
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 96 Mal
- Danksagung erhalten: 13 Mal
Re: XbpBrowse,,Nur ein Teil der Basis
Hallo,
neben Scope oder Filter kann man auch die Skipper-Funktion verwenden, die ein Browse benötigt, um sich durch die Datei zu bewegen.
Der Browse teilt der Skipper-Funktion mit, wieviele Datensätze übersprungen ("geskippt") werden sollen. Die Skipper-Funktion führt das aus und meldet zurück, wieviele Sätze möglich waren. Wenn die Datei nur vier Sätze hat, und fünf Sätze gesprungen werden sollen, geht das nicht, da nach dem vierten Satz EOF() erreicht wird, dann gibt die Skipper-Funktion den Wert 4 zurück.
Wenn Du in der Skipper-Funktion prüfst, ob der Datensatz im Browse angezeigt werden soll oder nicht, kannst Du nicht gewollte Sätze ausfiltern, indem Du solche Sätze nicht zählst.
Dieses Verfahren ist bei kleinen Dateien akzeptabel, bei ganz grossen Dateien kann es dazu führen, dass die Darstellung des Browse ziemlich langsam wird.
P.S.: was ist Deine Muttersprache?
neben Scope oder Filter kann man auch die Skipper-Funktion verwenden, die ein Browse benötigt, um sich durch die Datei zu bewegen.
Der Browse teilt der Skipper-Funktion mit, wieviele Datensätze übersprungen ("geskippt") werden sollen. Die Skipper-Funktion führt das aus und meldet zurück, wieviele Sätze möglich waren. Wenn die Datei nur vier Sätze hat, und fünf Sätze gesprungen werden sollen, geht das nicht, da nach dem vierten Satz EOF() erreicht wird, dann gibt die Skipper-Funktion den Wert 4 zurück.
Wenn Du in der Skipper-Funktion prüfst, ob der Datensatz im Browse angezeigt werden soll oder nicht, kannst Du nicht gewollte Sätze ausfiltern, indem Du solche Sätze nicht zählst.
Dieses Verfahren ist bei kleinen Dateien akzeptabel, bei ganz grossen Dateien kann es dazu führen, dass die Darstellung des Browse ziemlich langsam wird.
P.S.: was ist Deine Muttersprache?
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Re: XbpBrowse,,Nur ein Teil der Basis
Dank der Filter arbeitete,Manfred hat geschrieben:wie schon oben erwähnt, dann bleiben nur Scopes und/oder Filter. Oder Du exportierst vorher die gewünschten Daten in eine temporäre Datei und zeigst diese im Browse an. Oder Du schreibst die Daten in ein Array und zeigst das an. Beim Filter immer darauf achten, es kann dauern wenn die Datei zu groß ist und bei den Scopes muß ein entsprechender Index gesetzt sein.
aber ich würde die clipper definiriat Felder mögen und die IIF angeben, die Show aufzeichnet
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2825
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 96 Mal
- Danksagung erhalten: 13 Mal
Re: XbpBrowse,,Nur ein Teil der Basis
Hallo,
Dein Code erzeugt m.E. einen Browse mit leeren Zeilen, d.h. wenn die IIF()-Bedingung nicht zutrifft, wird Space(6) bzw. Space(10) angezeigt, ist das korrekt?
Dein Code erzeugt m.E. einen Browse mit leeren Zeilen, d.h. wenn die IIF()-Bedingung nicht zutrifft, wird Space(6) bzw. Space(10) angezeigt, ist das korrekt?
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Re: XbpBrowse,,Nur ein Teil der Basis
hallo,georg hat geschrieben:Hallo,
Dein Code erzeugt m.E. einen Browse mit leeren Zeilen, d.h. wenn die IIF()-Bedingung nicht zutrifft, wird Space(6) bzw. Space(10) angezeigt, ist das korrekt?
ist richtig.