vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Datenbanken
Datensatz in einer 1:n Beziehung löschen 
Autor: NoProfi
Datum: 14.05.05 17:52

Ich habe eine Datenbank in der mehrere Tabellen in einer 1:n Beziehung und zwei weitere Tabellen die in keiner Beziehung stehen. Nun möchte ich in einer Tabelle die in Beziehung zur Haupttabelle steht einen Datensatz löschen. Das löschen in der Tabelle klappt auch bisher, NUR die gelöschten Datensätze werden weiterhin in allen Controls verwendet.
Der Datensatz in der Tabelle die in Beziehung zur Haupttabelle steht wird so gelöscht:
 Private Sub cmdKillBesitzer_Click()
  Dim KillBesitzer As String
  ' Aktuellen Datensatzzeiger merken
  BookMerker = Rs.Hits.Bookmark
  '-------------------------------------
  ' Unterprogramm zum löschen anspringen
  '-------------------------------------
   Call DeleteMark("Besitzer", KillBesitzer)
  '----------------------------------
  ' Hier liegt mein Problem !!
  '---------------------------------
  ' Alle Besitzer-ComboBoxen leeren
  '--------------------------------
  Me.cboFilter(3).Clear
  frmEingabe.cboBesitzer.Clear
  frmAuswahl.cboBesitzer.Clear
  '---------------------------------------
  ' Alle Besitzer-Comboboxen
  ' aus der Besitzer-Tabelle
  ' wieder füllen
  '---------------------------------------
  With Rs.Besitzer
    .MoveFirst
    Do While .EOF = False
      Me.cboFilter(3).AddItem !Name
      frmEingabe.cboBesitzer.AddItem !Name
      frmAuswahl.cboBesitzer.AddItem !Name
      .MoveNext
    Loop
  End With
  Rs.Hits.MoveFirst
  '------------------------------------------
  ' DataGrid aktualisieren und Spalten halten
  '------------------------------------------
  grdListing.Refresh
  grdListing.HoldFields
  '-------------------------------
  ' Datenbank-Information erneuern
  '-------------------------------
  lblGesamt.Caption = "Es werden zur Zeit " & Rs.Hits.RecordCount _
    & " Datensätze angezeigt!"
End Sub
Die Datensätze werden zwar alle gelöscht, aber nachdem die ComboBoxen wieder neu gefüllt wurden, werden die gelöschten Datensätze wieder in allen Controls verwendet (bzw. angezeigt).
Könnte mir vielleicht jemand sagen wo hier der Fehlerteufel steckt ??
Das Unterprogramm welches aufgerufen wird sieht so aus:
 Public Sub DeleteMark(tbl As String, sText As String)
  '-----------------------------------------------
  ' In den Bezugstabellen entsprechende ID löschen
  '-----------------------------------------------
  Dim iKill As Long   ' Zu löschende ID in der Tabelle
  Dim SQL As String   ' Ausführbarer SQL-Befehl
  Dim j As Long       ' Variable für sFile()
  Dim k As Long       ' Variable zum löschen des Filenamens
                      ' sowie des Titels aus den Tabellen
  '------------------------
  ' Public-Array bereinigen
  '------------------------
  ReDim sFile(0)
  Select Case tbl
    Case "Besitzer"
      '--------------------------------------
      ' ID aus der Haupttabelle für nicht in
      ' Beziehung stehende Tabellen merken.
      '--------------------------------------
      With Rs.Hits
        .MoveFirst
        Do While .EOF = False
          If !Besitzer = sText Then
            j = j + 1
            ReDim Preserve sFile(j)
            sFile(j) = !ID
          End If
          .MoveNext
        Loop
      End With
      '------------------------------
      ' Den Besitzer in der Besitzer-
      ' Tabelle suchen und löschen
      '------------------------------
      With Rs.Besitzer
        .MoveFirst
        Do While .EOF = False
          If !Name = sText Then
            iKill = !ID
            GoSub NowKill
            Exit Do
          End If
          .MoveNext
        Loop
      End With
  End Select
  '----------------------------------------
  ' In den Tabellen die KEINE Beziehung zur
  ' Haupttabelle haben die Einträge löschen
  ' die dem Besitzer zugeordnet waren
  '----------------------------------------
  For k = 1 To j
    Db.Execute "DELETE FROM Titel WHERE Titel!ID = " & sFile(k)
    Db.Execute "DELETE FROM FileName WHERE FileName!ID = " & sFile(k)
  Next k
  Exit Sub
NowKill:
  '------------------------------------------
  ' Datensatz in den Tabellen löschen, welche
  ' eine Beziehung zur Haupttabelle haben
  '------------------------------------------
  SQL = "DELETE FROM " & tbl & " WHERE " & tbl _
         & "!ID = " & Str(iKill)
  Db.Execute SQL
  ' Rücksprung
  Return
End Sub
Starte ich die Application erneut sind die gelöschten Datensätze auch entfernt und die Gesamtanzahl Datensätze stimmt ebenfalls.
Nur irgendwo liegt der Hase im Pfeffer
Für jeden Tip/Ratschlag bin ich Dankbar

LG
Plumber44

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Datensatz in einer 1:n Beziehung löschen1.136NoProfi14.05.05 17:52
Re: Datensatz in einer 1:n Beziehung löschen642wincnc14.05.05 19:03
Re: Datensatz in einer 1:n Beziehung löschen623NoProfi14.05.05 20:32

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel