Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

bestimmte Datensätze im Formular für die Weiterverarbeitung sperren





Frage

Hallo zusammen, ich arbeite mit einer Datenbank auf Mehrbenutzerebene. Es gibt verschiedene Formulare für die Benutzer. Ich möchte nun sobald der Benutzer seine Änderungen im Formular vorgenommen hat, dass er durch eine Button diesen Datensatz für die Weiterverarbeitung sperren kann!? Wie kann man das lösen? Da ich leider nicht viel von VBA verstehe, bitte plausibel und ausreichend erklären! :o) Danke MfG Sebastian

Antwort 1 von piano

Hallo Sebastian.
Ich schlage folgendes vor:
Ein Feld in der Tabelle z.B. "Gesperrt" anlegen (Typ=Ja/Nein,Standardwert=Nein).
Dieses in das Formular aufnehmen als gebundenes Textfeld. In den Eigenschaften Name="Gesperrt", Aktiviert=nein, Gesperrt=ja, Format:Sichtbar=nein, Andere:In Reihenfolge=nein einstellen.
Ev. ein weiteres Text-Feld "Anzeige" (ungebunden) anlegen und den Feld-Bezeichner löschen - Eigenschaften Aktiviert=nein, Gesperrt=ja, Andere:In Reihenfolge=nein - dies nur zur Info des Benutzers!.

In den Eigenschaften des Sperren-Buttons: Das Ereignis "Beim Klicken" auswählen und folgenden Code eingeben:

me.Sperren=true
Me.Anzeige = "Satz Gesperrt"
("Sperren" sei der Name des Buttons)

Im Formular beim Ereignis "Beim Anzeigen" folgenden Code eingeben:
Private Sub Form_Current()
If Me.Gesperrt Then
   Me.Anzeige = "Satz Gesperrt"
Else
   Me.Anzeige = ""
End If
End Sub

Dann für jedes änderbare Feld beim Ereignis "Nach Aktualisierung" folgenden Code eingeben:
Private Sub Feld1_AfterUpdate()
   If Me.Gesperrt Then
      MsgBox "Satz ist gesperrt, Änderungen werden verworfen", vbExclamation & vbOKOnly
   End If
   Me.Feld1= Me.Feld1.OldValue
End Sub
In dem Beispiel heißt das Feld "Feld1".
Viel Glück

Gruß piano

Es wäre nett, wenn Du ein Feedback abgeben könntest,
ob der Lösungsvorschlag Dein Problem gelöst hat.



Antwort 2 von Sebastian79

Hallo Piano,

erstmal danke für die schnelle Antwort!!! :o)

Aber ich komm irgendwie nicht mit dem mittleren Teil klar, das versteh ich nicht ganz...

ich finde das Ereignis "Beim Anzeigen" nicht in meiner Auswahl, und auf welches Feld bezieht sich das?

Im Formular beim Ereignis "Beim Anzeigen" folgenden Code eingeben:

Private Sub Form_Current()
If Me.Gesperrt Then
Me.Anzeige = "Satz Gesperrt"
Else
Me.Anzeige = ""
End If
End Sub

Danke, und viele Grüße


Antwort 3 von piano

Hallo
Das ist ein Ereignis des Formulars! und wird jedes mal aktiviert, bevor ein neuer Satz angezeigt wird.
In Office 97 klickst Du einfach auf die Titelleiste, um die Eigenschaften anzuzeigen, ab Office 2000 im VBA-Fenster das Klassenmodul "Form" im drop-down Menü auswählen und dann rechts "Current" anklicken.

In meinem Vorschlag soll der Anwender beim Anzeigen des Satzes erkennen, ob er gesperrt ist. Du kannst das aber auch weglassen, dann merkt man erst beim Versuch, ein Feld zu ändern, ob es erlaubt ist.

Antwort 4 von Roadrunner90

Hallo Sebastian,

du solltest auch den Benutzer, der die Sperrung vorgenommen hat, speichern. Diesem kannst du dann die Möglichkeit geben, die Sperrung wieder rückgängig zu machen.

Gruß Rudolf

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: