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
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
Hallo Karl,
danke für die Antwort. Zwischenzeitlich habe ich es anders realisiert:
Ich habe in der Tabellendefinition der Kundenauswahl die
Mehrfachspeicherung der Kundennummer zugelassen. Damit habe ich eine
1:n-Beziehung, die dazu führt, dass nur noch auf der n-Seite gelöscht
wird. In dem Form prüfe ich dann mit
Me.RecordsetClone.FindFirst "KdNr='" & KdNr & "'"
If Not Me.RecordsetClone.NoMatch Then
MsgBox "Zu der Kundennummer " & KdNr & " gibt es bereits einen
Eintrag. Doppelte Einträge sind nicht möglich.", vbOKOnly +
vbExclamation, "Speicherung abgebrochen"
Cancel = True
End If
ob es die Kundennummer bereits gibt und breche die Speicherung
gegebenenfalls ab. Ich glaube, dass dieses für mich die bessere Lösung
ist, da bei einer Löschen-Schaltfläche noch nicht das Löschen mit DEL-
Taste bzw. Menü unterbunden ist.
Viele Grüße nach Wien
Tim
Am 09.02.2010 11:54, schrieb Tim Germer:
> ..., da bei einer L�schen-Schaltfl�che noch nicht das L�schen mit DEL-
> Taste bzw. Men� unterbunden ist.
das lie�e sich aber leicht bewerkstelligen:
Formular / Entwurfsansicht / Eigenschaften / Reiter "Daten" /
Eigenschaft "L�schen zulassen" / Nein
CU
--
Thomas
Homepage: www.Team-Moeller.de