![]() |
Combobox und doppelter Text
Hallo,
ist vielleicht ne dumme Frage, aber ich muß diese trotzdem mal stellen. Ich lese aus einer Tabelle zirka 1500 Namen in eine Combobox ein. In der Tabelle stehen einige dieser Namen doppelt, daher prüfe ich, ob der Name in der Combobox schon vorhanden ist. Dies mache ich, indem ich den aktuellen Namen aus der Liste mit den Werten der Combobox vergleiche. Leider dauert das bei 1500 Namen ca. 30min. Gibt es da eine Möglichkeit, sowas schneller zu prüfen? Oder ist schon eine schnelle Funktion dafür in der TCombobox enthalten? Besten Dank schonmal |
Re: Combobox und doppelter Text
Schau dir mal .IndexOf an
|
Re: Combobox und doppelter Text
Zitat:
|
Re: Combobox und doppelter Text
Sorry, es sind 1500 Namen, aber 18945 Einträge in der Datenbank (also ein paar Namen sind 3-5mal vorhanden), Und aus der Datenbank auslesen dauert, wenn man noch das Vorhandensein in der Combobox prüft.
|
Re: Combobox und doppelter Text
Selbst mit 150000 Einträgen in einer ComboBox dauert die manuelle Suche nur 2 bis 3 Sekunden. Dein Geschwindigkeits-Problem liegt also beim Auslesen der Datenbank.
|
Re: Combobox und doppelter Text
Kann ich da was machen?
|
Re: Combobox und doppelter Text
Zeig mal etwas Code.
|
Re: Combobox und doppelter Text
Zitat:
als erstes würde ich dafür sorgen das ich von der Datenbank keine Doppelteneinträge bekomme. |
Re: Combobox und doppelter Text
Hallo,
Du kannst bereits in der Abfrage mit "SELECT DISTINCT ..." doppelte Namen unterdücken. |
Re: Combobox und doppelter Text
Hallo,
die Doppelteinträge sind gewollt. Sonst muß ich mehr als eine Tabelle erstellen und das würde den Aufwand erheblich steigern. |
Re: Combobox und doppelter Text
Hallo,
Zitat:
|
Re: Combobox und doppelter Text
wenn ich select distinct nehme, kann ich da trotzdem irgendwie select * damit verbinden?
Ich brauche schon noch mehr Felder und geht distinct auch auf 2 Felder? Ich sehe da ein Problem bei Schulz. Ich habe da bestimmt 13x Schulz drinne, aber mit verschiedenen Vornamen... |
Re: Combobox und doppelter Text
Wenn du DISTINCT * nehmen würdest, wird es dir garnichts bringen, weil dann alle Felder gleich sein müßten.
In deinem Fall würde ich einen Join von dem Distinct-Select mit den feldern die gleich sein düfren auf einen select über die restlichen benötigten Felder machen. BTW. Select * ist meißtens nicht so gut. |
Re: Combobox und doppelter Text
Vielleicht dauert auch das eintragen in die Combobox so lange. Führst du vor dem hinzufügen ein
Delphi-Quellcode:
und nach dem hinzufügen ein
Combobox.Items.BeginUpdate();
Delphi-Quellcode:
aus? Zudem kann man das "IndexOf" auch noch beschleunigen wenn du eine sortierte Liste verwendest. So kannst du auch erst alles in eine Stringliste adden welche "Sorted" auf True hat und "Duplicates" auf dubIgnore.
Combobox.Items.EndUpdate();
Anschließend brauchst du nur noch die Items der Combobox mit Assign auf die Stringliste füllen. |
Re: Combobox und doppelter Text
Hallo,
das hört sich sehr gut an. Beginupdate habe ich schon. Ich werde das gleich mal testen... |
Re: Combobox und doppelter Text
Guck auch mal hier:
![]() |
Re: Combobox und doppelter Text
Hallo,
also dank der Stringlist klappt es super. Von 45min auf 15sec!!! Ich danke Euch allen für die Hilfe. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:05 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 by Thomas Breitkreuz