Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: datekk am Juli 22, 2016, 12:08:26

Titel: Kontakt löschen... Probleme
Beitrag von: datekk am Juli 22, 2016, 12:08:26
Hi,

meine Kontakte sind in verschiedene Typen unterteilt, da sich beim Klicken auf einen Kontakt, welcher z.B. in einem Endlosformular erscheint, je nach Typ ein anderes Fenster öffnen soll. Die Typeinteilung erfolgt über eine zugewiesene Spalte in der Kontakttabelle. Hier wird eine ID erfasst. Eine Tabelle "Typen" liefert dafür den FS.

Ein Formular, welche die Kontaktdetails dann pro Datensatz anzeigt beinhaltet auch eine Schaltfläche "Löschen", um den Kontakt zu löschen. Dieses Ereignis beinhaltet folgenden Code:


Private Sub Txt_SEC_KontaktLöschen_Click()

If MsgBox("Kontakt wirklich löschen", vbYesNo, "Achtung") = vbYes Then

    DoCmd.RunCommand acCmdDeleteRecord
   
    Else
End If
End Sub


Nun habe ich folgendes Problem: Wenn ich aus einer Liste von Kundenkontakten (Endlosform) einen Kunden aufrufe, so wird das sich nun öffnende Fenster als Dialog geöffnet. Wenn ich dann von diesem Kundenkontakt einen weiteren Kontakt aufrufe (ebenfalls Dialog) und diesen Kontakt dann mit Klick auf die o.g. Schaltfläche lösche, so wird der Kontakt gelöscht, aber auch der Kontakt von dem aus ich den zweiten Kontakt aufgerufen habe. Weiterhin wird mir in der Tabelle "Typen" der Typeeintrag gelöscht, ohne dass irgendwelche referentiellen Einstellungen getroffen worden sind.

Wie kann das sein und wie kann ich es so hinbekommen, dass wirklich nur der Kontakt gelöscht wird, um den es geht.

Hinweis: meine Datenbank ist in FE und BE geteilt wobei das BE ein SQL Server ist.
Titel: Re: Kontakt löschen... Probleme
Beitrag von: MaggieMay am Juli 22, 2016, 12:29:59
Hallo,
Zitatohne dass irgendwelche referentiellen Einstellungen getroffen worden sind.
das kann ja wohl nicht sein, von allein kann das nicht passieren. Aber da du ein
SQL-Server Backend hast, kann man sich das ja wohl kaum einmal anschauen.

Da weiß ich jetzt leider auch keinen anderen Rat, als dass du dir die Tabellenbeziehungen noch einmal ganz genau ansehen solltest. Evtl. sind auch Trigger/SQL-Skripte im Einsatz?
Titel: Re: Kontakt löschen... Probleme
Beitrag von: datekk am Juli 22, 2016, 12:52:53
Hi, es sind definitiv keine Trigger oder sonstige Skripte im Einsatz....
Titel: Re: Kontakt löschen... Probleme
Beitrag von: MaggieMay am Juli 22, 2016, 13:02:38
Handelt es sich um ein und dasselbe Formular das zweimal geöffnet wird?
Dann solltest du den Datensatz besser per SQL (-> Löschabfrage) gezielt löschen.

Was die Löschung des Typs in der anderen Tabelle betrifft, so sehe ich da keinen Zusammenhang.
Titel: Re: Kontakt löschen... Probleme
Beitrag von: Wurliwurm am Juli 22, 2016, 13:03:10
Ich würde mir angewöhnen, auf dem Server nur mittels ADODB.Command zu löschen und nicht mit DoCmd.

Spickvorlage
Public Function EmpfaengerLoeschen(ByVal EmpfNr As String) As Boolean
On Error GoTo Fehlerbehandlung

Dim i As Integer
Dim intGeloescht As Integer

i = MsgBox("Soll der Empfänger  " & EmpfNr & "  (" & WieHeisstDerKundeLang(EmpfNr) & ")  gelöscht werden?      ", vbQuestion + vbYesNo + vbDefaultButton2, "FI-Dialog:  Empfängerstammdaten löschen          ")
           
If i = 6 Then

    Dim strLoeschanweisung As String
    strLoeschanweisung = "DELETE FROM tblEmpf WHERE EmpfNr='" & EmpfNr & "'"
   
    conn.BeginTrans
 
    Dim Loeschbefehl As New Command
    With Loeschbefehl
       Set .ActiveConnection = conn
           .CommandType = adCmdText
           .CommandText = strLoeschanweisung
           .Execute intGeloescht
    End With
 
    If intGeloescht = 1 Then
      conn.CommitTrans
      EmpfaengerLoeschen = True
      Exit Function
    Else
      conn.RollbackTrans
      MsgBox "SQL:  " & strLoeschanweisung & "   ", vbCritical, "Fehler: Es wurden " & intGeloescht & " Einträge gelöscht     "
      Exit Function
    End If

End If

Exit Function
Fehlerbehandlung:
MsgBox "In der Funktion EmpfaengerLoeschen ist der Fehler " & Err.Description & " aufgetreten!    ", vbCritical, "Debugging   "
End Function