Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Löschen mit bedingung
Gehe zu Seite 1, 2  Weiter
zurück: Suchfunktion weiter: anfängerfragen - datenblattansicht Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Sib
Gast


Verfasst am:
15. Aug 2007, 08:45
Rufname:

Löschen mit bedingung - Löschen mit bedingung

Nach oben
       Version: Office 2003

Hallo,

folgendes Problem ich habe eine Tabelle mit den Datensätzen 1-n

ich habe ein endlosformular woll alles dieser Datensätze angezeigt werden. Man kann sich einen DS aussuchen und auf Löschen klicken.

ABER

Ich will das der DS nur dann gelöscht wird, wenn ich ihn nirgens benutzt habe, ansonsten kommt eben ne Fehlermeldung.

Ich weiss das ich durch referentielle integrität alle DS die den ausgewählten DS verwenden mit löschen könnte aber das will ich nicht.
JörgG
Access-Team


Verfasst am:
15. Aug 2007, 09:50
Rufname:
Wohnort: b. Dresden


AW: Löschen mit bedingung - AW: Löschen mit bedingung

Nach oben
       Version: Office 2003

Hallo,

verstehe ich das richtig, Du willst einen DS in der 1-Tabelle nur dann löschen können, wenn in der verknüpften n-Tabelle keine Detaildatensätze vorhanden sind?

Dann kannst Du in der Detailtabelle prüfen, ob es zum aktuellen ID (das Beziehungsfeld aus der Basistabelle) Datensätze gibt:
Code:
Private Sub Button_Click()
    Dim i As Integer

'Edit:
'   i = DLookUp("ID","NameDetailtabelle", "ID = " & Me!ID)
    i = DCount("ID","NameDetailtabelle", "ID = " & Me!ID)
    If i = 0 Then
        CurrentDb.Execute "DELETE * " & _
                            "FROM Basistabelle " & _
                           "WHERE ID = " & Me!ID, dbFailOnError
      Else
        MsgBox "Es sind " & i & " Detaildatensätze vorhanden!", , _
               "Löschen abgebrochen!"
    End If
End Sub

_________________
MfG, Jörg Very Happy

Bitte das Feedback nicht vergessen.


Zuletzt bearbeitet von JörgG am 15. Aug 2007, 10:58, insgesamt einmal bearbeitet
Sib
Gast


Verfasst am:
15. Aug 2007, 10:07
Rufname:

AW: Löschen mit bedingung - AW: Löschen mit bedingung

Nach oben
       Version: Office 2003

du hast das richtig verstanden ich hab den vba code von dir genommen und auf meine tab namen angepasst

aber ich bekomme immer eine fehlermeldung
Zitat:
...Laufzeitfehler 2001
Sie haben die vorherige Operation abgebrochen
der fehler ist in der zeile:
Code:
    i = DLookUp("ID", "NameDetailtabelle", "ID = " & Me!ID)
JörgG
Access-Team


Verfasst am:
15. Aug 2007, 10:21
Rufname:
Wohnort: b. Dresden

AW: Löschen mit bedingung - AW: Löschen mit bedingung

Nach oben
       Version: Office 2003

Hallo,

die Feld-/Tabellennamen hast Du angepasst? Wird an dem DS vorher noch irgendetwas geändert, dh er ist ungespeichert?

ändere mal:
Code:
Private Sub Button_Click()
    Dim i As Integer, lngID As Long

    lngID = Me!ID
    Me.Requery
    i = DCount("ID","NameDetailtabelle", "ID = " & lngID)
    If i = 0 Then
        CurrentDb.Execute "DELETE * " & _
                            "FROM Basistabelle " & _
                           "WHERE ID = " & lngID, dbFailOnError
      Else
        Me.Recordset.FindFirst "ID = " & lngID
        MsgBox "Es sind " & i & " Detaildatensätze vorhanden!", , _
               "Löschen abgebrochen!"
    End If
End Sub

Wie sieht Dein Code jetzt aus?

Edit: Sorry, ich hab oben die falsche D-Funktion eingesetzt, ändere DLookUp() in DCount().

_________________
MfG, Jörg Very Happy

Bitte das Feedback nicht vergessen.
Sib
Gast


Verfasst am:
15. Aug 2007, 10:49
Rufname:


AW: Löschen mit bedingung - AW: Löschen mit bedingung

Nach oben
       Version: Office 2003

der code geht jetzt so weit ...aber nicht soo wie ich wollte ...

ich bekomme wenn ich auf den button gehe eine meldung wieviel DetailDS gesamt vorhanden sind
und nicht wie gewollt nur von dem ausgewählter DS
JörgG
Access-Team


Verfasst am:
15. Aug 2007, 10:53
Rufname:
Wohnort: b. Dresden

AW: Löschen mit bedingung - AW: Löschen mit bedingung

Nach oben
       Version: Office 2003

Hallo,

Zitat:
Wie sieht Dein Code jetzt aus?

Wie heissen die Verküpfungsfelder (ID) aus der Basis-/Detailtabelle?

