collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 33
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 14129
  • stats Beiträge insgesamt: 68318
  • stats Themen insgesamt: 9202
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Datensatz automatisch löschen, wenn Bedingung nicht erfüllt  (Gelesen 3983 mal)

Offline Knatterkopf

  • Access-User
  • *
  • Beiträge: 78
Hallo,

Ich habe mir folgendes gedacht:
Habe ein Formular mit Personal Daten, wo ich DS nach Schicht und Abteilung eingebe.
Dabei werden Nur Namen und Personalnummer eingegeben. Schicht und Abteilung werden nach Eingabe des DS mit den Werten aus Kombiboxen gefüllt.
Ich habe aber leider keine Idee, wie ich es realisieren kann, dass bei leeren Kombiboxen der neue DS gar nicht gespeichert werden soll, bzw. wieder gelöscht wird. :-[
Wie kann ich eigentlich auf den gerade aktuellen bzw. offenen DS zugreifen?

Code: Visual Basic
Private Sub Form_AfterUpdate()
Dim DB As DAO.Database, Rs As DAO.Recordset

Set DB = CurrentDb
Set Rs = DB.OpenRecordset("select TAB_Personal.Schicht, TAB_Personal.Abteilung from TAB_Personal Where Schicht is Null")

If Not IsNull(Me!FilterSchicht) And Not IsNull(Me!FilterAbteilung) Then
    Rs.Edit
    Rs![Schicht] = Me.FilterSchicht
    Rs![Abteilung] = Me.FilterAbteilung
    Rs.Update
Else
    MsgBox "Bitte Schicht und Abteilung wählen!", vbHinweis, "Unzureichende Auswahl!"
End If
Rs.Close
DB.Close
End Sub

Mit einer Sub Form_Change() wäre das wahrsch. viel einfacher, aber geht hier irgendwie nicht.
Wäre Super, wenn mir da jemand helfen kann!

Lg
Adrian
 

Offline database

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 4178
Re: Datensatz automatisch löschen, wenn Bedingung nicht erfüllt
« Antwort #1 am: Mai 14, 2010, 14:24:52 »
Hallo,

Zitat
select TAB_Personal.Schicht, TAB_Personal.Abteilung from TAB_Personal Where Schicht is Null

Bezieht ein Recordset, in dem ALLE Datensätze enthalten sind, deren Eintrag im Feld Schicht gleich NULL ist!
Du würdest daher nicht auf einen bestimmten Datensatz (z.B. für eine bestimmte Personalnummer) Änderungen absetzen.
Wenn das auf eine bestimmte Personalnummer bezogen werden soll, muss die Personalnummer mit in die WHERE-Klausel!

Zitat
dass bei leeren Kombiboxen der neue DS gar nicht gespeichert werden soll
...hast du im Else-Zweig realisiert.

Bei ungebundenem Formular solltest du die 'Speichern-Aktion' über einen Button-Klick auslösen.
Bei gebundenem Formular sollte das Ereignis BeforeUpdate verwendet werden um den Automatismus des Schreibens auf die Tabelle unterbrechen zu können.


Grüße

Peter

Viele Grüße
Peter

Tipps und Links:
---------------------------------------------------------
1. http://www.donkarl.com
2. http://www.access-entwicklerbuch.de/2007/index.php?page=buch
3. http://www.xlam.ch/pos/rules.htm
3.a Reservierte Worte
4. http://www.functionx.com/vbaccess/index.htm
5. http://www.dbwiki.net

Nicht vergessen: Jede(r) hat mal klein angefangen!
Bitte keine Fragen per PN senden - Fragen gehören ins Forum!
 

Offline Knatterkopf

  • Access-User
  • *
  • Beiträge: 78
Re: Datensatz automatisch löschen, wenn Bedingung nicht erfüllt
« Antwort #2 am: Mai 14, 2010, 14:55:53 »
Hi Peter,
danke für deine schnelle Hilfe :D

Hab es so realisiert:

Code: Visual Basic
Private Sub Form_AfterUpdate()
Dim DB As DAO.Database, Rs As DAO.Recordset

Set DB = CurrentDb
Set Rs = DB.OpenRecordset("select * from TAB_Personal Where Schicht is Null")

If Not IsNull(Me!FilterSchicht) And Not IsNull(Me!FilterAbteilung) Then
    Rs.Edit
    Rs![Schicht] = Me.FilterSchicht
    Rs![Abteilung] = Me.FilterAbteilung
    Rs.Update
   
Else
    MsgBox "Bitte Schicht und Abteilung wählen!", vbHinweis, "Unzureichende Auswahl!"
    Rs.MoveLast
    MsgBox "Ungültiger Datensatz: " & Rs![Name] & " wird entfernt!", vbHinweis, "Löschvorgang!"
    Rs.Delete
    Me.Requery
End If
Rs.Close
DB.Close
End Sub

Funktioniert ganz prima, aber wenn du noch n Haken findest nur raus damit ;D

Lg
Adrian
 

Offline database

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 4178
Re: Datensatz automatisch löschen, wenn Bedingung nicht erfüllt
« Antwort #3 am: Mai 14, 2010, 15:20:47 »
Hi,

ich darf nochmals diesen Hinweis unterstreichen!

Zitat
Bezieht ein Recordset, in dem ALLE Datensätze enthalten sind, deren Eintrag im Feld Schicht gleich NULL ist!
Du würdest daher nicht auf einen bestimmten Datensatz (z.B. für eine bestimmte Personalnummer) Änderungen absetzen.
Wenn das auf eine bestimmte Personalnummer bezogen werden soll, muss die Personalnummer mit in die WHERE-Klausel!

Leider hast du auf diesen Hinweis nichts vermeldet, ich hoffe du hast ihn in deiner Euphorie nicht überlesen! ;D

Das Rollen auf den letzten Datensatz im Recordset  :-\würde ich persönlich als zu unsicher sehen! :-\

Peter
Viele Grüße
Peter

Tipps und Links:
---------------------------------------------------------
1. http://www.donkarl.com
2. http://www.access-entwicklerbuch.de/2007/index.php?page=buch
3. http://www.xlam.ch/pos/rules.htm
3.a Reservierte Worte
4. http://www.functionx.com/vbaccess/index.htm
5. http://www.dbwiki.net

Nicht vergessen: Jede(r) hat mal klein angefangen!
Bitte keine Fragen per PN senden - Fragen gehören ins Forum!
 

Offline Knatterkopf

  • Access-User
  • *
  • Beiträge: 78
Re: Datensatz automatisch löschen, wenn Bedingung nicht erfüllt
« Antwort #4 am: Mai 14, 2010, 16:24:54 »
Hi Peter,

Als bestimmten DS will auch nur den, der als letztes bzw. gerade generiert wird, wenn ich im Formular in der *-Zeile etwas eingebe.
Also sobald in einer der beiden Kombiboxen nichts (Null) drin steht, darf dieser DS gerne wieder gelöscht werden.
Am besten dieser dann gar nicht erstellt werden, aber ich habe keine Ahnung wie ich das hinbiege...

Du hast du recht, ich rolle auf den letzten DS.
Ich hoffe es erwischt immer den, den es gerade bei Eingabe in der *-Zeile generiert hat. ;D

Lg
Adrian
 

 

In einem Formular einen bestimmten Datensatz suchen

Begonnen von AlboBoard Formular

Antworten: 8
Aufrufe: 6609
Letzter Beitrag November 06, 2011, 00:18:45
von Beaker s.a.
Verknüpfung von zwei Formularen / Bedingte Erstellung von neuem Datensatz

Begonnen von micha286Board Formular

Antworten: 9
Aufrufe: 3219
Letzter Beitrag November 16, 2011, 10:20:39
von MzKlMu
Datensatz erzeugen mit ID aus vorherigem

Begonnen von AndolonBoard Access-Hilfe

Antworten: 4
Aufrufe: 6201
Letzter Beitrag Mai 05, 2010, 21:42:28
von Andolon
neuer Datensatz im Formular

Begonnen von 22jbmmBoard Formular

Antworten: 4
Aufrufe: 7056
Letzter Beitrag Mai 06, 2010, 14:42:00
von 22jbmm
Pfad im Datensatz ausgeben lassen

Begonnen von MemorientBoard Formular

Antworten: 1
Aufrufe: 5109
Letzter Beitrag Mai 06, 2010, 13:20:24
von DF6GL