AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Ausgabe bei doppelten daten
Thema durchsuchen
Ansicht
Themen-Optionen

Ausgabe bei doppelten daten

Ein Thema von Kruemel2oo2 · begonnen am 10. Aug 2004 · letzter Beitrag vom 10. Aug 2004
Antwort Antwort
Kruemel2oo2

Registriert seit: 23. Jun 2004
65 Beiträge
 
#1

Ausgabe bei doppelten daten

  Alt 10. Aug 2004, 13:11
Hio

ich bins mal wieder

Ich habe in einer Datenbank mehrere gelogte Daten wo in meinen Fall die namen mehrfach auftreten.

naja diese lass ich mir in einer stringgrid ausgeben. mit den Befehl fieldbyname('name'). Naja ich sehe da halt alle namen mehrfach wie kann ich das machen das ich nur einmal diesen namen sehe. Müsste ja anfürsich mit einer if Anweisung gehn weiß aber nicht wie die aussehen könnte.

kann mir mal bitte einer helfen?

Kruemel
Alle Tippfehler dienen nur zur Belustigung und wurden mit voller Absicht gesetzt.


:-:-: [ich bin ein DAU ]:-:-:
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Ausgabe bei doppelten daten

  Alt 10. Aug 2004, 13:27
Hallo,

Du kannst mit IndexOf feststellen, ob ein Eintrag schon in der Stringlist vorhanden ist:
Delphi-Quellcode:
  ...
  if (MyStringList.IndexOf('Irgendwas')<>-1) then MyStringList.Add('Irgendwas');
  ...
Die bessere und sinnvollere Vorgehensweise wäre, mit einer Query die Daten aus der DB auszulesen:
Delphi-Quellcode:
  with Query1 do
  begin
    Close;
    // mit DISTINCT wird die Query veranlasst, keine doppelten Inhalte anzuzeigen
    SQL.Text:='SELECT DISTINCT MeinFeld FROM MeinerTabelle';
    Open;
    while not Eof do
    begin
      MyStringList.Add(FieldByName('MeinFeld').AsString);
      Next;
    end; // while
  end; // with
  Mit Zitat antworten Zitat
Kruemel2oo2

Registriert seit: 23. Jun 2004
65 Beiträge
 
#3

Re: Ausgabe bei doppelten daten

  Alt 10. Aug 2004, 13:33
naja mein befehl sieht so ähnlich ja schon aus aber was heißt das DISTINCT ? daskenn ich nicht.

also meiner sieht so aus.

Delphi-Quellcode:
   with Query3 do
   begin
     i := 0;
     SQL.Clear();
     SQL.Add('Select b.Personal_id, p.ID, p.Name from kbook b, Personal p, Ist i where b.Personal_id = p.ID');
     open;
      while not Eof do
      begin

         ListePersonal.RowCount := ListePersonal.RowCount + 1;
         ListePersonal.Cells[0,i] := fieldbyname('Name').AsString;

         i := i+1;
         Next;
       end;
   end;
aber so wird halt bei mir die doppelten daten angezeigt. Und das will ich ja nicht. Ich möchte wenn der datensatz schon gibt also der name schon einmal in der stringgrid drin ist er nicht nochmal reingeschrieben wird.
Alle Tippfehler dienen nur zur Belustigung und wurden mit voller Absicht gesetzt.


:-:-: [ich bin ein DAU ]:-:-:
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: Ausgabe bei doppelten daten

  Alt 10. Aug 2004, 13:42
Hallo,

Zitat von Access-Hilfe:
DISTINCT

Verwenden Sie DISTINCT, wenn Datensätze, die in den ausgewählten Feldern mehrfach vorkommende Daten enthalten, ausgelassen werden sollen. Die Werte für alle in der Anweisung SELECT aufgeführten Felder müssen eindeutig sein, damit sie in das Ergebnis der Abfrage aufgenommen werden. Mehrere in der Tabelle "Personal" aufgeführte Angestellte können z.B. denselben Nachnamen haben. Wenn zwei Datensätze den Wert "Schmidt" im Feld "Nachname" enthalten, gibt die folgende SQL-Anweisung nur einen der Datensätze zurück:

SELECT DISTINCT Nachname FROM Personal

Wenn Sie DISTINCT nicht angeben, gibt diese Abfrage beide Datensätze mit "Schmidt" zurück.

Wenn die SELECT-Klausel mehrere Felder enthält, muß die Kombination von Werten aus allen Feldern eindeutig sein, damit ein bestimmter Datensatz in das Ergebnis aufgenommen wird.

Das Ergebnis einer Abfrage, die DISTINCT anwendet, ist nicht aktualisierbar, und von anderen Benutzern nachträglich vorgenommene Änderungen werden nicht berücksichtigt.

Die Verwendung von DISTINCT ist äquivalent zur Einstellung der Eigenschaft "KeineDuplikate" (UniqueValues) auf "Ja" im Eigenschaftenfenster der Abfrage in der Entwurfsansicht einer
Abfrage.


DISTINCTROW

Verwenden Sie DISTINCTROW, wenn Daten aus mehrfach auftretenden Datensätzen (und nicht nur aus mehrfach auftretenden Feldern) nur einmal in das Ergebnis der Abfrage
aufgenommen werden sollen. Sie können z.B. eine Abfrage erstellen, in der die Tabellen "Kunden" und "Bestellungen" über das Feld "Kunden-Nr" verknüpft werden. Die Tabelle "Kunden" enthält keine mehrfachen Einträge für das Feld "Kunden-Nr", im Gegensatz zur Tabelle "Bestellungen", in der für einige Kunden mehrere Bestellungen eingetragen sind.
Die folgende SQL-Anweisung zeigt, wie Sie mit DISTINCTROW eine Liste der Firmen erstellen können, die mindestens eine Bestellung erteilt haben, ohne Details zu den Bestellungen in die Liste aufzunehmen:

SELECT DISTINCTROW Firma
FROM Kunden INNER JOIN Bestellungen ON Kunden.[Kunden-Nr] = Bestellungen.[Kunden-Nr]
ORDER BY Firma;

Wenn Sie DISTINCTROW nicht angeben, erstellt diese Abfrage mehrere Zeilen für alle Firmen mit mehreren Bestellungen.

DISTINCTROW ist nur dann wirksam, wenn Sie Felder nicht aus allen, sondern nur aus einigen der in der Abfrage verwendeten Tabellen auswählen. DISTINCTROW wird ignoriert, wenn die Abfrage nur eine Tabelle umfaßt.

Die Verwendung von DISTINCTROW ist äquivalent zur Einstellung der Eigenschaft "EindeutigeDatensätze" (UniqueRecords) auf "Ja" (dem Standardwert) im Eigenschaftenfenster in der Entwurfsansicht einer Abfrage.
  Mit Zitat antworten Zitat
Kruemel2oo2

Registriert seit: 23. Jun 2004
65 Beiträge
 
#5

Re: Ausgabe bei doppelten daten

  Alt 10. Aug 2004, 13:51
hmm aha aber wenn ich nur denn Namen nicht doppelt haben möchte und dafür andere felder schon aber zum Beispiel ein Datum würde es mit distince ja nicht gehn oder sehe ich das falsch?
Alle Tippfehler dienen nur zur Belustigung und wurden mit voller Absicht gesetzt.


:-:-: [ich bin ein DAU ]:-:-:
  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 23:36 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