Announcement

Collapse
No announcement yet.

TDBLISTBOX

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TDBLISTBOX

    Liebe Delphianer,

    bei den SQ-Kollegen hatte ich kein Glück und stelle meine Frage in diesem Forum noch einmal. Vielleicht weiss hier jemand Rat.

    Datenbankprogrammierung ist für mich ein relativ neues Gebiet und ich habe folgendes Problem:

    bei einer Datenbank die u.a. mit folgenden Komponenten verknüpft ist Datenbank - ttable - tdatasource - tdblistbox oder
    Datenbank - tqery - tdatasource - tdblistbox werden, wie erwartet die Daten des angegebenen Feldes in tdblistbox angezeigt. Wie kann ich die Menge der in tdblistbox enthaltenen Daten begrenzen ? Es sollen z.B. die ersten 20 Namen angezeigt werden und wenn der Cursor am Ende der Listbox angelangt ist und versucht wird den Cursor weiter nach unten zu bewegen die nächsten bzw. die vorherigen 20 beim Setzen des Cursor auf den Anfang der Liste und weiteren Versuch den Cursor nach oben zu bewegen. Der Hintergrund meiner Frage besteht darin, dass die Anwendung auch über RAS auf die Datenbank zugreifen soll und aus Zeitgründen nicht bei jedem Einloggen der gesamte Datenbestand in die Listbox eingetragen werden soll.

    MfG Gerhard

  • #2
    Hallo,

    immer dann, wenn die Datenmenge nicht "am Stück", sondern in einzelnen Blöcken mit einer frei wählbaren Anzahl von Datensätzen übertragen werden soll, schlägt die große Stunde von <b>MIDAS</b>. Bei einer TDBListBox ist so etwas nicht vorgesehen - da diese Komponente nur die Datensätze einer bereits bestehenden Datenmenge anzeigt. Man muss also dafür sorgen, das die Datenmenge jedesmal neu aufgebaut wird. Dazu kann die TQuery-Eigenschaft <b>Eof</b> ausgewertet werden. Immer dann, wenn Eof TRUE ist, wird die SELECT-Abfrage mit einem geänderten WHERE-Teil neu ausgeführt. Dabei muss der WHERE-Teil so formuliert werden, das immer nur eine Teilmenge zurückgeliefert wird.

    Es stellt sich allerdings die Frage, ob das ständige Neuaufbauen der Ergebnismenge spürbar schneller ist als das einmalige Einlesen der vollständigen Datenmenge. Das Programm könnte ja auch zum Beispiel über einen zweiten Thread die Daten beim Programmstart in eine <b>TClientDataset</b>-Instanz schreiben (die als Speichertabelle bei späteren Abfragen sehr schnell reagiert)

    Comment


    • #3
      Hallo Andreas,

      besten Dank für die schnelle Antwort. Der Tip mit dem zweiten Thread gefällt mir und ich werde diesen Weg wohl beschreiten. Also nochmals besten Dank !

      MfG
      Gerhar

      Comment

      Working...
      X