XbpBrowse und leere Tabelle

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
UliTs
Der Entwickler von "Deep Thought"
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:

XbpBrowse und leere Tabelle

Beitrag von UliTs »

Hallo,

ich nutze seit neuestem XbpBrowse intensiver.

Nun kommt es in meiner Anwendung öfters zu dem Fall, daß in einem XbpBrowse-Dialog (noch) keine Datensätze vorhanden sind.
Leider wird dann trotzdem ein leerer Datensatz angezeigt. :(
Kann man dies irgendwie verhindern? :)

Uli
Benutzeravatar
Bertram Hansen
Foren-Moderator
Foren-Moderator
Beiträge: 1017
Registriert: Di, 27. Sep 2005 8:55
Wohnort: 51379 Leverkusen
Hat sich bedankt: 28 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Beitrag von Bertram Hansen »

Hallo Uli,

meinst Du eventuell nur die Darstellung von leeren Datensätzen bei bestimmten Datentypen (numerisch = 0 oder logisch = .F.)?
Bei dem Datentype Zeichenkette wird bei mir "nichts" angezeigt.
:wave:
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!
UliTs
Der Entwickler von "Deep Thought"
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:

Beitrag von UliTs »

Hallo Bertram,

stimmt! Zwei Spalten haben numerische Werte.

Uli
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9380
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Uli.

Eine Datenbank ohne Datensätze gibt es bei Xbase genaugenommen nicht. Selbst bei EoF() liefert die Tabelle immer einen leeren Datensatz zurück, den "Phantom-Datensatz". Der enthält dann je nach Struktur leere Strings, .F. für logische Felder, das Null-Datum (" . . ") und Nullen bei numerischen Feldern (0 oder 0.00 usw.). Du müsstest also in den Daten-Codeblöcken Deines Browses abfangen, ob die Datenquelle auf Eof() steht - und dann entsprechend reagieren.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14659
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Wenn das Problem "nur" ist, daß in dem Phantom-Datensatz im Browse nichtssagende Werte drin stehen (die bei "keinem vorhandenen" Datensatz natürlich irritieren), dann hab ich das anders gelöst. Ich habe nämlich das Problem, daß in vorhandenen Datensätzen Sachen angezeigt werden, die nur irritieren (wenn da nämlich nichts drin steht in dem Feld). Also habe ich im XbpColumn eine IIF()-Abfrage drin, die bei unerwünschten Werten ein "" im Browse anzeigt. Ungefähr so, wie ich im Browse auch kein .T. anzeige sondern z. B. ein "Ja".

Jan
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

im XbpColum():datalink wird ja ein Codeblock eingtragen, der den anzuzeigenden Text zurückgibt. In diesem Codeblock kann man dann z.B. nach eof() oder anderen Dingen abfragen und so die Anzeige manipulieren. Ich habe auf diese Weise auch schon die Summe von 2 DBF Feldern anzeigen lassen.
Gruß
Hubert
UliTs
Der Entwickler von "Deep Thought"
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:

Beitrag von UliTs »

Hallo allerseits,

danke für die vielen Tips.
Ich habe es zunächst mit dem EOF-Hinweis umgesetzt.
Allerdings wird so immer noch ein "leerer" Datensatz hervorgehoben angezeigt.
Bei etwas mehr Zeit habe ich vor, von XbpBrowse eine eigene Klasse abzuleiten. Bei dieser kann man dann vielleicht mit Hilfe von :itemMarked() bei EOF() kurzerhand die (Vorder- und) Hintergrundfarbe von XBP_PP_COL_DA_HILITE.. auf XBP_PP_COL_DA_.. setzen
:)
Uli
Antworten