Access: Wert wird mehrmals in Datenbank eingetragen

Chandini

Mitglied
Hallo...

Folgendes Problem:
Ich schreibe grade ein Programm in VB mit Zugriff auf eine Access Datenbank.
Nachdem in VB die Auswertungen nicht so funktionieren, wie sie sollen, habe ich mir die Datenbank mal näher angeschaut.
Und dabei festgestellt, dass jeder Eintrag fünf mal eingetragen wird.

Beispiel:
Ich gebe einen Wert ein. In diesem Fall handelt es sich um eine Rechnungsnummer mit Rechnungs- und Kundendaten.
Die Rechnungsnummer ist dabei Primärschlüssel und sollte damit eigentlich eindeutig sein.
Wenn ich dann eine Abfrage erstelle und nach genau dieser Rechnungsnummer suche, dann bekomme ich fünfmal das gleiche Ergebnis.
Also genau mit den gleichen Kundendaten, den gleichen Artikeln und so weiter.

Aber in der Tabelle steht der Eintrag definitiv nur einmal drin.
Es ist egal, ob ich den Eintrag über mein VB Programm mache oder direkt in der Datenbank. Das Ergebnis ist das gleiche.
Bei einer Suche erhalte ich fünf Ergebnisse.

Wie kann das sein?
Die Tabelle hat keine Verknüpfungen zu irgendwelchen anderen Tabellen.
Und ich dachte immer, dass der Primärschlüssel eindeutig ist.

Vielleicht könnt ihr mir ja weiterhelfen...
Wär echt super.

vlg, Ines

----------Nachtrag-----------

Mein SQL-Befehl hieß
SELECT * FROM tblRechnung, tblKunden WHERE tblRechnung.RgNr = '" & RgNr & "' AND tblRechnung.KdNr = '" & KdNr &"';

Wenn ich mich nur auf eine Tabelle (tblRechnung) beziehe, dann findet er nur einen Datensatz.
Aber sobald ich den Teil mit tblKunden reinschreib, findet er fünf.
Wahrscheinlich weil das die Anzahl der Datensätze in tblKunden ist.
Aber ich brauche ja eine Verbindung zu den Kundendaten. Sonst müsste ich das ja alles in der tblRechnung mitspeichern.
Wie kann ich denn sonst noch eine Verknüpfung zu tblKunden herstellen? Und als Suchergebnis nur einen Datensatz kriegen?

vlg, Ines
 
Zuletzt bearbeitet:

mage

Erfahrenes Mitglied
Das Problem ist das du eine Kreuzabfrage machst, das heist im Prinzip Datensätze mal Datensätze. Die Bedingung sollte die überflüssigen einfach rausschmeissen, das greif anscheinend nicht, da du die Bedinung nur auf eine Tabelle beziehst.
Deine Bedinung müsste so lauten WHERE tblRechnung.RgNr = tblKunden.KdNr.
Du musst die Tabellen in Beziehung setzen.

Ich bevorzuge Joins, die sind wesentlich perfomanter und kann man auch in Access wunderbar zusammen klicken.

Code:
SELECT * FROM tblRechnung INNER JOIN tblKunden ON tblRechnung.RgNr = tblKunden.KdNr