XbpBrowse, Anzeigebereich einschränken

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

XbpBrowse, Anzeigebereich einschränken

Beitrag von Benz »

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.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: XbpBrowse, Anzeigebereich einschränken

Beitrag von Manfred »

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.
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!!
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: XbpBrowse, Anzeigebereich einschränken

Beitrag von Martin Altmann »

Moin,
  • vorher einen Filter setzen?
  • Nur den Teil, der angezeigt werden soll, in ein Array laden?
  • Eine temporäre DBF mit den anzuzeigenden Daten erzeugen?
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.
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: XbpBrowse, Anzeigebereich einschränken

Beitrag von Benz »

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
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: XbpBrowse, Anzeigebereich einschränken

Beitrag von Benz »

Ok ich habs! :-D
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) ) 
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.
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: XbpBrowse, Anzeigebereich einschränken

Beitrag von Martin Altmann »

Das einfachste ist:

Code: Alles auswählen

SET FILTER TO kundennummer == 1
GO TOP
Danach sind nur noch die Datensätze sichtbar, die der o.g. Bedingung entsprechen.
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 } ) )
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
: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.
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: XbpBrowse, Anzeigebereich einschränken [ERLEDIGT]

Beitrag von Benz »

Danke, das Beispiel sieht auch echt interessant aus!
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: XbpBrowse, Anzeigebereich einschränken [ERLEDIGT]

Beitrag von Benz »

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?
Dateianhänge
fehler_browse.png
fehler_browse.png (26.14 KiB) 11698 mal betrachtet
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: XbpBrowse, Anzeigebereich einschränken

Beitrag von Werner_Bayern »

Servus Benz,

die Meldung deutet auf ein falsches Browse-Column hin.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: XbpBrowse, Anzeigebereich einschränken

Beitrag von Benz »

Ich wüsste aber nicht warum das so sein sollte. Hier mal mein Code:

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
Die TAXVERS ist eine Datenbankspalte
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: XbpBrowse, Anzeigebereich einschränken

Beitrag von Tom »

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
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: XbpBrowse, Anzeigebereich einschränken

Beitrag von Jan »

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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: XbpBrowse, Anzeigebereich einschränken

Beitrag von Tom »

Filter? Da ist kein Filter.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: XbpBrowse, Anzeigebereich einschränken

Beitrag von Jan »

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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: XbpBrowse, Anzeigebereich einschränken

Beitrag von Tom »

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
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: XbpBrowse, Anzeigebereich einschränken

Beitrag von Benz »

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.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: XbpBrowse, Anzeigebereich einschränken

Beitrag von Tom »

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.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: XbpBrowse, Anzeigebereich einschränken

Beitrag von Jan »

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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: XbpBrowse, Anzeigebereich einschränken

Beitrag von Tom »

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.
Herzlich,
Tom
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: XbpBrowse, Anzeigebereich einschränken

Beitrag von Benz »

Danke! Dann versuch ich das mal mit dem Array.
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: XbpBrowse, Anzeigebereich einschränken

Beitrag von Benz »

Ich habe es jetzt mal so versucht:

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                                                 *
********************************************************************************
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?
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpBrowse, Anzeigebereich einschränken

Beitrag von AUGE_OHR »

Benz hat geschrieben:

Code: Alles auswählen

    , {|| JAHR == VAL(oDlg_kontenzuordnung:SLE2:EditBuffer()), ;
          KTORAHMNR == VAL(oDlg_kontenzuordnung:SLE3:EditBuffer()), ;
          KTONR == VAL(oDlg_kontenzuordnung:SLE1:EditBuffer()), ;
          ZUGEORDN == .T. } ) )
NACHTRAG:
Ok anscheinend funktioniert meine BEdingung nicht so wie gewollt, es zeigt einfach alles an, was mache ich falsch?
wenn du mehrere Felder in der FOR Bedingung hast werden die normalerweise mit .AND. verknüpft.
im Zweifel erst mal in einer "normalen" FOR / NEXT Schleife das Array erstekken.
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.
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.
gruss by OHR
Jimmy
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: XbpBrowse, Anzeigebereich einschränken

Beitrag von Benz »

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. } } ) )
Wenn ich den Code so benutze, dann kommt immer der Fehler im Anhang, dabei verweist der Fehler immer auf die letzte Zeile dieses Gebildes, was ja aber nicht wirklich etwas bringt.
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 Jahr ist in der Datenbank: Jahr,N,4,0
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
fehler.png (19.99 KiB) 11608 mal betrachtet
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: XbpBrowse, Anzeigebereich einschränken

Beitrag von Benz »

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?

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)
Ich habe es so versucht, aber das funktioniert ja nicht wirklich, weil ich nirgends die Spalte festlegen kann.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpBrowse, Anzeigebereich einschränken

Beitrag von AUGE_OHR »

Benz hat geschrieben:

Code: Alles auswählen

         oBrowse:setColWidth(100)
Ich habe es so versucht, aber das funktioniert ja nicht wirklich, weil ich nirgends die Spalte festlegen kann.
bitte mal genau die Hilfe lesen:
: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
Antworten