_________________
MfG, Jörg Very Happy

Bitte das Feedback nicht vergessen.
Sib
Gast


Verfasst am:
15. Aug 2007, 11:00
Rufname:

AW: Löschen mit bedingung - AW: Löschen mit bedingung

Nach oben
       Version: Office 2003

ups sry hab ich überlesen
Code:
Private Sub Löschen_Click()
    Dim i As Integer
   
    i = DCount("LehrgangsartNr", "TB_Lehrgang", _
               "'LehrgangsartNr = '" & lngLehrgangsartNr)
    If i = 0 Then
        CurrentDb.Execute "DELETE * " & _
                            "FROM TB_Lehrgangsart " & _
                           "WHERE LehrgangsartNrFD = " & Me!LehrgangsartNR, _
                          dbFailOnError
      Else
        MsgBox "Es sind " & i & " Detaildatensätze vorhanden!", , _
               "Löschen abgebrochen!"
    End If
End Sub

Nachtrag: Sib am 15. Aug 2007 um 11:02 hat folgendes geschrieben:
aus der basis tab heißt die is LehrgangsartNr
und aus der Detail LehrgangsartNrFS
JörgG
Access-Team


Verfasst am:
15. Aug 2007, 11:08
Rufname:
Wohnort: b. Dresden

AW: Löschen mit bedingung - AW: Löschen mit bedingung

Nach oben
       Version: Office 2003

Hallo,

kontrolliere diese Zeile:
Code:
    i = DCount("LehrgangsartNr", "TB_Lehrgang", _
               "'LehrgangsartNr = '" & lngLehrgangsartNr)
sie sollte so aussehen:
Code:
    i = DCount("LehrgangsartNr", "TB_Lehrgang", _
               "'LehrgangsartNr = '" & Me!LehrgangsartNr)
Question Me!LehrgangsartNr enthält ein Zahl?
_________________
MfG, Jörg Very Happy

Bitte das Feedback nicht vergessen.
Sib
Gast


Verfasst am:
15. Aug 2007, 11:23
Rufname:

AW: Löschen mit bedingung - AW: Löschen mit bedingung

Nach oben
       Version: Office 2003

also den quellcode hab ich geändert aber das ergebnis ist das selbe

und ja Me!LehrgangsartNr ist ne zahl
Willi Wipp
Moderator


Verfasst am:
15. Aug 2007, 11:34
Rufname:
Wohnort: Raum Wiesbaden

Re: Löschen mit bedingung - Re: Löschen mit bedingung

Nach oben
       Version: Office 2003

Hi Ihr Zwie,

was sollen die Hochkomma in der Bedingung?
Code:
Private Sub Löschen_Click()
    Dim lngAnz  As Long
   
    If Me.Dirty Then Me.Dirty = False 'Falls vorher Daten geaendert wurden
    lngAnz = DCount("LehrgangsartNr", "TB_Lehrgang", _
                    "LehrgangsartNr = " & Me!LehrgangsartNR)
    If lngAnz = 0 Then
        CurrentDb.Execute "DELETE * " & _
                            "FROM TB_Lehrgangsart " & _
                           "WHERE LehrgangsartNrFD = " & Me!LehrgangsartNR, _
                          dbFailOnError
      Else
        MsgBox "Es sind " & lngAnz & " Detaildatensätze vorhanden!", , _
               "Löschen abgebrochen!"
    End If
End Sub

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)


Zuletzt bearbeitet von Willi Wipp am 15. Aug 2007, 23:51, insgesamt einmal bearbeitet
JörgG
Access-Team


Verfasst am:
15. Aug 2007, 11:41
Rufname:
Wohnort: b. Dresden

AW: Löschen mit bedingung - AW: Löschen mit bedingung

Nach oben
       Version: Office 2003

Embarassed das kommt von Copy & Paste, das war's was ich ändern wollte Very Happy
_________________
MfG, Jörg Very Happy

Bitte das Feedback nicht vergessen.
Sehphir
Gast


Verfasst am:
15. Aug 2007, 11:46
Rufname:

AW: Löschen mit bedingung - AW: Löschen mit bedingung

Nach oben
       Version: Office 2003

naja aber ich hab ja jetzt keine hochkomma mehr drin... aber egal ob der DS leer ist oder nicht ich kann ihn nich löschen...

es wird egal welchen DS ich auswähle immer die gesamtanzahl der DS in der DatailTab angezeigt...
JörgG
Access-Team


Verfasst am:
15. Aug 2007, 12:01
Rufname:
Wohnort: b. Dresden

AW: Löschen mit bedingung - AW: Löschen mit bedingung

Nach oben
       Version: Office 2003

Hallo,

