PDA

Vollständige Version anzeigen : Sicherheitsabfrage vor DS-Aktual. mit Ausklammerung eines Datenfeldes?


Eniko
27.06.2001, 13:57
Hallo, ich schon wieder.
Ich habe gerade die Sicherheitsabfrage vor Aktualisierung der Datensätze eingebaut.
Und zwar so:
Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.Dirty Then
If MsgBox("Datensatz wurde geändert! Speichern?", vbYesNo, "ACHTUNG!") <> vbYes Then
Me.Undo
End If
End If
End Sub

Ich möchte aber, dass die Änderung in einem Feld nicht mit abgefragt wird. Geht das?
Eniko

Morli
27.06.2001, 14:04
Hallo Eniko,

wenn Du in deinem Form noch ein unsichtbares Optionsfeld anlegt, welche Du nach Änderung des eine Feldes auf True (ansonsten False) stellst, kann Du dieses nach
If Me.Dirty Then
If Me.OptionGeändert Then

abfragen!

Es gibt sicherlich nur mehr Lösungsansätze, also harren wir der Dinge die da kommen!

Gruß

Rainer :)

Eniko
28.06.2001, 07:40
Hallo Morli, kannst Du mir das etwas näher erklären?
Ich habe ein Feld "Auswahl" zur Zuordnung des DS in eine bestimmte Rubrik mit Schaltfläche JA/NEIN. Bei Klick auf diese Schaltfläche und Sprung z. nächsten DS soll keine Abfrage "speichern? ja/nein" kommen, bei allen anderen Feldänderungen ja.
Gruß Eniko

Morli
28.06.2001, 08:05
Hallo Eniko,

also, wenn Du dieses Ja/Nein-Feld angeklickt hast, soll der Datensatz nicht gespeichert werden?

Wenn Du ja sowieso schon dein Ja/Nein - Feld hast, dann geht das doch recht einfach:

If Me.Dirty and Me.Auswahl = False Then
If MsgBox("Datensatz wurde geändert! Speichern?", vbYesNo, "ACHTUNG!") <> vbYes Then
Me.Undo
End If
End If
End Sub

Oder habe ich dich da falsch verstanden?

Gruß

Rainer ;)

Eniko
28.06.2001, 08:25
Rainer, der DS wird aber gespeichert, nur ohne Sicherheitsabfrage. Im Prinzip will ich es so haben, nur ein kleiner Schönheitsfehler ist noch drin.
Wenn ich dieses JA/NEIN-Feld betätige UND eine Änderung in einem anderen Feld vornehme, kommt auch keine Sicherheitsabfrage, was dann aber sein sollte. Aber damit könnte ich leben, weil diese Kombination selten auftreten wird. Vielen Dank, Eniko.

Eniko
29.06.2001, 08:47
Hallo Rainer,
es geht doch nicht so, wie ich dachte. Denn die Abfrage -Sichern Ja/nein- ist nun immer von dem Zustand des Feldes "Auswahl" abhängig. Ist es nicht gesetzt, wird nach Sicherung abgefragt, ist es gesetzt, wird gesichert ohne Frage.
Aber ich will eine totale Unabhängigkeit der Sicherungsabfrage von dem Feld "Auswahl". D.h., wenn nur dieses Feld geändert wird, soll keine Sicherungsabfrage kommen, werden aber andere Felder geändert soll die Frage kommen - unabhängig wie des Feld "Auswahl" gerade steht. Entschuldigung, ich hatte die Sache nicht richtig durchdacht, bzw. beschrieben und jetzt nur durch Zufall bemerkt. Gruß Eniko

Morli
29.06.2001, 13:25
Hallo Eniko,

Möglichkeit


If Me.Dirty Then
Select Case Me.Auswahl
Case True
Exit Sub
Case False
If MsgBox("Datensatz wurde geändert! Speichern?", vbYesNo, "ACHTUNG!") <> vbYes Then
Me.Undo
End If
End Select
End if

Ich hoffe, ich habe das richtig verschachtelt, mir brummt der Schädel (Summergrippe)!

Gruß

Rainer :)

P.S. Geht auch mit einen vernünftigen If-Then-Else, denk mal darüber nach.

Eniko
29.06.2001, 13:50
Hallo Rainer, so gehts auch nicht, da wird nur ein Schritt(von nein auf ja) ignoriert, aber wenn das Feld von ja auf nein geändert wird, kommt wieder die Speicherabfrage.
Ich lass Dich für diese Woche in Ruhe. Hab noch andere Probleme zu lösen, bevor ich wieder dieses angehe. Auf alle Fälle gute Besserung, schönes Weekend und Danke.
Vielleicht klappts nächste Woche noch mal?!
Gruß Eniko

Morli
30.06.2001, 09:10
Hallo Eniko,

ich denke du solltest mal ganz genau deffinieren, was du haben möchtest! Ich hatte dich so verstanden, das wenn das Feld auf Ja steht, der Datensatz ohne Nachfrage gespeichert werden soll. Wenn das Feld auf Nein steht, soll Nicht gefragt werden und ....

Hoppla, jetzt fällt der Groschen. Dann soll auch nicht Me.Dirty eintreten?

Dan wird interessant, ich frage mich, ob dann mit Dirty arbeiten kannst, oder ob Du die Felder einzeln abfragen mußt.

ICh werd mit mal Gedanken machen, bin aber die ganze nächste Woche nicht erreichbar!

Gruß

Rainer ;)

Eniko
09.07.2001, 20:57
Hallo Rainer,
ja ich glaube, es müssen die Felder einzeln abgefragt werden und dann lass ich das eine einfach weg(was beliebig geändert werden darf - es ist eine Abfrageentscheidung ja/nein). Ich habe jetzt die DB ins Netz gestellt und normalen Usern nur die Rechte R und F gegeben. Ohne Schreibrechte läßt sich aber dieses Feld nicht ändern. Aber eben diese Abfrage sollte möglich sein (solange die DB geöffnet ist, also keine Speicherung der geänderten Abfrage). Wieso lassen sich eigentlich die Felder schon während der Sitzung nicht ändern bei Schreibschutz??(keine Dateneingabe oder -änderung möglich).
Gruß Eniko

Morli
10.07.2001, 06:45
Hallo eniko,

Access sperrt halt nun mal bei Schreibschutz die Eingabe in die Formularfelder, damit mußt du leben. Was du hier IMHO nur machen kannst ist allen Usern Schreibberechtigung einrichten und beim Öffnen des Formulars anhand des Usernamens die Berechtigungen für die Formularfelder explizit vergeben.

Gruß

Rainer ;)