XbpBrowse, Anzeigebereich einschränken
Moderator: Moderatoren
-
- Rekursionen-Architekt
- Beiträge: 440
- Registriert: Mo, 30. Mai 2011 15:06
- Danksagung erhalten: 1 Mal
XbpBrowse, Anzeigebereich einschränken
Hi, gibt es eine einfache Möglichkeit nicht die gesamte Datenbank durch ein XbpBrowse anzeigen zu lassen, sondern nur einen gewissen Teil, beispielsweise nur den Teil, der die Kundennummer 1 hat ?
Zuletzt geändert von Benz am Mi, 20. Mai 2015 11:26, insgesamt 2-mal geändert.
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: XbpBrowse, Anzeigebereich einschränken
Hi,
mit einem Filter, oder mit Scope z.B. Scope benötigt aber unbedingt einen Index. Oder mit Scope und dann einem Filter, je nachdem, was gefordert ist.
mit einem Filter, oder mit Scope z.B. Scope benötigt aber unbedingt einen Index. Oder mit Scope und dann einem Filter, je nachdem, was gefordert ist.
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!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16508
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: XbpBrowse, Anzeigebereich einschränken
Moin,
Martin
- vorher einen Filter setzen?
- Nur den Teil, der angezeigt werden soll, in ein Array laden?
- Eine temporäre DBF mit den anzuzeigenden Daten erzeugen?
Martin
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.
-
- Rekursionen-Architekt
- Beiträge: 440
- Registriert: Mo, 30. Mai 2011 15:06
- Danksagung erhalten: 1 Mal
Re: XbpBrowse, Anzeigebereich einschränken
Wie würde so etwas dann aussehen? Könntest du ein kleines Beispiel posten, auf dem ic haufbauen könnte?
Sorry aber ich bin wohl noch nicht so weit, dass ich das einfach so hinbekomme... Das mit der temp. Dbf habe ich mir auch schon überlegt, aber ich dachte es müsste ja eigentlich eine einfachere Lösung geben
Sorry aber ich bin wohl noch nicht so weit, dass ich das einfach so hinbekomme... Das mit der temp. Dbf habe ich mir auch schon überlegt, aber ich dachte es müsste ja eigentlich eine einfachere Lösung geben
-
- Rekursionen-Architekt
- Beiträge: 440
- Registriert: Mo, 30. Mai 2011 15:06
- Danksagung erhalten: 1 Mal
Re: XbpBrowse, Anzeigebereich einschränken
Ok ich habs!
DbSetFilter hat irgendwie nicht ganz so funktionerit, wie ich es eigentlich wollte, aber DbSetScope funktioniert prima!
Hier muss wie bereits weiter oben erwähnt ein Index vorhanden sein, der genauso aussieht, wie das, was man in DbSetScope als Einschränkung angibt, bzw. nach hinten kann deR Index auch länger sein.
DbSetFilter hat irgendwie nicht ganz so funktionerit, wie ich es eigentlich wollte, aber DbSetScope funktioniert prima!
Code: Alles auswählen
DbSetScope( SCOPE_BOTH, STR(1991,4,0)+STR(10,2,0) )
- Martin Altmann
- Foren-Administrator
- Beiträge: 16508
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: XbpBrowse, Anzeigebereich einschränken
Das einfachste ist:
Danach sind nur noch die Datensätze sichtbar, die der o.g. Bedingung entsprechen.
Die Sache mit dem Array geht im Prinzip so:
DBF ist der Alias Deiner geöffneten DBF
aBewertungen ist dann das Array, dass die Datensätze enthält
katalognr, bewertung2, bewertung3, alltrim( richter ), bob sind die Felder, die in Deinem Browse angezeigt werden sollen
In der Hilfe findest Du unter der Beschreibung zu XbpQuickBrowse ein Beispiel für das Browsen eines Arrays.
Viele Grüße,
Martin
Code: Alles auswählen
SET FILTER TO kundennummer == 1
GO TOP
Die Sache mit dem Array geht im Prinzip so:
Code: Alles auswählen
DBF->( DbEval( {|| aAdd( aBewertungen, { katalognr, bewertung2, bewertung3, alltrim( richter ), bob } ) }, {|| kundennummer == 1 } ) )
aBewertungen ist dann das Array, dass die Datensätze enthält
katalognr, bewertung2, bewertung3, alltrim( richter ), bob sind die Felder, die in Deinem Browse angezeigt werden sollen
In der Hilfe findest Du unter der Beschreibung zu XbpQuickBrowse ein Beispiel für das Browsen eines Arrays.
Viele Grüße,
Martin
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.
-
- Rekursionen-Architekt
- Beiträge: 440
- Registriert: Mo, 30. Mai 2011 15:06
- Danksagung erhalten: 1 Mal
Re: XbpBrowse, Anzeigebereich einschränken [ERLEDIGT]
Danke, das Beispiel sieht auch echt interessant aus!
-
- Rekursionen-Architekt
- Beiträge: 440
- Registriert: Mo, 30. Mai 2011 15:06
- Danksagung erhalten: 1 Mal
Re: XbpBrowse, Anzeigebereich einschränken [ERLEDIGT]
Jetzt bin ich auf einen Fehler gestoßen. Und zwar wenn ich ein Browse erstelle und darauf DbSetScope anwende, wie ich es oben beschrieben habe, das Browse aber mehr Zeilen hat, als durch die Einschränkung befüllt werden können, entstehen Leerzeilen (siehe Bild im Anhang).
Wenn man nun aus Versehen auf diese Leerzeilen klickt oder mit den Pfeiltasten von einer "richtigen" Zeile auf eine falsche fährt, so erscheint eine Fehlermeldung wie die im Anhang. Kann man das irgendwie verhindern?
Wenn man nun aus Versehen auf diese Leerzeilen klickt oder mit den Pfeiltasten von einer "richtigen" Zeile auf eine falsche fährt, so erscheint eine Fehlermeldung wie die im Anhang. Kann man das irgendwie verhindern?
- Dateianhänge
-
- fehler_browse.png (26.14 KiB) 11711 mal betrachtet
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2121
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 72 Mal
Re: XbpBrowse, Anzeigebereich einschränken
Servus Benz,
die Meldung deutet auf ein falsches Browse-Column hin.
die Meldung deutet auf ein falsches Browse-Column hin.
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
-
- Rekursionen-Architekt
- Beiträge: 440
- Registriert: Mo, 30. Mai 2011 15:06
- Danksagung erhalten: 1 Mal
Re: XbpBrowse, Anzeigebereich einschränken
Ich wüsste aber nicht warum das so sein sollte. Hier mal mein Code:
Die TAXVERS ist eine Datenbankspalte
Code: Alles auswählen
PROCEDURE proc_browse_zuordnungen(oDlg_kontenzuordnung, oBrowse)
LOCAL browse_pos[2]
LOCAL browse_size[2]
LOCAL aFeldnamen_FeldGroessen_titel := {}
LOCAL i
LOCAL memempty_browse := .F.
IF empty(oBrowse)
AADD( aFeldnamen_FeldGroessen_titel,{"ID",8,"ID"})
AADD( aFeldnamen_FeldGroessen_titel,{"TAXVERS",10,"Tax.Version"})
AADD( aFeldnamen_FeldGroessen_titel,{"SOLLPOS",10,"Sollposition"})
AADD( aFeldnamen_FeldGroessen_titel,{"HABENPOS",10,"Habenposition"})
AADD( aFeldnamen_FeldGroessen_titel,{"KTONR",10,"KtoNr"})
browse_pos[1] := 12
browse_pos[2] := 220
browse_size[1] := 530
browse_size[2] := 300
oBrowse := GuiBrowseDb2( oDlg_kontenzuordnung:drawingArea ,browse_pos, browse_size )
memempty_browse := .T.
ENDIF
CLOSE ZUOR
USE NMZUORDN NEW SHARED INDEX NMZUORD1, NMZUORD2, NMZUORD3 ALIAS ZUOR
SELECT("ZUOR")
INDEXKEY(1)
DbSetScope( SCOPE_BOTH, ;
STR(VAL(oDlg_kontenzuordnung:SLE2:EditBuffer()),4,0) ;
+ STR(VAL(oDlg_kontenzuordnung:SLE3:EditBuffer()),2,0) ;
+ STR(VAL(oDlg_kontenzuordnung:SLE1:EditBuffer()),10,0) ;
+ TRANSFORM(.T.,"L") ;
)
IF memempty_browse
i:=1
DO WHILE i <= len(aFeldnamen_FeldGroessen_titel)
oBrowse:addColumn( FieldBlock(aFeldnamen_FeldGroessen_titel[i,1]);
,aFeldnamen_FeldGroessen_titel[i,2];
,aFeldnamen_FeldGroessen_titel[i,3];
)
i := i+1
ENDDO
oBrowse:show()
ELSE
oBrowse:RefreshAll()
ENDIF
DbClearScope()
RETURN
FUNCTION GuiBrowseDB2( oParent;
,aPos;
,aSize;
,create)
LOCAL oBrowse
IF create=0
oBrowse := XbpBrowse():new( oParent,,aPos,aSize )
ELSE
oBrowse := XbpBrowse():new( oParent,,aPos,aSize ):create()
ENDIF
oBrowse:LayoutAlign := 2
// Navigation code blocks for the browser
oBrowse:skipBlock := {|n| DbSkipper(n) }
oBrowse:goTopBlock := {| | DbGoTop() }
oBrowse:goBottomBlock := {| | DbGoBottom() }
oBrowse:phyPosBlock := {| | Recno() }
// Navigation code blocks for the vertical scroll bar
oBrowse:posBlock := {| | DbPosition() }
oBrowse:goPosBlock := {|n| DbGoPosition(n) }
oBrowse:lastPosBlock := {| | 100 }
oBrowse:firstPosBlock := {| | 0 }
oBrowse:cursorMode := XBPBRW_CURSOR_ROW
oBrowse:useVisualStyle:=.F.
oBrowse:useVisualStyle:=.T.
RETURN oBrowse
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9358
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: XbpBrowse, Anzeigebereich einschränken
Der Code ist etwas irritierend. Du setzt einen Scope und löschst ihn nach dem RefreshAll() wieder, weshalb diese seltsamen Daten in den vermeintlichen Leerzeilen entstehen. Und irgendwo wirst Du auch noch die Workarea schließen oder wechseln, so dass plötzlich keine Daten mehr gefunden werden. So oder so, diese Programmierung kommt mir merkwürdig vor.
Herzlich,
Tom
Tom
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: XbpBrowse, Anzeigebereich einschränken
Wenn taxvers definitiv ein gültiges Datenbankfeld ist,d as aber im browse angemeckert wird, dann steht eventuell der Fokus nicht auf der betreffenden Datenbank. Gut ist es immer, vor den Feldnamen den Alias zu setzen. Also z. B. adressen->taxvers. Dann ist imemr klar, woher das Feld kommt.
Ein Filter in einem browse kann übrigens sehr kontraproduktiv sein. Wenn nur eine kleine Zahl der Sätze dem Filter entspricht, dann kann man da schlecht von Scrollen sprechen. Eher von sporadischem Hüpfen. Scopes sind immer wesentlich besser.
Jan
Ein Filter in einem browse kann übrigens sehr kontraproduktiv sein. Wenn nur eine kleine Zahl der Sätze dem Filter entspricht, dann kann man da schlecht von Scrollen sprechen. Eher von sporadischem Hüpfen. Scopes sind immer wesentlich besser.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: XbpBrowse, Anzeigebereich einschränken
Tom,
ich schrieb das nur weil oben mal die Möglichkeit diskutiert worden war. Benz hatte damit zwar Probleme, ist dann zum Glück auf die Scopes umgestiegen. Aber ich wollte es dennoch erwähnen. Denn gerade in einem Browse kann das extrem nervtötend sein, wenn das dauert und dauert und dauert.
Jan
ich schrieb das nur weil oben mal die Möglichkeit diskutiert worden war. Benz hatte damit zwar Probleme, ist dann zum Glück auf die Scopes umgestiegen. Aber ich wollte es dennoch erwähnen. Denn gerade in einem Browse kann das extrem nervtötend sein, wenn das dauert und dauert und dauert.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9358
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: XbpBrowse, Anzeigebereich einschränken
So oder so. Benz hat vor allem das Problem, dass er ein Browse erzeugt und dann hinterrücks die Datenversorgung ändert, beispielsweise durch die Löschung des Scopes. Ein Browse reagiert aber "live" auf die Datenquelle, in diesem Fall die Tabelle. Das Scope darf erst gelöscht werden, wenn sich die Datenquelle ändert oder das Browse zerstört wird. Vermutlich wird auch noch anderswo die Tabelle geschlossen oder die Workarea gewechselt, daher der Laufzeitfehler. Die Verwendung des Alias' im Datalink wäre hilfreich, wahrscheinlich aber ist das Problem ein grundsätzliches und paradigmatisches. So macht man das nicht, um es kurz zu sagen.
Herzlich,
Tom
Tom
-
- Rekursionen-Architekt
- Beiträge: 440
- Registriert: Mo, 30. Mai 2011 15:06
- Danksagung erhalten: 1 Mal
Re: XbpBrowse, Anzeigebereich einschränken
Das Clear scope habe ich jetzt erst dazu gemacht, das hat keine Auswirkung, der Fehler trat davor schon auf. Mein Problem ist, dass ich auf die Datenbank acuh so zugreifen will. Wenn ich ClearScrope nicht mache, dann habe ich nur einen eingeschränkten Datenbankbereich für weitere funktionen zur Verfügung. Oder wie könnte ich das sonst bewerkstelligen?
Zuletzt geändert von Benz am Mi, 27. Mai 2015 15:27, insgesamt 1-mal geändert.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9358
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: XbpBrowse, Anzeigebereich einschränken
Hallo, Benz.
Das DbClearScope hat aber definitiv zur Folge, dass Du beim Navigieren diese "Phantomzeilen" siehst.
Wenn Du parallel mit der gleichen Workarea noch andere Dinge tun willst, gibt es zwei Möglichkeiten:
a) Du öffnest die Tabelle erneut für das Browse - und nur für das Browse. Dann kannst Du auch das DbClearScope() rausnehmen - und das musst Du sowieso, weil es das Browse zerschießt.
b.1) Du liest die Datensätze in ein Array ein, das als Datenquelle dient. Damit bist Du auf der sicheren Seite und unabhängig von der Workarea.
b.2) Du erzeugst eine Temporärtabelle. Davon würde ich allerdings eher abraten.
Das DbClearScope hat aber definitiv zur Folge, dass Du beim Navigieren diese "Phantomzeilen" siehst.
Wenn Du parallel mit der gleichen Workarea noch andere Dinge tun willst, gibt es zwei Möglichkeiten:
a) Du öffnest die Tabelle erneut für das Browse - und nur für das Browse. Dann kannst Du auch das DbClearScope() rausnehmen - und das musst Du sowieso, weil es das Browse zerschießt.
b.1) Du liest die Datensätze in ein Array ein, das als Datenquelle dient. Damit bist Du auf der sicheren Seite und unabhängig von der Workarea.
b.2) Du erzeugst eine Temporärtabelle. Davon würde ich allerdings eher abraten.
Herzlich,
Tom
Tom
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: XbpBrowse, Anzeigebereich einschränken
Es gibt noch eine Möglichkeit: Der Scope ist nur auf dem betreffenden Index aktiv. Sobald der Index auf einen anderen gewechselt wird, ist der Scope auch inaktiv. Man sieht also ungefiltert alle Datensätze. So lange, bis der betreffende Index wieder der führende ist.
Jan
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9358
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: XbpBrowse, Anzeigebereich einschränken
Man könnte auch die Navigationscodeblöcke des Browses anpassen.
Am einfachsten dürfte das aber in der vorliegenden Konstellation mit einem Array oder einer zusätzlichen Workarea zu bewerkstelligen sein.
Am einfachsten dürfte das aber in der vorliegenden Konstellation mit einem Array oder einer zusätzlichen Workarea zu bewerkstelligen sein.
Herzlich,
Tom
Tom
-
- Rekursionen-Architekt
- Beiträge: 440
- Registriert: Mo, 30. Mai 2011 15:06
- Danksagung erhalten: 1 Mal
Re: XbpBrowse, Anzeigebereich einschränken
Ich habe es jetzt mal so versucht:
Und das Browse wird nun auch angezeigt und der Fehler ist weg, allerdings wird das Browse jetzt nicht mehr aktualisiert. Beispielsweise soll bei der Eintragung einer anderen Zahl in SLE2 eine andere Datensatzmenge angezeigt werden,
da das SLE2 ja Bestandteil der Bedingung ist.
NACHTRAG:
Ok anscheinend funktioniert meine BEdingung nicht so wie gewollt, es zeigt einfach alles an, was mache ich falsch?
Code: Alles auswählen
********************************************************************************
* *
PROCEDURE proc_browse_zuordnungen(oDlg_kontenzuordnung, oBrowse)
* *
* Die Prozedur erstellt ein internes Browse, welches die Zuordnungen der *
* Tags der Taxonomie zu einem Buchhaltungskonto zeigt. *
********************************************************************************
LOCAL browse_pos[2]
LOCAL browse_size[2]
LOCAL aFeldnamen_FeldGroessen_titel := {}
LOCAL i
LOCAL memempty_browse := .F.
LOCAL aZuordnungen := {}
LOCAL aColumns := {}
LOCAL aHeader := {}
aHeader := { ;
"ID", ;
"Tax.Version", ;
"Sollposition", ;
"Habenposition", ;
"KtoNr" }
aColumns := { ;
"ID", ;
"TAXVERS", ;
"SOLLPOS", ;
"HABENPOS", ;
"KTONR" }
ZUOR->( DbEval( ;
{|| aAdd( aZuordnungen, { ID, TAXVERS, SOLLPOS, HABENPOS, KTONR } ) } ;
, {|| JAHR == VAL(oDlg_kontenzuordnung:SLE2:EditBuffer()), ;
KTORAHMNR == VAL(oDlg_kontenzuordnung:SLE3:EditBuffer()), ;
KTONR == VAL(oDlg_kontenzuordnung:SLE1:EditBuffer()), ;
ZUGEORDN == .T. } ) )
IF empty(oBrowse)
browse_pos[1] := 12
browse_pos[2] := 220
browse_size[1] := 530
browse_size[2] := 300
oBrowse := XbpQuickBrowse():new(oDlg_kontenzuordnung:drawingArea,,browse_pos, browse_size)
oBrowse:dataLink := DacPagedDataStore():new(aZuordnungen)
oBrowse:create()
oBrowse:setHeader(aHeader)
memempty_browse := .T.
ENDIF
IF !memempty_browse
oBrowse:RefreshAll()
ENDIF
RETURN
********************************************************************************
* ENDE proc_browse_zuordnungen *
********************************************************************************
da das SLE2 ja Bestandteil der Bedingung ist.
NACHTRAG:
Ok anscheinend funktioniert meine BEdingung nicht so wie gewollt, es zeigt einfach alles an, was mache ich falsch?
- 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: XbpBrowse, Anzeigebereich einschränken
wenn du mehrere Felder in der FOR Bedingung hast werden die normalerweise mit .AND. verknüpft.Benz hat geschrieben:NACHTRAG:Code: Alles auswählen
, {|| JAHR == VAL(oDlg_kontenzuordnung:SLE2:EditBuffer()), ; KTORAHMNR == VAL(oDlg_kontenzuordnung:SLE3:EditBuffer()), ; KTONR == VAL(oDlg_kontenzuordnung:SLE1:EditBuffer()), ; ZUGEORDN == .T. } ) )
Ok anscheinend funktioniert meine BEdingung nicht so wie gewollt, es zeigt einfach alles an, was mache ich falsch?
im Zweifel erst mal in einer "normalen" FOR / NEXT Schleife das Array erstekken.
du arbeitest auf ein Array und nicht auf die DBF d.h. du musst die Array Werte erst zurück "schreiben" bevor du was sehen kannst.Benz hat geschrieben:Und das Browse wird nun auch angezeigt und der Fehler ist weg, allerdings wird das Browse jetzt nicht mehr aktualisiert. Beispielsweise soll bei der Eintragung einer anderen Zahl in SLE2 eine andere Datensatzmenge angezeigt werden, da das SLE2 ja Bestandteil der Bedingung ist.
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 440
- Registriert: Mo, 30. Mai 2011 15:06
- Danksagung erhalten: 1 Mal
Re: XbpBrowse, Anzeigebereich einschränken
Code: Alles auswählen
ZUOR->( DbEval( ;
{|| aAdd( aZuordnungen, { ID, TAXVERS, SOLLPOS, HABENPOS, KTONR } ) } ;
, {|| {JAHR == VAL(oDlg_kontenzuordnung:SLE2:EditBuffer()) .AND. ;
KTORAHMNR == VAL(oDlg_kontenzuordnung:SLE3:EditBuffer()) .AND. ;
KTONR == VAL(oDlg_kontenzuordnung:SLE1:EditBuffer()) .AND. ;
ZUGEORDN == .T. } } ) )
Dasselbe passiert, wenn ich noch den Datenbanknamen einfüge:
Code: Alles auswählen
ZUOR->( DbEval( ;
{|| aAdd( aZuordnungen, { ID, TAXVERS, SOLLPOS, HABENPOS, KTONR } ) } ;
, {|| {ZUOR->JAHR == VAL(oDlg_kontenzuordnung:SLE2:EditBuffer()) .AND. ;
ZUOR->KTORAHMNR == VAL(oDlg_kontenzuordnung:SLE3:EditBuffer()) .AND. ;
ZUOR->KTONR == VAL(oDlg_kontenzuordnung:SLE1:EditBuffer()) .AND. ;
ZUOR->ZUGEORDN == .T. } } ) )
Das Feld KTORAHMNR: KTORAHMNR,N,2,0
Das Feld KTONR: KTONR,N,10,0
und das Feld ZUGEORDN: ZUGEORDN,L
also drei numerische, ein boolean Datenbankfeld.
- Dateianhänge
-
- fehler.png (19.99 KiB) 11621 mal betrachtet
-
- Rekursionen-Architekt
- Beiträge: 440
- Registriert: Mo, 30. Mai 2011 15:06
- Danksagung erhalten: 1 Mal
Re: XbpBrowse, Anzeigebereich einschränken
Ich habe es jetzt mit einer direkten FOR Schleife gelöst, das funktioniert jetzt also, wenn auch nicht auf diesem Wege. Jetzt habe ich noch eine weitere Frage, und zwar würde ich gerne die Breite einzelner Spalten in dem XbpQuickBrowse Objekt anpassen. Die Methode dazu müsste ja setColWidth() sein. Nur wie kann ich mit dieser Methode eine einzelne Spalte ansprechen?
Ich habe es so versucht, aber das funktioniert ja nicht wirklich, weil ich nirgends die Spalte festlegen kann.
Code: Alles auswählen
oBrowse := XbpQuickBrowse():new(oDlg_kontenzuordnung:drawingArea,,browse_pos, browse_size)
oBrowse:dataLink := DacPagedDataStore():new(aZuordnungen)
oBrowse:create()
oBrowse:setHeader(aHeader)
oBrowse:setColWidth(100)
- 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: XbpBrowse, Anzeigebereich einschränken
bitte mal genau die Hilfe lesen:Benz hat geschrieben:Ich habe es so versucht, aber das funktioniert ja nicht wirklich, weil ich nirgends die Spalte festlegen kann.Code: Alles auswählen
oBrowse:setColWidth(100)
:setColWidth( <nPixel>, [<nColPos>] ) --> lSuccess
<nColPos> ist ein numerischer Wert, welcher die ordinale Position der spalte angibt, deren Breite verändert werden soll.
Falls der Parameter nicht angegeben ist, bekommen alle Spalten die gleiche Breite.
gruss by OHR
Jimmy
Jimmy