Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Formular aus anderen Formular öffnen, löschen JA/Nein und wieder zurück

Begonnen von hazel, Juli 03, 2012, 14:25:19

⏪ vorheriges - nächstes ⏩

hazel

Hallo zusammen,

Es geht um eine Mitgliederverwaltung, verwende Access 2003, Windows 7.

Aus einen Formular "FormAusscheidezeile" (beim öffnen Neuer Datensatz) werden die Mitglieder aus einen Kombifeld eingelesen. Wenn das Textfeld "Ausscheidedatum" verlassen wird, öffnet sich Das Formular "UFormMitglieder" mit der gleichen MitgliedsNr und das Fenster Löschen und Text mit Ja und Nein Option (siehe Code). Bei Antwort Ja springt Curser auf MitgliedsNr ich schließe das Formular "FormMitglieder"  und bin wieder im Formular "FormAusscheidezeile" . In diesem Formular ist ein Unterformular "UFormAuscheidezeile" um den gelöschten Datensatz nach verlassen zu speichern.

Hier der Code im Formular "Formausscheidezeile"

Private Sub AusscheideDatum_Exit(Cancel As Integer)
If Len(Nz(Me!MitgliedsNr.Column(0), "")) > 0 And Me!MitgliedsNr.Column(0) <> 0 Then
DoCmd.OpenForm "UFormMitglieder", , , "MitgliedsNr = " & Me!MitgliedsNr.Column(0)
End If
Dim Meldung As String

Meldung = "Anzeige Formular Mitglieder, nur bei Irrtum mit Nein antworten, Korrektur dann auch im Datensatz des Formular Ausscheidezeile"
If MsgBox(Meldung, vbYesNo + vbQuestion, "Löschen") = vbYes Then

    DoCmd.SetWarnings False
    DoCmd.RunCommand acCmdDeleteRecord
    DoCmd.SetWarnings True
   
End If
End Sub

Frage 1
Die Speicherung funktioniert nur einmal, sollte aber mehrmals funktionieren.

Frage 2

wenn ich beim Löschfenster mit Nein Antworte und schließe die fenster, wird der ausgesuchte Datensatz trotzdem im UFormAusscheidezeile gespeichert.

Ich hoffe das der Text verständlich ist und würde mich über Antwort freuen.

DF6GL

Hallo,

hab die Beschreibung jetzt ein paar mal durchgelesen , bin aber trotzdem nicht mit der Ablaufsteuerung der Formulare im Klaren darüber, was eigentlich alles passieren soll und warum...

Lad die DB mal hier (gezippt und datenreduziert) hoch, damit man sich das im Realen ansehen kann...
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

MzKlMu

Hallo,
habe es zwar auch nicht recht verstanden, aber ausgeschieden Mitglieder zu löschen halte ich für falsch.
Zitatum den gelöschten Datensatz nach verlassen zu speichern.
Und den gelöschten Datensatz dann anschließend wieder speichern zu wollen ist noch falscher. ;D
Ich würde hier gar nichts löschen, man löscht keine Daten die mal gültig waren. Alleine über das Ausscheiddatum lässt sich die Mitgliedertabelle ganz bequem filtern, sodass ich immer wählen kann welche Mitglieder ich sehen will.
Alle: kein Kriterium
Ausgeschiedene: Ausscheidedatum <> Null
Aktive: Ausscheidedatum = Null

Ich halte das Löschen für einen ganz groben Fehler. Wenn Beziehungen mit referentieller Integrität angelegt sind, (was sein sollte) geht sogar die Datenintegrität verloren.
Gruß Klaus

hazel

Hallo,

ich mache mir erst mal neue Gedanken über die Antwort von MzKlMu und melde mich wieder.

Vielen Dank einstweilen

hazel

Hallo

erst mal die gezippte Datei zum besseren Verständnis

bis dann

[Anhang gelöscht durch Administrator]

MzKlMu

Hallo,
die Tabelle "TabAusscheidezeile" ist schlicht und ergreifend überflüssig. Der Ausscheidgrund gehört als Fremdschlüssel in die einzige verbleibende Mitgliedertabelle.
Das Formular "FormAusscheidezeile" und das Ufo dazu ist ebenfalls überflüssig.
Das Mitgliederformular würd einfach über das Ausscheidedatum gefiltert, die ganze Hin und Herkopiererei ist absolut überflüssig.

Das Datenmodell ist auch noch nicht ausgereift.
Hast Du Dir mal überlegt, was passiert, wenn jemand austritt und in 2 Jahren wieder eintritt, wie willst Du das erfassen?

Vereinsfunktionen (Vorstand) etc. gehören in eine extra Tabelle. Mit einer weiteren tabelle wird dann erfasst, wer wann was als Ehrenamt gemacht hat.
Wie soll das laufen mit den beiträgen? Diese ändern sich ja im Laufe der Zeit, willst Du das nicht dokumentieren?
Gruß Klaus

hazel

Hallo MzKlMu,

zu 1. habe nur die relevanten Objekt verpackt.

zu 2. da Wiedereintritt selten vorkommt, hatte ich das so überlegt.

zu 3. ich habe den Vorstand gefiltert über Ehrenamt VorstandsNr (Sortierung) so kann er durch Löschung derselben ein normales Mitglied werden.

zu 4. die Beiträge haben eine extra Tabelle und werden durch eine Aktualisierungsabfrage dann verändert.

Grüsse Hazel

MzKlMu

Hallo,
Zu 2) Alleine das Wort Selten bedeutet dass es vorkommt und somit kann es bei Deinem Model nicht erfasst werden. Was machts Du wenn der seltene Fall eintritt, alles wieder zurückschieben, Ausscheidedatum löschen usw. Das wird ein schöner Krampf.

Zu 3) das gehört in eine extra Tabelle mit einer weiteren Zuordnungstabelle um Ehrenämter zu erfassen, es gibt ja nicht nur einen Vorstand.

Und wie gesagt, die ganze Löscherei und hin und her Schieberei von Datensätzen ist gelinde gesagt Unsinn. Darauf kann man ohne Nachteile verzichten. Der Verzicht darauf bringt dabei nur Vorteile.

Lade mal die ganze DB hoch.
Gruß Klaus

hazel

Hallo MzKlMu

Du hast mich überzeugt, werde die Punkte 2 u. 3

Erst mal vielen Dank