hat die vermeintliche Basistabelle weitere Beziehungen zu anderen Tabellen? Hast Du Deine vorhandenen Daten mal angeschaut, vielleicht ist die Anzeige ja korrekt? Das Feld LehrgangsartNr ist auch wirklich das Verknüpfungs-ID?
Ergänze mal im Code:
Code:
Private Sub Löschen_Click()
    Dim lngAnz  As Long
   
    If Me.Dirty Then Me.Dirty = False 'Falls vorher Daten geaendert wurden
    lngAnz = DCount("LehrgangsartNr", "TB_Lehrgang", _
                    "LehrgangsartNr = " & Me!LehrgangsartNR)
Debug.Print Me!LehrgangsartNR & "|" & lngAnz
Stop
   '. . .

Direktfenster einschalten mit <Strg+G>, was stehen jetzt für Werte dort?

Kannst Du mal einen Screenshot vom Beziehungsfenster anhängen?

_________________
MfG, Jörg Very Happy

Bitte das Feedback nicht vergessen.
Sib
Gast


Verfasst am:
15. Aug 2007, 12:30
Rufname:

AW: Löschen mit bedingung - AW: Löschen mit bedingung

Nach oben
       Version: Office 2003

Sib am 15. Aug 2007 um 12:19 hat folgendes geschrieben:
LehrgangsartNr ist das Verknüpfungsfeld....ich hab in der basitab nur 2 felder..... und nur die LehrgangsartNr ist eindeutig

also im direkbereicht steht
66 | 115

und die basitabelle hat keine weiteren verknüpfungen die detailtab aber schon.

die lehrgansartNr verweist von der Datailtab noch auf 2 andere Tab

hab...grad ne bekannte gebeten das bild hochzuladen (bin ja selber nicht reg.) aber sie meinte sie fliegt permanent wieder raus wenn sie auf irgendwas clickt.....

woran liegt das....
JörgG
Access-Team


Verfasst am:
15. Aug 2007, 12:30
Rufname:
Wohnort: b. Dresden


AW: Löschen mit bedingung - AW: Löschen mit bedingung

Nach oben
       Version: Office 2003

Hallo,

sind diese Namen/Zuordnungen korrekt?
Detailtabelle: TB_Lehrgang, Verknüpfungsfeld = LehrgangsartNr
Basistabelle: TB_Lehrgangsart, ID = LehrgangsartNrFD

_________________
MfG, Jörg Very Happy

Bitte das Feedback nicht vergessen.
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite 1, 2  Weiter
Diese Seite Freunden empfehlen

Seite 1 von 2
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Tabellenvergleich | Gleiche Datensätze löschen 0 Daikon 979 29. Nov 2005, 13:50
Daikon Tabellenvergleich | Gleiche Datensätze löschen
Keine neuen Beiträge Access Tabellen & Abfragen: Bedingung in Abfrage 1 hafisch 1101 23. Sep 2005, 13:17
Dalmatinchen Bedingung in Abfrage
Keine neuen Beiträge Access Tabellen & Abfragen: (A03) DS in einer Excel-Tabelle mit Löschabfrage löschen 6 PrinceArthas 794 08. Aug 2005, 00:13
PrinceArthas (A03) DS in einer Excel-Tabelle mit Löschabfrage löschen
Keine neuen Beiträge Access Tabellen & Abfragen: SQL : Datenbank löschen 1 cfl2si 7440 23. März 2005, 12:30
Willi Wipp SQL : Datenbank löschen
Keine neuen Beiträge Access Tabellen & Abfragen: duplikatabfrage, löschen der doppelten datensätze.... 1 nebbio 1489 30. Jan 2005, 16:58
hommy duplikatabfrage, löschen der doppelten datensätze....
Keine neuen Beiträge Access Tabellen & Abfragen: Wenn Bedingung 1 DB_User 500 15. Jan 2005, 16:18
MirkoK Wenn Bedingung
Keine neuen Beiträge Access Tabellen & Abfragen: Spalten in Tabelle löschen wenn ohne Inhalt 7 Zoran 776 14. Jan 2005, 16:33
Skogafoss Spalten in Tabelle löschen wenn ohne Inhalt
Keine neuen Beiträge Access Tabellen & Abfragen: Summieren von Werten in Abfrage bei Bedingung 1 SamSamSam 574 06. Jan 2005, 23:09
reke Summieren von Werten in Abfrage bei Bedingung
Keine neuen Beiträge Access Tabellen & Abfragen: Datensatz löschen und die anderen neu durchnummerieren 16 brauchehilfe@office 5626 20. Okt 2004, 15:34
Willi Wipp Datensatz löschen und die anderen neu durchnummerieren
Keine neuen Beiträge Access Tabellen & Abfragen: Einmalige Datensätze löschen 18 frankkugler 1614 18. Okt 2004, 15:33
frankkugler Einmalige Datensätze löschen
Keine neuen Beiträge Access Tabellen & Abfragen: Nach Platzhaltern (Wildcards) suchen - **** löschen 1 Gast 1281 12. Okt 2004, 11:40
Skogafoss Nach Platzhaltern (Wildcards) suchen - **** löschen
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelleninhalt löschen 2 Tobi 988 23. Sep 2004, 12:14
Tobi Tabelleninhalt löschen
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Excel Tricks