ist es möglich in einem Resultset direkt etwas zu suchen ohne durch das Resultset interieren zu müssen?
Worum geht es?
Ich habe eine Datenbank mit 2 Tabellen und 1:n Beziehung. Zur Eingabe und zum Bearbeiten dr DAtensätze dient ein Basic-Dialog (kein Formular) den ich natürlich per Makros mit Inhalt füllen muss.
Ein zentrales Element des Dialogs ist eine Combobox worin ich zunächst alle Firmennamen aus der Datenbank einlese.
WEnn nun der Nutzer per Tastaur in diese Combobox Eingaben mach wird automatisch die Eingabe (schrittweise) vervollständigt wenn es in der Liste (.stringitemList) der Combobox einen passenden Eintrag gibt.
In dem Moment wo es einen passenden Eintrag gibt sollen nun aber alle Felder des Dialogs mit den jeweis passenden WErten aus der Datenbank gefüllt werden, also muss icvh per Makro/SQL die Datenbank abfragen und dann in die Felder eintragen, für Formular und Unterformular.
Problem ist:
wenn der Anwender auch nur halbwegs flott tippt muss ich mehrmals pro Sekunde die SQL-Abfrage der Datenbank neu ausführen und neue Werte ins Formular schreiben.
Hierbei kommt LO geschwindigkeitsmäßig völlig an seine Grenzen. MIndestens ist eine deutliche Verzögerung zu merken, teilweise aber 'hängt' sich LO mehrere Sekunden lang auf, ehe es wieder reagiert.
Was kann ich tun?
Eine Hoffnung von mir wäre einmalig die gesamte Tabelle auszulesen, also (sinngemäß):
Code: Alles auswählen
sql_string = "Select * FROM ""Firma"""
oBaseContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
oDataSource = oBaseContext.getByName(DB_name) 'DB_name, siehe Modul "_info"
oCon = oDataSource.getConnection(sUser, sPassword)
oStatement = oCon.createStatement()
oAbfrageergebnis = oStatement.executeQuery(sql_string)
(Ständig durch oAbfrageergebnis zu interieren ist hingegen leider zu langsam)
Oder hat jemand einen anderen Ansatz?
Gruß
Stephan