Autor Beitrag
mjeheuer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 24.01.07 20:05 
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?? :?:

ausblenden 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;
        
        //vorbereitungen
        liste:=TStringList.Create;
        liste.Clear;
        liste.Duplicates:=dupIgnore;
        liste.BeginUpdate;

        //einlesen der Daten
        while not Form1.qrMain.Eof do
         begin
           liste.Add(Form1.qrMain.FieldByName('ORT').AsString);
           Form1.qrMain.Next;
         end;

        //kopieren in die ListBox
        liste.EndUpdate;
        StadtListBox.Items.Assign(liste);
        Form1.qrMain.Close;

      finally

         liste.Free;
         Form1.dbMain.Connected:=false;
      end//try



Gruß
Michael
Andidreas
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 114

Windows XP Pro
BDS 2006
BeitragVerfasst: Mi 24.01.07 20:26 
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 24.01.07 21:27 
Moin!

Ich schätze mal, die Orte unterscheiden sich in Gross-/Kleinschreibung? ;)

Probier mal das:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
//vorbereitungen  
liste := TStringList.Create;  
// liste.Clear; // nach dem Erzeugen ist die Liste immer leer... ;)
liste.Duplicates := dupIgnore;  
liste.CaseSensitive := FALSE; // CharCase ignorieren
liste.BeginUpdate;  
...

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 24.01.07 21:34 
wieso nicht:

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 24.01.07 22:00 
user profile iconAndidreas hat folgendes geschrieben:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 24.01.07 22:03 
user profile iconGrenzgaenger hat folgendes geschrieben:
wieso nicht:

ausblenden 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