Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Ungebundenes Kombinationsfeld füllen mit Abfrage ohne doppelte Einträge

39 views
Skip to first unread message

Peter Prüwasser

unread,
Jun 30, 2004, 2:47:30 AM6/30/04
to
Hallo NG,

Ich habe nun ein Kombinationsfeld (DropDown) erstellt in einem ungebundenen
Formular, nun möchte ich dieses Kombinationsfeld mit Daten einer Abfrage
füllen.
Die Abfrage habe ich bereits erstellt, eingefügt in die Datensatzherkunft,
die Spaltenanzahl und Breiten festgelegt und nun möchte ich, dass keine
doppelten Einträge vorhanden sind.

Wie kann ich diese doppelten Einträge verhindern?
Und wer kann mir dabei bitte helfen?

-------
Peter Prüwasser


Henry Habermacher [MVP Access]

unread,
Jun 30, 2004, 2:52:52 AM6/30/04
to
Hallo Peter

Peter Prüwasser wrote in news:40e261a1$1...@e-post.inode.at:


> Ich habe nun ein Kombinationsfeld (DropDown) erstellt in einem
> ungebundenen Formular, nun möchte ich dieses Kombinationsfeld mit
> Daten einer Abfrage füllen.
> Die Abfrage habe ich bereits erstellt, eingefügt in die
> Datensatzherkunft, die Spaltenanzahl und Breiten festgelegt und nun
> möchte ich, dass keine doppelten Einträge vorhanden sind.
>
> Wie kann ich diese doppelten Einträge verhindern?

Diese musst Du bereits in der Abfrage verhindern, z.B. mittels
Groupierung oder mittels Distinct, also z.B.

SELECT Distinct KundenName, PLZOrt
FROM Kunden
ORDER BY 2

oder

SELECT Distinct KundenName, PLZOrt
FROM Kunden
GROUP BY 1, 2
ORDER BY 2

HTH
Henry

--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com/AccessFAQ.htm
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org

Peter Prüwasser

unread,
Jun 30, 2004, 3:19:39 AM6/30/04
to
Hallo Henry,

Danke vorerst mal, aber es funktioniert so auch nicht, denn da sortiert es
mir die Einträge folgendermaßen:

Prod
Gfü
Prod
Gfü
Prod
Gfü
Prod
Gfü

Der Query (SQL) String sieht folgendermaßen aus:


SELECT [tblIrgedwieXX].[ysnPerson], [tblIrgedwieXX].[strIrgendwieMC],
[tblIrgedwieXX].[strName1], [tblIrgedwieXX].[strName2],
[tblIrgedwieXX].[ysnDelete], [tblBeispielXX].[strBeispielMC],
[tblBeispielXX].[strDepartment], [tblBeispielXX].[ysnDelete]
FROM tblIrgendwieXX, tblBeispielXX
WHERE ((([tblIrgendwieXX].[ysnPerson])=True) And
(([tblIrgendwieXX].[ysnDelete])=No Or ([tblIrgendwieXX].[ysnDelete]) Is
Null) And (([tblBeispielXX].[ysnDelete])=No Or ([tblBeispielXX].[ysnDelete])
Is Null))
ORDER BY 2;

------
Gruß Peter


"Henry Habermacher [MVP Access]" <DontSp...@psp-online.com> schrieb im
Newsbeitrag news:2kf6a4F...@uni-berlin.de...

Basil Brunner

unread,
Jun 30, 2004, 3:40:57 AM6/30/04
to
Hallo Peter

Peter Prüwasser schrieb:


> Der Query (SQL) String sieht folgendermaßen aus:
>
>
> SELECT [tblIrgedwieXX].[ysnPerson], [tblIrgedwieXX].[strIrgendwieMC],
> [tblIrgedwieXX].[strName1], [tblIrgedwieXX].[strName2],
> [tblIrgedwieXX].[ysnDelete], [tblBeispielXX].[strBeispielMC],
> [tblBeispielXX].[strDepartment], [tblBeispielXX].[ysnDelete]
> FROM tblIrgendwieXX, tblBeispielXX
> WHERE ((([tblIrgendwieXX].[ysnPerson])=True) And
> (([tblIrgendwieXX].[ysnDelete])=No Or ([tblIrgendwieXX].[ysnDelete]) Is
> Null) And (([tblBeispielXX].[ysnDelete])=No Or ([tblBeispielXX].[ysnDelete])
> Is Null))
> ORDER BY 2;

