AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DBLookupCombobox

Ein Thema von jangbu · begonnen am 23. Nov 2012 · letzter Beitrag vom 23. Nov 2012
Antwort Antwort
jangbu

Registriert seit: 6. Apr 2006
171 Beiträge
 
Delphi 10.3 Rio
 
#1

DBLookupCombobox

  Alt 23. Nov 2012, 09:19
Datenbank: MSQL • Version: 2000^ • Zugriff über: ADO
Hallo,

in einer DBLookupCombobox zeige ich sortierte (string)Daten einer Tabelle an. Sobald bei aufgeklappter Box eine Taste geklickt wird, wird zum ersten übereinstimmenden Datensatz gesprungen. Soweit so gut. Jetzt ist es so, das die Daten der betroffenen Tabelle immer mit 3 konstanten führenden Zeichen beginnen, sodas immer erst ab dem 4. eingegeben Zeichen eine wirkliche Selektion stattfinden kann.
Bsp:
'22XMueller'
'22XHuber'
'22XSchmit', usw.
Habe ich eine Möglichkeit die Filterfunktion so zu verändern, dass zur Filterung erst mit der Eigabe des 4.Zeichen begonnen werden kann, also nicht erst '22XM' sondern gleich 'M' eingegeben werden kann um den mit 'M' beginnenden Datensatz zu selektieren.

Jemand ne Idee? Danke
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: DBLookupCombobox

  Alt 23. Nov 2012, 09:21
Ja, entferne die führenden gleichen Stellen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
jangbu

Registriert seit: 6. Apr 2006
171 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: DBLookupCombobox

  Alt 23. Nov 2012, 11:11
Nun ja, wenn ich im Listfield die im select um 3 Stellen gekürzten Strings anzeige ist doch aber mein Ergebnis auch um 3 Stellen gekürzt.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: DBLookupCombobox

  Alt 23. Nov 2012, 11:15
Nun ja, wenn ich im Listfield die im select um 3 Stellen gekürzten Strings anzeige ist doch aber mein Ergebnis auch um 3 Stellen gekürzt.
Nö, es gibt einen Lookupwert (rein für die Anzeige) und einen Schlüsselwert (der wird eingetragen) und müssen nicht gleich sein
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.476 Beiträge
 
Delphi 12 Athens
 
#5

AW: DBLookupCombobox

  Alt 23. Nov 2012, 15:04
Du kannst dich in den KeyPress-Events der ComboBox einklinken und die interne Suchfunktion austricksen:

Delphi-Quellcode:
type
  TDBLookupControlHelper = class helper for TDBLookupControl
  public
    procedure CheckSearchPrefix(const Prefix: string);
  end;

procedure TDBLookupControlHelper.CheckSearchPrefix(const Prefix: string);
var
  Ch: Char;
begin
  if Length(SearchText) < Length(Prefix) then begin
    SearchText := '';
    for Ch in Prefix do
      ProcessSearchKey(Ch);
  end;
end;

procedure TForm181.DBLookupComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
  DBLookupComboBox1.CheckSearchPrefix('22X');
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: DBLookupCombobox

  Alt 23. Nov 2012, 15:21
@Uwe
Auch wenn die Funktionalität spannend ist, aber würdest du tatsächlich dem User Daten präsentieren, wo die ersten 3 Stellen als "eher störend" empfunden werden, aber für nichts anderes gut, als zur Anzeige, sind?

Evtl. liegt hier sogar noch ein Design Fehler der Datenbank vor.

Ich wäre am Präsentationstag auf jeden Fall im gelben Urlaub

PS: Sollten diese 3 Stellen (eigentlich sollen die ja alle gleich sein) tatsächlich benötigt werden, dann würden bei mir die Einträge (in der Anzeige) so aussehen
Code:
Mueller (22X)
Huber (22X)
Schmit (22X)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (23. Nov 2012 um 15:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.476 Beiträge
 
Delphi 12 Athens
 
#7

AW: DBLookupCombobox

  Alt 23. Nov 2012, 16:17
Auch wenn die Funktionalität spannend ist, aber würdest du tatsächlich dem User Daten präsentieren, wo die ersten 3 Stellen als "eher störend" empfunden werden, aber für nichts anderes gut, als zur Anzeige, sind?
Ich hatte gerade einen konkreten Fall, bei dem die Personalnummern in dem relevanten Datenbestand alle mit der gleichen Zeichenfolge begannen, weil die eben alle zu diesem einen Bereich gehörten für den das Programm gedacht war. Eine Änderung der Daten kam irgendwie nicht in Frage, da die Nummern vollständig erhalten bleiben sollten. Bei Suchanfragen sollten aber die Anfangszeichen immer vorgegeben sein.

Man könnte sich auch eine Abfrage vorstellen, bei der genau dieses Präfix als Einschränkung gilt. Dann macht es schon Sinn, in so einer Combobox dieses Präfix auch immer voranzustellen. Es muss ja nicht immer eine Konstante sein, wie in dem originalen Beispiel. Dann sind die ersten Zeichen schon relevant und können nicht unbedingt weggelassen werden.

Es kommt eben immer auf den konkreten Fall an.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: DBLookupCombobox

  Alt 23. Nov 2012, 17:29
@Uwe hier werden diese Daten auch nicht als "eher störend" wahrgenommen, weil diese auch zusammengehören.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz