Formular/Abfrage: Löschen nur aus einer Tabelle

09/02/2010 - 09:55 von Tim Germer | Report spam
Hallo zusammen,

ich steh im Moment auf dem Schlauch... Ich habe zwei Tabellen: eine
mit Kundenstammdaten, Unique Key ist die Kundennummer. Die zweite
Tabelle enthàlt eine Kundenauswahl, auch hier ist der Unique Key die
Kundennummer (einziges Feld).

In einem Formular zur Pflege der Kunden in der Tabelle Kundenauswahl
ist als Datenquelle eine Abfrage aus beiden Tabellen, da Name, Adresse
etc. mit angezeigt werden sollen, die aus dem Kundenstamm gezogen
werden. Verkürztes SQL-Statement: "SELECT KdAuswahl.KdNr,
KdStamm.KdName1 FROM KdAuswahl LEFT JOIN KdStamm ON KdAuswahl.KdNr KdStamm.KNr;" Left Join, damit die Erfassung auch klappt, wenn der
Kundenstamm noch nicht aus dem Host-System upgedatet ist.
Soweit kein Problem.

Wenn ich jetzt in dem Formular einen Datensatz löschen will, wird
dieser in beiden Tabellen gelöscht. Wahrscheinlich, weil Access eine
1:1-Verbindung sieht. Wie kann ich dieses verhindern? Es soll nur der
Datensatz aus der Kundenauswahltabelle gelöscht werden, nicht jedoch
aus dem Kundenstamm.

Vielen Dank für jede Hilfe.

Tim

Access 2002, Win XP
 

Lesen sie die antworten

#1 Karl Donaubauer
09/02/2010 - 11:47 | Warnen spam
Tim Germer wrote:
ich steh im Moment auf dem Schlauch... Ich habe zwei Tabellen: eine
mit Kundenstammdaten, Unique Key ist die Kundennummer. Die zweite
Tabelle enthàlt eine Kundenauswahl, auch hier ist der Unique Key die
Kundennummer (einziges Feld).

In einem Formular zur Pflege der Kunden in der Tabelle Kundenauswahl
ist als Datenquelle eine Abfrage aus beiden Tabellen, da Name,
Adresse etc. mit angezeigt werden sollen, die aus dem Kundenstamm
gezogen werden. Verkürztes SQL-Statement: "SELECT KdAuswahl.KdNr,
KdStamm.KdName1 FROM KdAuswahl LEFT JOIN KdStamm ON KdAuswahl.KdNr > KdStamm.KNr;" Left Join, damit die Erfassung auch klappt, wenn der
Kundenstamm noch nicht aus dem Host-System upgedatet ist.
Soweit kein Problem.

Wenn ich jetzt in dem Formular einen Datensatz löschen will, wird
dieser in beiden Tabellen gelöscht. Wahrscheinlich, weil Access eine
1:1-Verbindung sieht. Wie kann ich dieses verhindern? Es soll nur
der Datensatz aus der Kundenauswahltabelle gelöscht werden, nicht
jedoch aus dem Kundenstamm.
...



Du kannst dir z.B. eine Löschen-Schaltflàche basteln, mit der du
gezielt den Datensatz aus der gewünschten Tabelle löscht. Code ca.

If MsgBox("Möchten Sie den Datensatz mit der KdNr " _
& Me!KdNr & " wirklich löschen?", vbYesNo, "Löschen?") = vbYes Then

' falls DS in Arbeit, dann wegspeichern
If Me.Dirty = True Then Me.Dirty = False

CurrentDb.Execute _
"DELETE FROM KdAuswahl WHERE IDKdNr & Me!KdNr, dbFailOnError

End If

Servus
Karl
****************
Access-FAQ: http://www.donkarl.com /// http://www.donkarl.com?NEK
.NET-Entwickler-Konferenz für Accessler 27./28.2. + 20./21.3.2010

Ähnliche fragen