Hallo und willkommen im Forum,
krischanski hat geschrieben:bei einem Standard-Formular über eine Datenbank werden beim Start offenbar nur die ersten 40 Datensätze geladen,
Das ist beim Arbeiten mit Datenbanken in der Regel ein sinnvolles Verfahren: Ein Mensch kann selten mehr als 20 bis 40 Datensätze gleichzeitig überblicken. Es ist deshalb angemessen (und in der Regel viel schneller), wenn immer nur ein kleiner Teil des Datenbestandes gelesen wird.
aber vor allem auch in den Suchergebnissen: auch da werden nur die ersten 40 Datensätze durchsucht und ständig ein leeres Ergebnis geliefert, obwohl in den reichlich tausend Datensätzen etliche Treffer zu finden sein müssen.
Es ist sinnvoller, die Suchverfahren anders aufzubauen. Setze in der Definition des Formulars einen Filter (z.B. alle Adressen, deren Name mit 'Z' beginnt), sodass alle Datensätze dazu sofort gelesen und angezeigt werden; zur konkreten Suche wird der Filter jeweils neu gesetzt.
Lässt sich irgendwo speichern oder konfigurieren, wieviele Datensätze am Anfang geladen werden sollen? Nämlich gleich alle?
Es ist möglich; ich habe es so gelöst:
Code: Alles auswählen
Sub SelectLkzShowAll
rem Aufruf durch: Ereignis "Beim Laden"
rem ** alle Datensätze sofort einlesen
rem ** nach dem Einlesen Button freigeben
rem als Zeichen dafür, dass das Einlesen erledigt ist
rem **************************************
if not thiscomponent.currentcontroller.isFormDesignMode then
oForm = thisComponent.drawpage.forms.MainForm
oForm.fetchSize = 240 ' das ist der entscheidende Punkt
btn = oForm.getByName("btnOK")
btn.Label = "Land übernehmen"
btn.Enabled = true
end if
Die Lösung ist in der Diskussion
Tabelle vollständig einlesen entstanden. Bei gut 200 Datensätzen passt dieses Verfahren; ich könnte mir vorstellen, dass Base bei mehr als 1000 Datensätzen unangenehm langsam ist. Auch deshalb schlage ich ein anderes Verfahren (s.o.) vor. Jürgen