Peter
>wie kösche ich denn einfach alle Duplikate in einer tabelle per vba:
Per VBA ist das schwierig, per SQL kein Problem:
DELETE FROM deineTabelle t1
WHERE t1.ID in (SELECT t2,ID
FROM deineTabelle t2
WHERE t2.ID > t1.ID
AND t2.duplFeld1 = t1.duplFeld1
AND t2.duplFeldN = t1.duplFeldN)
ID ist der Primärschlüssel der Tabelle und duplFeldX sind die Felder
mit doppelten Inhalten.
Gruß
Phil
--
Ich beantworte keine technischen Fragen per Email
Richtig zitieren: http://www.afaik.de/usenet/faq/zitieren/
Mein Codekabinett: http://www.codekabinett.com/
Karl Donaubauer's Access-FAQ: http://www.donkarl.com
Es geht auch per VBA ganz einfach:
sub DoIt()
SQLExec(" DELETE FROM deineTabelle t1
WHERE t1.ID in (SELECT t2,ID
FROM deineTabelle t2
WHERE t2.ID > t1.ID
AND t2.duplFeld1 = t1.duplFeld1
AND t2.duplFeldN = t1.duplFeldN) ")
end sub
:-)
> ID ist der Primärschlüssel der Tabelle und duplFeldX sind die Felder
> mit doppelten Inhalten.
Frecher Gruß
Petra
PS: Ich hab die Lösung nicht getestet!
ich habe ja nur eine tabelle tblxx mit den feldern id=autowert und feldpf
als stringfeld.
alle doppelten oder mehrfachen sätze (d.h. feldpf identisch) sollen raus, so
daß jedes feldpf nur 1 x vorkommt.
Ich habs mit 2 Abfragen(anfüge und lösch) probiert, die löschabfrage geht
nicht, da sie nicht aktuelisert werden kann??
ps: warum habe ich eigentlich englische fehlermeldungen trotz deutschen A97
SR2b ?
Trotzdem Danke ! an Petra und Philipp. Vielleicht habt Ihr noch eine Idee?
Schönen Gruß aus dem leider schneefreien Allgäu
Peter
>Petra Bridarolli <nob...@nowhere.nw> schrieb in im Newsbeitrag:
>OzMuZZNaAHA.1856@tkmsftngp02...
>> SQLExec(" DELETE FROM deineTabelle t1
>> WHERE t1.ID in (SELECT t2,ID
^^^
Ups, da sollte ein Punkt statt einem Komma hin.
>> FROM deineTabelle t2
>> WHERE t2.ID > t1.ID
>> AND t2.duplFeld1 = t1.duplFeld1
>> AND t2.duplFeldN = t1.duplFeldN) ")
>aber es geht nicht: bekomme laufzeitfehler 3306: you´ve written a subquery
>that can return more than on field without
>using the EXISTS reserved word in the main query´s FROM clause. revise the
>SELECT statement of the subquery to request only one field.
Eigentlich _sollte_ es mir der o.g. Änderungen laufen, hab aber
gerade keine Zeit zu testen. - Sorry.
>ich habe ja nur eine tabelle tblxx mit den feldern id=autowert und feldpf
>als stringfeld.
>alle doppelten oder mehrfachen sätze (d.h. feldpf identisch) sollen raus, so
>daß jedes feldpf nur 1 x vorkommt.
Folgendes tut's ganz sicher.
DELETE FROM tblxx
WHERE tblxx.ID In (SELECT tx1.id
FROM tblxx as tx1
INNER JOIN tblxx as tx2
ON tx1.feldpf = tx2.feldpf
AND tx1.id > tx2.id);
Meinst du die ungültige E-MailAdresse? oder etwas spezielles?
Ich habe leider unter P.Bridarolli@--------.at soviel Spam (und
erstaunlicherweise auch aufdringliche Privat-Mails) erhalten, dass
offensichtlich Newsgroup von Werbe-Haien systematisch nach Adressen
durchforstet werden. Deshalb bin ich gerne bereit, meinen richtigen Namen zu
verwenden, werde aber meine Privatsphäre ausreichend schützen.
Dazu zähle die passende E-Mail-Adresse.
Oder gefällt dir besser wenn ich P.Brid...@nirgendwo.at verwende?
Petra
Philipp Stiefel antwortete kürzlich,
> Peter Diem schrieb kürzlich:
>
> >Petra Bridarolli <nob...@nowhere.nw> schrieb in im Newsbeitrag:
> >OzMuZZNaAHA.1856@tkmsftngp02...
> >> SQLExec(" DELETE FROM deineTabelle t1
> >> WHERE t1.ID in (SELECT t2,ID
> ^^^
> Ups, da sollte ein Punkt statt einem Komma hin.
>
> >> FROM deineTabelle t2
> >> WHERE t2.ID > t1.ID
> >> AND t2.duplFeld1 = t1.duplFeld1
> >> AND t2.duplFeldN = t1.duplFeldN) ")
>
> >aber es geht nicht: bekomme laufzeitfehler 3306: you´ve written a
subquery
> >that can return more than on field without
> >using the EXISTS reserved word in the main query´s FROM clause. revise
the
> >SELECT statement of the subquery to request only one field.
>
>
> >ich habe ja nur eine tabelle tblxx mit den feldern id=autowert und
feldpf
> >als stringfeld.
> >alle doppelten oder mehrfachen sätze (d.h. feldpf identisch) sollen raus,
so
> >daß jedes feldpf nur 1 x vorkommt.
>
> Folgendes tut's ganz sicher.
>
> DELETE FROM tblxx
> WHERE tblxx.ID In (SELECT tx1.id
> FROM tblxx as tx1
> INNER JOIN tblxx as tx2
> ON tx1.feldpf = tx2.feldpf
> AND tx1.id > tx2.id);
>
Danke Phil, das funzt super ! ( Löscht die doppelten Sätze in einer
tabelle.)
Schönen Gruß aus dem Allgäu
Peter
> >> >From: "Petra Bridarolli" <nob...@nowhere.nw>
> >> ^^^^^^^^^^^^^^^ Bitte
abstellen!
> >Ich habe leider P.Bridarolli@--------.at soviel Spam erhalten.
> Ja, das UBE-Problem ist hinlänglich bekannt.
> Trotzdem ist Adressfälschung:
> a) reichlich sinnlos, wenn deine Adresse bereits in den Datenbanken
> der SPAMmer ist.
Nicht mit meiner neuen, richtigen Adresse, und die alte ignorier ich schon
seit langem.
Ich bin einfach vorsichtiger geworden mit meinen Daten.
Außerdem kommen wenigstens keine neuen Spammer dazu.
> b) asozial.
Nicht wenn ich auch nur 1 bei irgendeinem Problem helfen kann.
> BTW: Das Reply-To: ist relativ sicher vor SPAMmern.
... RELATIV ...
> >Deshalb bin ich gerne bereit, meinen richtigen Namen zu verwenden, ...
> Dann veröffentliche keine Beiträge im Usenet.
Soll ich deshalb niemandem mein Wissen weitergeben? weiterhelfen?
Ich kapier nicht ganz was du unter "asozial" verstehst.
> >Oder gefällt dir besser wenn ich P.Brid...@nirgendwo.at verwende?
> Nein. Im From: hat eine gültige Adresse zu stehen.
Ist dir eine Hot-Mail Adresse, die zwar richtig ist, aber absolut ignoriert
wird lieber??? Wo ist der Unterschied???
Oder gehts nicht eigentlich darum, dass jeder unter seinem richrigen Namen
ehrlich auftritt.
Ich verwende meinen richtigen Namen!
... Im Gegensatz zu vielen anderen, die zwar eine gültige Adresse, aber
einen falschen Namen verwenden.
> Lügen werden Wahrheit wenn man sie oft genug wiederholt.
Pragmatismus wird logisch wenn man den Sinn nicht hinterfragt.
> Adreßverfälschung löst das UBE-Problem.
Adreßverfälschung hat MEIN Problem gelöst.
Wenn ich auch nicht weiß, was UBE heißt.
Petra Bridarolli schrieb
> Phil Stiefel schrieb
[Spam kommt weiter]
> Nicht mit meiner neuen, richtigen Adresse, und die alte ignorier ich schon
> seit langem.
Wenn das so ist, könntest Du ja diese alte Adresse angeben.
> > b) asozial.
Phil meint, dass Du mit einer falschen Adresse unnötig Traffic und
Aufregung erzeugst. Dir sendet jemand eine Mail. Diese kann nicht
zugestellt werden, was dem Absender per (automatisch erzeugter)
Mail mitgeteilt wird. Zusätzlich wandert der Vorgang noch in das
Fehlerprotokoll beim ISP des Senders.
Selbst finde ich den Ausdruck "asozial" auch nicht besonders gut
gewählt, aber dort, wo um solche Themen wie dieses ernsthaft
diskutiert wird, hat er sich nun mal durchgesetzt.
> Adreßverfälschung hat MEIN Problem gelöst.
Ja, auf Kosten anderer, s.o.
> Wenn ich auch nicht weiß, was UBE heißt.
UBE, unsolicited bulk e-mail. Daneben spricht man auch noch von
UCE, unsolicited commercial e-mail
Schöne Grüße
Frank
Versandhinweis: fup2p wegen OT
Nicht ICH, sondern der der mir Spam sendet!
> ... Spam kann nicht zugestellt werden, was dem Absender mitgeteilt wird
...
Dadurch schickt er nur 1 mal Spam, und löscht dann automatisch die Adresse!
Was ist vernünftiger? 1 Spam + 1 Fehlmeldung
oder 10-100 Spams (ohne Fehlmeldung)
Ich REDUZIERE den Traffic!!!
> > Adreßverfälschung hat MEIN Problem gelöst.
> Ja, auf Kosten anderer, s.o.
Nein zu Gunsten ALLER s.o.
> UBE, unsolicited bulk e-mail. Daneben spricht man auch noch von
> UCE, unsolicited commercial e-mail
Danke
Wieder was gelernt!
Petra
>> Phil meint, dass Du mit einer falschen Adresse unnötig Traffic und
>> Aufregung erzeugst.
>
>Nicht ICH, sondern der der mir Spam sendet!
Nein, den unnötigen Traffic und Ärger beim Absender der Mail
produzierst DU! Wenn du grundsätzlich keine Kontaktaufnahme
wünscht, dann solltest du nicht deine Artikel in einem weltweitem
Medium wie dem Usenet veröffentlichen.
Dass das ursächliche Verschulden des UBE-Problems (Danke Frank,
für's Erklären) bei den SPAMmern liegt, will ich damit natürlich
keineswegs in Frage stellen.
>> ... Spam kann nicht zugestellt werden, was dem Absender mitgeteilt wird
>...
>
>Dadurch schickt er nur 1 mal Spam, und löscht dann automatisch die Adresse!
Das glaubst aber nur du!
Die Absenderadressen von Spam sind in der Regel sowieso ungültig
und der SPAMmer kriegt nix davon mit ob die Adresse gültig ist
oder nicht. Wohl aber die Postmaster der beteiligten Systeme,
nachdem diese sich den Bounce (Fehlermeldung wegen Unzustellbarkeit)
zig mal gegenseitig zugeschickt haben.
>Was ist vernünftiger? 1 Spam + 1 Fehlmeldung
Nein, die Menge des SPAMs wird dadurch nicht reduziert und bei
ungültigen Adressen auf beiden Seiten sind es 1 + x Fehlermeldungen.
> oder 10-100 Spams (ohne Fehlmeldung)
Das sind jedesmal 1 + x Fehlermeldungen weniger an Netztraffic und
außerdem belästigst DU mit vielen bouncenden Mails unbeteiligte
Dritte.
>Ich REDUZIERE den Traffic!!!
Träum weiter.
>> > Adreßverfälschung hat MEIN Problem gelöst.
>> Ja, auf Kosten anderer, s.o.
>
>Nein zu Gunsten ALLER s.o.
Get Real!
Wenn du was zu Gunsten Aller tun willst, dann solltest du lieber den
SPAM empfangen und dich bei den zuständigen Stellen darüber
beschweren.
Damit kannst du:
a) wenn du schnell genug bist unter günstigen Umständen dafür
sorgen, dass der SPAMmer abgeklemmt wird, bevor er den
kompletten Bulk verschickt hat. Und damit dem SPAMmer, und
nur diesem, finanziellen Schaden zufügen.
b) deutlich zum Ausdruck bringen, dass SPAM unerwünscht ist und
nicht toleriert wird.
Gruß
Phil
BTW: Ist das 'asozial' jetzt etwas klarer? Oder leerst du deinen
Mülleimer auch bei deinem Hausmeister in den Briefkasten aus?