Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Doppelte Einträge in Listbox verhindern
mjeheuer - Mi 24.01.07 20:05
Titel: Doppelte Einträge in Listbox verhindern
Hallo zusammen
Ich habe zwar schon einige wenige vergleichbare Tips im Indernet zum Thema gefunden, aber irgendwie klappts bei mir nicht.
Ich will Daten aus einer MySQL Datenbank auslesen (Städtenamen) und diese in eine Listbox eintragen. Natürlich sollen dabei doppelte Einträge nicht übertragen werden.
Ich habe gelesen das dieses aussieben der doppelten Einträge am besten über eine TStringListe gehen soll, daher habe ich erst die Daten in ein TStringList (liste) eingelesen und nach Abschluß in die Listbox kopiert. Leider werden trotzdem immer noch alle doppelten (und mehr) Städtenamen in die Listbox eingetragen.
Sieht jemand was ich falsch mache?? :?:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| var liste: TStringList; begin [...] try Form1.qrMain.Sql.Text:='select ORT from SWITCHE'; Form1.qrMain.Open; liste:=TStringList.Create; liste.Clear; liste.Duplicates:=dupIgnore; liste.BeginUpdate;
while not Form1.qrMain.Eof do begin liste.Add(Form1.qrMain.FieldByName('ORT').AsString); Form1.qrMain.Next; end;
liste.EndUpdate; StadtListBox.Items.Assign(liste); Form1.qrMain.Close;
finally
liste.Free; Form1.dbMain.Connected:=false; end; |
Gruß
Michael
Andidreas - Mi 24.01.07 20:26
Delphi-Quelltext
1: 2:
| if ListBox.Items.IndexOf('STADT') -1 then ListBox.Items.Add('STADT'); |
Fügt den Eintrag nur hinzu, wenn dieser noch nicht vorhanden ist.
Narses - Mi 24.01.07 21:27
Moin!
Ich schätze mal, die Orte unterscheiden sich in Gross-/Kleinschreibung? ;)
Probier mal das:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| liste := TStringList.Create; liste.Duplicates := dupIgnore; liste.CaseSensitive := FALSE; liste.BeginUpdate; ... |
cu
Narses
Delete - Mi 24.01.07 21:34
wieso nicht:
Delphi-Quelltext
1: 2: 3: 4: 5:
| begin [...] try Form1.qrMain.Sql.Text:='select distinct ORT from SWITCHE'; Form1.qrMain.Open; |
dann hast du doch keine doppelten zeilen.
mjeheuer - Mi 24.01.07 21:59
Zitat: |
Ich schätze mal, die Orte unterscheiden sich in Gross-/Kleinschreibung? ;)
|
Hallo Narses
Nee, die Namen sind alle exakt identisch :wink:
Ich habe es jetzt so gemacht wie Grenzgänger es vorgeschlagen hat. Funktioniert wunderprächtig.
Gruß
Michael
mjeheuer - Mi 24.01.07 22:00
Andidreas hat folgendes geschrieben: |
Delphi-Quelltext 1: 2:
| if ListBox.Items.IndexOf('STADT') -1 then ListBox.Items.Add('STADT'); |
Fügt den Eintrag nur hinzu, wenn dieser noch nicht vorhanden ist. |
Hallo Andidreas
Danke für den Tip :)
gruß
Michael
mjeheuer - Mi 24.01.07 22:03
Grenzgaenger hat folgendes geschrieben: |
wieso nicht:
Delphi-Quelltext 1: 2: 3: 4: 5:
| begin [...] try Form1.qrMain.Sql.Text:='select distinct ORT from SWITCHE'; Form1.qrMain.Open; |
dann hast du doch keine doppelten zeilen. |
Hallo Grenzgänger
Danke für den Tip. Genauso habe ich es gemacht und es funktioniert wunderbar. :D
Es ist auch kein Geschwindigkeitsverlust bemerkbar (bis jetzt rund 2000 Einträge in der Datenbank)
Gruß
Michael
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!