16. Dezember 2009 15:46
16. Dezember 2009 16:17
16. Dezember 2009 16:30
16. Dezember 2009 17:00
dai hat geschrieben:Dein Vorschlag ist nicht praktikabel. Ich weiss ja nicht welcher Nachname mehrmals vorkommt. Durch den Filterung will ich ja dies herausfinden. Nachdem ich gefiltert habe dann kann ich eventuell nach den Nachname sortieren. Dann sehe ich sortiert welche nachname mehrmals gibt.
dai hat geschrieben:Ich habe vor dies eventuell mit eine tmp tabelle zu machen. Ich durchlaufe die originaltabelle mit einer schleife. Bei jeden datensatzdurchlauf schaue ich nach ob der Feldinhalt in mehreren Datensätze vorkommt. Wenn ja schreibe ich den gefundenen Satz in die Temp-Tabelle. In der Form trage ich als SourceTable die tmptabelle ein.
dai hat geschrieben:Eine andere idee wäre von mir das ich beim durchlaufen der tabelle einen filter baue, und diesen filter im code setze. im meinen beispiel wäre mein Filter folgends. Müller|Lustig auf das Feld nachname.
dai hat geschrieben:ich habe nur gedacht das man dies irgendwie auch mit den filterkriterien machen kann. geht das?
dai hat geschrieben:Wir brauchen sowas um eventuell Dupletten, Tripletten etc. herauszufinden.
16. Dezember 2009 17:11
16. Dezember 2009 17:12
16. Dezember 2009 17:15
dai hat geschrieben:Woher solll ich wissen welche Datensätze es sind,wo deren Nachname mindestens ein weiters mal vorkommt? Ohne zu wissen welche Datensätze es sind kann ich die ja nicht markieren oder?
16. Dezember 2009 17:32
// Prüfen auf Doppelte Einträge
// Wichtig: In der Tabelle das Zielfeld sortieren (z.B. nach Name)
KopSourceRec.SETCURRENTKEY(Deine_SortierReihenfolge);
IF KopSourceRec.FINDSET THEN BEGIN
REPEAT
IF KopSourceRec.name <> '' THEN BEGIN
MerkeName := KopSourceRec.Name;
IF (KopSourceRec.NEXT(1)) = 1 THEN BEGIN
IF KopSourceRec.name = MerkeName THEN BEGIN
KopAnzRec.GET(KopSourceRec."No.");
KopAnzRec.MARK(TRUE);
KopSourceRec.NEXT(-1);
KopAnzRec.GET(KopSourceRec."No.");
KopAnzRec.MARK(TRUE);
END ELSE BEGIN
KopSourceRec.NEXT(-1);
END;
MerkeName := KopSourceRec.name;
END;
END;
UNTIL KopSourceRec.NEXT=0;
END;
// DeineForm könnte z.B. die Debitorübersicht sein (je nach Quelltabelle)
KopAnzRec.MARKEDONLY(TRUE);
IF KopAnzRec.COUNT > 0 THEN BEGIN
IF CONFIRM('Es sind Dubletten vorhanden, Datensätze anzeigen?',TRUE) THEN BEGIN
CLEAR(DeineForm);
DeineForm.CAPTION('Doppelt vergebene Namen');
DeineForm.SETTABLEVIEW(KopAnzRec);
DeineForm.RUNMODAL;
END;
END;
16. Dezember 2009 17:43
IF FINDSET THEN BEGIN
REPEAT
DeinRec2.SETFILTER(Vorname, '<>%1', Vorname);
DeinRec2.SETRANGE(Nachname, Nachname);
IF NOT DeinRec2.ISEMPTY THEN
MARK(TRUE);
UNTIL NEXT = 0;
MARKEDONLY(TRUE);
END;
17. Dezember 2009 09:33
17. Dezember 2009 10:12
dai hat geschrieben:Wie kann ich die Satzmarke aufheben?
Wie kann ich weiterhin bei markedonly abprüfen ob überhaupt datensätze markiert worden sind?
...
MARKEDONLY(TRUE);
IF ISEMPTY THEN
MESSAGE('Nix gefunden!');
17. Dezember 2009 10:27
17. Dezember 2009 13:18