Da sehe ich weder ein 'DISTINCT' noch ein 'GROUP BY' ...


--
Grüsse, Basil

Reclaim Your Inbox!
http://www.mozilla.org/products/thunderbird/

Peter Prüwasser

unread,
Jun 30, 2004, 4:24:48 AM6/30/04
to
Hallo Basil,

Ja, habe ich vergessen. Problem gelöst mit:

SELECT Distinct [tblIrgedwieXX].[ysnPerson],


[tblIrgedwieXX].[strIrgendwieMC],
[tblIrgedwieXX].[strName1], [tblIrgedwieXX].[strName2],
[tblIrgedwieXX].[ysnDelete], [tblBeispielXX].[strBeispielMC],
[tblBeispielXX].[strDepartment], [tblBeispielXX].[ysnDelete]
FROM tblIrgendwieXX, tblBeispielXX
WHERE ((([tblIrgendwieXX].[ysnPerson])=True) And
(([tblIrgendwieXX].[ysnDelete])=No Or ([tblIrgendwieXX].[ysnDelete]) Is
Null) And (([tblBeispielXX].[ysnDelete])=No Or ([tblBeispielXX].[ysnDelete])
Is Null))
ORDER BY 2;

-------------
Gruß Peter

"Basil Brunner" <basil....@KEINSPAMkoller.ch> schrieb im Newsbeitrag
news:#N7NcWnX...@TK2MSFTNGP12.phx.gbl...

Peter Prüwasser

unread,
Jun 30, 2004, 4:33:04 AM6/30/04
to
Hallo Basil,

trotzdem zeigt es mir noch immer doppelt und dreifche Einträge an.

nun sieht der Querystring folgendermaßen aus:

SELECT Distinct [tblIrgedwieXX].[ysnPerson],


[tblIrgedwieXX].[strIrgendwieMC],
[tblIrgedwieXX].[strName1], [tblIrgedwieXX].[strName2],
[tblIrgedwieXX].[ysnDelete], [tblBeispielXX].[strBeispielMC],
[tblBeispielXX].[strDepartment], [tblBeispielXX].[ysnDelete]
FROM tblIrgendwieXX, tblBeispielXX
WHERE ((([tblIrgendwieXX].[ysnPerson])=True) And
(([tblIrgendwieXX].[ysnDelete])=No Or ([tblIrgendwieXX].[ysnDelete]) Is
Null) And (([tblBeispielXX].[ysnDelete])=No Or ([tblBeispielXX].[ysnDelete])
Is Null))
ORDER BY 2;

--------------
Gruß Peter


"Basil Brunner" <basil....@KEINSPAMkoller.ch> schrieb im Newsbeitrag
news:#N7NcWnX...@TK2MSFTNGP12.phx.gbl...

Basil Brunner

unread,
Jun 30, 2004, 6:08:52 AM6/30/04
to
Hallo Peter

Peter Prüwasser schrieb:


> trotzdem zeigt es mir noch immer doppelt und dreifche Einträge an.
>
> nun sieht der Querystring folgendermaßen aus:
>
> SELECT Distinct [tblIrgedwieXX].[ysnPerson],
> [tblIrgedwieXX].[strIrgendwieMC],
> [tblIrgedwieXX].[strName1], [tblIrgedwieXX].[strName2],
> [tblIrgedwieXX].[ysnDelete], [tblBeispielXX].[strBeispielMC],
> [tblBeispielXX].[strDepartment], [tblBeispielXX].[ysnDelete]
> FROM tblIrgendwieXX, tblBeispielXX
> WHERE ((([tblIrgendwieXX].[ysnPerson])=True) And
> (([tblIrgendwieXX].[ysnDelete])=No Or ([tblIrgendwieXX].[ysnDelete]) Is
> Null) And (([tblBeispielXX].[ysnDelete])=No Or ([tblBeispielXX].[ysnDelete])
> Is Null))
> ORDER BY 2;

Hast du vielleicht noch ein Feld in der Abfrage, das sich von Datensatz
zu Datensatz ändert (z.B. Primärschlüssel mit AutoWert) drin? Ich hab's
eben bei mir kurz ausprobiert und es ist mit DISTINCT einwandfrei
gelaufen...

Frank Hügel

unread,
Jun 30, 2004, 6:13:30 AM6/30/04
to
Peter Prüwasser" <p.prue...@oca.at> schrieb im Newsbeitrag
news:40e2...@e-post.inode.at...

> Hallo Basil,
>
> trotzdem zeigt es mir noch immer doppelt und dreifche Einträge an.
>
(---schnippel---)

> WHERE ((([tblIrgendwieXX].[ysnPerson])=True) And
> (([tblIrgendwieXX].[ysnDelete])=No Or ([tblIrgendwieXX].[ysnDelete]) Is
> Null) And (([tblBeispielXX].[ysnDelete])=No Or
([tblBeispielXX].[ysnDelete])
> Is Null))
> ORDER BY 2;
>
Hallo Peter,
Da fehlt doch noch was im WHERE, z.B. TblIrgendwas.feldx=tblteispiel.Feldx
Die Beziehung der beiden Tabellen nicht anzugeben, führt zu vieellllen
Datensätzen im Ergebnis.
Welche Felder das sind, darüber schweigt mein Kaffeesatz.
Salü


Henry Habermacher [MVP Access]

unread,
Jun 30, 2004, 6:45:11 AM6/30/04
to
Hallo Peter

Peter Prüwasser wrote in news:40e2692a$1...@e-post.inode.at:

> Danke vorerst mal, aber es funktioniert so auch nicht, denn da
> sortiert es mir die Einträge folgendermaßen:
>
> Prod
> Gfü
> Prod
> Gfü
> Prod
> Gfü
> Prod
> Gfü
>
> Der Query (SQL) String sieht folgendermaßen aus:
>
>
> SELECT [tblIrgedwieXX].[ysnPerson], [tblIrgedwieXX].[strIrgendwieMC],
> [tblIrgedwieXX].[strName1], [tblIrgedwieXX].[strName2],
> [tblIrgedwieXX].[ysnDelete], [tblBeispielXX].[strBeispielMC],
> [tblBeispielXX].[strDepartment], [tblBeispielXX].[ysnDelete]
> FROM tblIrgendwieXX, tblBeispielXX
> WHERE ((([tblIrgendwieXX].[ysnPerson])=True) And
> (([tblIrgendwieXX].[ysnDelete])=No Or ([tblIrgendwieXX].[ysnDelete])
> Is Null) And (([tblBeispielXX].[ysnDelete])=No Or
> ([tblBeispielXX].[ysnDelete]) Is Null))
> ORDER BY 2;


1. Du hast keine Join Bedingung drin, das erzeugt ein karthesisches
Produkt.
2. Sehe ich weder Distinct Operator noch Group By Klausel
3. Sortiert die ORder By 2 Klausel nach dem zweiten Feld, also nach
strIrendwieMC, wenn Du nach einem anderen Feld sortieren willst, musst
Du eine andere Zahl angeben, oder auch mehrere, durch Kommatas getrennt.
4. Macht sowohl Distinct, als auch Group By nur soweit eine
eindeutigkeit, wie dies möglich ist. Du musst immer die ganze Zeile
anschauen, dass diese Eindeutig ist, kannst nicht nur ein einzelnes Feld
nehmen. Wenn Du das machen willst, kannst Du mit First, Last, Max, etc.
irgendeinen Wert nehmen oder Agregatfuntionen wie Sum(), Avg() etc. die
anderen der Rows mit den gleichen Gruppenwerten agregieren, also
verrechnen.

Gruss

0 new messages