Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Combobox und doppelter Text (https://www.delphipraxis.net/81286-combobox-und-doppelter-text.html)

enricoffo 24. Nov 2006 06:39


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

mkinzler 24. Nov 2006 06:46

Re: Combobox und doppelter Text
 
Schau dir mal .IndexOf an

Tom 24. Nov 2006 07:33

Re: Combobox und doppelter Text
 
Zitat:

Zitat von enricoffo
Leider dauert das bei 1500 Namen ca. 30min.

Was machst Du da?? Abgesehen von IndexOf (und der Frage was 1500 Einträge in einer ComboBox machen) dauert das manuelle Durchsuchen ein Bruchteil einer Sekunde.

enricoffo 24. Nov 2006 07:36

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.

Tom 24. Nov 2006 07:40

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.

enricoffo 24. Nov 2006 07:57

Re: Combobox und doppelter Text
 
Kann ich da was machen?

mkinzler 24. Nov 2006 08:03

Re: Combobox und doppelter Text
 
Zeig mal etwas Code.

Sharky 24. Nov 2006 08:04

Re: Combobox und doppelter Text
 
Zitat:

Zitat von enricoffo
Sorry, es sind 1500 Namen, aber 18945 Einträge in der Datenbank ....

Hai enricoffo,

als erstes würde ich dafür sorgen das ich von der Datenbank keine Doppelteneinträge bekomme.

Gollum 24. Nov 2006 08:06

Re: Combobox und doppelter Text
 
Hallo,

Du kannst bereits in der Abfrage mit "SELECT DISTINCT ..." doppelte Namen unterdücken.

enricoffo 24. Nov 2006 08:07

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.

Gollum 24. Nov 2006 08:12

Re: Combobox und doppelter Text
 
Hallo,

Zitat:

Zitat von enricoffo
die Doppelteinträge sind gewollt

Das hat auch keiner in Frage gestellt. Ich gehe einmal davon aus, dass Sharky das gleiche wie ich gemeint habe.

enricoffo 24. Nov 2006 08:20

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...

mkinzler 24. Nov 2006 08:28

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.

SirThornberry 24. Nov 2006 08:34

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:
Combobox.Items.BeginUpdate();
und nach dem hinzufügen ein
Delphi-Quellcode:
Combobox.Items.EndUpdate();
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.
Anschließend brauchst du nur noch die Items der Combobox mit Assign auf die Stringliste füllen.

enricoffo 24. Nov 2006 08:45

Re: Combobox und doppelter Text
 
Hallo,

das hört sich sehr gut an. Beginupdate habe ich schon. Ich werde das gleich mal testen...

Luckie 24. Nov 2006 09:12

Re: Combobox und doppelter Text
 
Guck auch mal hier: http://www.michael-puff.de/Developer...TSTORAGE.shtml

enricoffo 24. Nov 2006 09:20

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 18:13 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