+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

Einzelner Datensatz in Liste mit Delphi


(Guest) #1

Seit Version 13 begleitet mich ein Problem (nennen wir es einfach mal Bug). Wenn mein Datasource nur einen Datensatz enthält, wird die Tabelle nicht gezeichnet.

In der L16.pas wird folgender Code verwendet.

[quote] // init first page
DefineVariablesCallback(UserData, 0, @nProgressInPerc, @bLastRecord, nRet);
while (LlPrint=LL_WRN_REPEAT_DATA) do;

while (bLastRecord = 0) and (nRet = 0) do
begin  {lines}
  DefineFieldsCallback(UserData, 0, @nProgressInPerc, @bLastRecord, nRet);[/quote]

Die Funktion DefineVariablesCallback schreibt 1 in die Variable bLastRecord. Dadurch geht er aber die einzelnen Records nicht mehr durch, da er auf bLastRecord=0 prüft.
Weiter unten wird DefineVariablesCallback noch einmal benutzt. Dort wird bLastRecord aber in einer Dummy Variable geschrieben.
Nehme ich nun diese Funktion oben raus oder schreibe es auch eine DummyVariable, wird die Tabelle auch mit einem Datensatz angezeigt.

Der Ausschnitt aus meinen LLDefineVariables Event sieht folgendermaßen aus:

[quote] {D: Wiederholung für alle Datensatzfelder }
for i:= 0 to (OSP_Data_Head.FieldCount-1) do
begin
{D: Umsetzung der Datenbank-Feldtypen in List & Label Feldtypen }
LL.LlDefineVariableFromTFieldExt(SQLHeadList[SQLHeadListActive].Name, OSP_Data_Head.Fields[i]);
end;

  {D:  Werden Echt-Daten benötigt (nicht bei Designer-Aufruf) }
  if not IsDesignMode then
  begin
    {D:  Prozentanzeige aktualisieren und zu nächsten Datensatz wechseln }
    if(OSP_Data_Head.RecNo>0) and (OSP_Data_Head.RecordCount>0) then
      Percentage:=Round(OSP_Data_Head.RecNo/OSP_Data_Head.RecordCount*100)
    else
      Percentage:=0;

    OSP_Data_Head.Next;
    {D:  Druck beenden, wenn kein weiterer Datensatz vorhanden ist }
    IsLastRecord:=OSP_Data_Head.EOF;
  end;[/quote]

Liege ich hier irgendwo falsch oder ist es einfach ein Bug der niemande seit mehreren Versionen aufgefallen ist.

Mfg Oliver