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:
Im Formular beim Ereignis "Beim Anzeigen" folgenden Code eingeben:
Dann für jedes änderbare Feld beim Ereignis "Nach Aktualisierung" folgenden Code eingeben:
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.
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 SubDann 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
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.
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
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

