collapse

* Benutzer Info

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

* Wer ist Online

  • Punkt Gäste: 69
  • Punkt Versteckte: 1
  • Punkt Mitglieder: 4
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 14389
  • stats Beiträge insgesamt: 71331
  • stats Themen insgesamt: 9618
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Warum funktioniert dieser RS nicht richtig??  (Gelesen 4290 mal)

Offline Knatterkopf

  • Access-User
  • *
  • Beiträge: 78
Warum funktioniert dieser RS nicht richtig??
« am: Mai 20, 2010, 10:42:31 »
Hi,
hab da ein Prolem was ich einfach nicht kapier :(
Ich will die Spalten Schicht und Abteilung in der Tabelle Personal daraufhin Prüfen ob etwas drin steht oder nicht.
Falls nicht, dann soll was automatisch eingetragen werden (Werte aus Kombifeldern).
Falls in den Kombifeldern nichts ausgewählt wurde, soll der DS gelöscht werden.
Falls der in der zugehörigen Spalte "Name" nichts drin steht, dann soll der DS auch gelöscht werden.
Habe das so realisiert, aber da ist eben noch einiges falsch :(

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")

If Not IsNull(Me!FilterSchicht) And Not IsNull(Me!FilterAbteilung) Then
    Do While Not Rs.EOF
        If InStr(Nz(Rs![Schicht], ""), "") Or InStr(Nz(Rs![Abteilung], ""), "") Then
            Rs.Edit
            Rs![Schicht] = Me.FilterSchicht
            Rs![Abteilung] = Me.FilterAbteilung
            Rs.Update
        End If
        If Rs![Name] = "" Then
            MsgBox "Ungültiger Datensatz: " & Rs![Name] & " wird entfernt!", vbHinweis, "Löschvorgang!"
            Rs.Delete
        End If
        Rs.MoveNext
    Loop
    Me.Requery
   
Else
    Do While Not Rs.EOF
        If InStr(Nz(Rs![Schicht], ""), "") Or InStr(Nz(Rs![Abteilung], ""), "") Then
            MsgBox "Eingabe Schicht oder Abteilung unvollständig!", vbHinweis, "Unzureichende Eingabe!"
            MsgBox "Ungültiger Datensatz: " & Rs![Name] & " wird entfernt!", vbHinweis, "Löschvorgang!"
            Rs.Delete
        End If
        Rs.MoveNext
    Loop
    Me.Requery
End If
Rs.Close
DB.Close
End Sub

Die beiden Problemzeilen sind die If-Abfragen.
Problem: Er springt rein, obwohl er nicht darf >:(

Wäre um Hilfe sehr dankbar!

Lg
Adrian
 

Offline Knatterkopf

  • Access-User
  • *
  • Beiträge: 78
Re: Warum funktioniert dieser RS nicht richtig??
« Antwort #1 am: Mai 20, 2010, 11:25:15 »
Kleiner Erfolg:
Habe es mit "If IsNull() probiert und es funktiniert ;D
Aber wer Verbesserungsvorschläge hat, bitte gerne melden.

Lg
Adrian
 

database

  • Gast
Re: Warum funktioniert dieser RS nicht richtig??
« Antwort #2 am: Mai 20, 2010, 12:44:41 »
Hallo Adrian,

Zitat
Die beiden Problemzeilen sind die If-Abfragen.
Problem: Er springt rein, obwohl er nicht darf

Also weißt du ... davon gibts 4!

Dann  fällt mir auf dass du hier ALLE Datensätze aus der Tabelle TAB_Personal abrufst.
Zitat
Set Rs = DB.OpenRecordset("select * from TAB_Personal")
und in der nachfolgenden WHILE-Schleife ALLE Datensätze änderst ???

Wie kommt es, dass DS existieren wo kein Name eingegeben wurde...?

Mit currentDB.Execute("DELETE FROM TAB_Personal WHERE Name Is Null") sollte die Bereinigung auch funktionieren, wodurch du die Anzahl der Datensätze die du dann mit

Set Rs = DB.OpenRecordset("select * from TAB_Personal WHERE Schicht Is Null OR Abteilung Is Null")
erhältst um eben diese gelöschten DS geringer ist.

In der Schleife sollte dann

Do While Not Rs.EOF
If IsNull(Rs![Schicht]) then
    RS.Edit
    Rs![Schicht] = Me.FilterSchicht
    Rs.Update
End if
If IsNull(Rs![Abteilung]) Then
   Rs.Edit          
   Rs![Abteilung] = Me.FilterAbteilung
   Rs.Update
End If
Rs.MoveNext
Loop
die notwendigen Aktualisierungen ermöglichen.
Was du mit dem Else-Zweig in deinem Code bewerkstelligen willst sit mir nicht ganz geheuer, da dieser nicht zur Bedingung passt!

Grüße
Peter
« Letzte Änderung: Mai 20, 2010, 17:38:56 von database »
 

Offline Knatterkopf

  • Access-User
  • *
  • Beiträge: 78
Re: Warum funktioniert dieser RS nicht richtig??
« Antwort #3 am: Mai 20, 2010, 17:56:42 »
Hi Peter,

habe es so wie du vorgeschlagen hast übernommen.
Vielen Dank, macht jetzt auch mehr Sinn ;D
DS ohne Name kommt vor, wenn ein Schlamper keinen Namen eingibt. Dann soll der DS gelöscht werden.

Lg
Adrian
 

database

  • Gast
Re: Warum funktioniert dieser RS nicht richtig??
« Antwort #4 am: Mai 20, 2010, 18:38:24 »
Hallo,
Zitat
DS ohne Name kommt vor, wenn ein Schlamper keinen Namen eingibt. Dann soll der DS gelöscht werden
dann fang' doch dieses Problem auf - Ereignis 'Vor Aktualisierung' des Formulars wenn es sich um ein gebundenes Formular handelt.
Da kannst du die Vollständigkeit der Daten noch prüfen und ggf die Aktualisierung unterbinden bzw. die Änderung wieder verwerfen.

HTH

Peter
 

Offline Knatterkopf

  • Access-User
  • *
  • Beiträge: 78
Re: Warum funktioniert dieser RS nicht richtig??
« Antwort #5 am: Mai 20, 2010, 19:23:42 »
uijui ich zapfen :D

da hab ich gar nicht dran gedacht :-[
werd es morgen auch mal so rum probieren.

Bis dann und ein schönen Abend
Adrian
 

 

Datentypen im Kriterienausdruck unverträglich, aber warum....?

Begonnen von XoarBoard Tabelle/Abfrage

Antworten: 3
Aufrufe: 8586
Letzter Beitrag Juni 06, 2011, 14:17:25
von DF6GL
Access Datenbank wird immer größer und größer, warum?

Begonnen von yannick-149Board Access-Hilfe

Antworten: 2
Aufrufe: 2818
Letzter Beitrag Januar 30, 2012, 16:23:11
von MzKlMu
Warum wird das Unterformular neu abgefragt?

Begonnen von ulliBoard Formular

Antworten: 10
Aufrufe: 4545
Letzter Beitrag Mai 14, 2012, 20:47:00
von ulli
Register überdeckt Elemente - Warum?

Begonnen von -Tom-Board Formular

Antworten: 1
Aufrufe: 1556
Letzter Beitrag Dezember 08, 2013, 14:37:42
von -Tom-
Einfügefehler - Aber warum?

Begonnen von accessyBoard Access Programmierung

Antworten: 2
Aufrufe: 1362
Letzter Beitrag März 27, 2014, 18:44:54
von accessy