AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Query in thread ausführev: Wie Ergebnis zurück geben
Thema durchsuchen
Ansicht
Themen-Optionen

Query in thread ausführev: Wie Ergebnis zurück geben

Ein Thema von norwegen60 · begonnen am 31. Mai 2015 · letzter Beitrag vom 15. Sep 2015
Antwort Antwort
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.374 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Query in thread ausführev: Wie Ergebnis zurück geben

  Alt 4. Jun 2015, 07:04
Vielleicht einfach mal das Konzept überdenken? Oder den Anwendern erklären, dass sie entweder 20-30 Sekunden warten müssen, wenn sie die gewohnte Bedienung nicht ändern wollen?
Du steckst jetzt viel Zeit in deine ganzen Überlegungen und Klimmzüge. Manchmal muss man dem Anwender auch mal zumuten, dass sich was ändert.

Ich hatte vor Jahren etwas ähnliches.
Mit den Datenmengen war die Bedienung nicht akzeptabel. Also habe ich das Lookup nachgebildet, aber etwas umgesetzt, was du auch schon angedeutet hast. Erst ab einer gewissen Anzahl an Buchstaben werden überhaupt Daten geholt. Zusätzlich habe ich die Pausen zwischen den Tastenanschlägen geprüft und erst, wenn offensichtlich nichts mehr getippt wird, die DB-Abfrage angestoßen. Die Kombination dieser beiden Dinge hat sehr gut funktioniert. Bei mir waren es mindestens 3 Zeichen und die Pause größer als 300 Millisekunden, wenn ich mich richtig erinnere.
Also einfach mal dein Standard-Lookup rausschmeißen und was eigenes programmieren. Was ich damals gebastelt hatte, war nicht wirklich kompliziert. Außerdem spart man sich auf diese Weise auch noch die Hintergrundprüfung, ob die Daten aktualisiert werden müssen. Der lokale Rechner und das Netzwerk werden vermutlich auch nicht mehr so stark belastet. Das hängt natürlich auch von den Daten ab, die dort vorliegen.

P.S.:
Ich gehe mal davon aus, dass du eine vernünftige Indexierung auf den Such- und Sortierfeldern hast.
Peter

Geändert von Jasocul ( 4. Jun 2015 um 07:06 Uhr) Grund: P.S. angefügt.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#2

AW: Query in thread ausführev: Wie Ergebnis zurück geben

  Alt 4. Jun 2015, 07:29
In der Steuerungstechnik nennt man das 'entprellen'. Das geht mit einem Timer sehr einfach: Den Timer auf 300ms einstellen und bei jedem Tastendruck im Suchfeld (OnKeyUp) neu starten. D.h. solange man tippt, passiert nichts. Erst wenn man nicht tippt, wird automatisch nach 300ms der Timerevent aufgerufen der als erstes den Timer selbst deaktiviert und dann prüft, ob man die Daten nachladen kann/muss (Length>3 o.ä.)

Diesen kleinen Trick kann man immer dann verwenden, wenn man implizit etwas nachladen muss. So habe ich eine Report-Preview gebaut: Eine lange Liste von Reports wird im Grid angezeigt und daneben die Preview. Wenn man im Grid die Zeile wechselt, wird der entsprechende Report angezeigt. Beim Scrollen würde sich der PC aber einen Wolf rendern und das ganze ruckelt doch ganz schön: Also diesen Timer eingebaut und Ruhe im Karton. Billiger Trick, aber sehr effektiv.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz