MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 01.09.2017, 10:31   #1
badMoon
MOF User
MOF User
Standard Acc2010 - Formular u. Unterformulare sperren

Guten Morgen in das Forum,

bei folgendem Problem komme ich nicht weiter und bitte um Hilfe:

Es besteht ein Formular mit einigen eingebundenen Unterformularen. Auf einem der Unterformulare befindet sich eine Schaltfläche, die einen bestimmten Vorgang auslöst.

Das Problem:

Eine bestimmte Abteilung soll an allen Formularen und Unterformularen lediglich Leserechte erhalten. Lediglich die Schaltfläche soll für die dahinter liegende Aktion freigegeben sein.

Hat jemand eine Idee, wie das umgesetzt werden kann?

Vorab vielen Dank für die Hilfe,

beste Grüße,
Wolfgang
badMoon ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 01.09.2017, 10:36   #2
gpswanderer
MOF Guru
MOF Guru
Standard

Hallo,
woran erkennt man die Abteilungen um das steuern zu können ?

Ist die DB in Backend und Frontend aufgeteilt ?
Hat jeder User sein eigenes Frontend auf seinem PC ?

__________________

Gruß
Klaus
Office2010, Win10
gpswanderer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 01.09.2017, 11:08   #3
badMoon
Threadstarter Threadstarter
MOF User
MOF User
Standard

@Klaus,

Danke für Deine Nachfrage.

Mit dem Starten der Anwendung wird der an Windows angemeldete User abgefragt und in einer Tabelle hinterlegt. Auf diesen User kann, bspw. beim Öffnen des Formulars, abgefragt und gesteuert werden.

Die Datenbank ist in Backend und Frontend aufgeteilt. Jeder User hat sein eigenes Frontend. Wegen der Datenbankpflege soll jedoch möglichst nur ein Frontend bestehen, welches nach evtl. Änderungen an die User, die mit der Datenbank arbeiten, verteilt wird.

Viele Grüße,
Wolfgang
badMoon ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.09.2017, 06:17   #4
badMoon
Threadstarter Threadstarter
MOF User
MOF User
Standard

Guten Morgen,

vielleicht hat doch jemand einen Tipp zur Lösung?
badMoon ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.09.2017, 10:26   #5
drambeldier
MOF Koryphäe
MOF Koryphäe
Standard

Moin,

zum Formular gibt es die Eigenschaften Allow..., die könntest Du abhängig vom User beim Load-Ereignis steuern.

__________________

Gruß
Ralf
drambeldier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.09.2017, 11:15   #6
elmar
MOF Meister
MOF Meister
Standard

Eine kleine, einfache Musterlösung ohne Passwort für die Mitarbeiter.
Angehängte Dateien
Dateityp: rar 2017_Moon.rar (44,9 KB, 4x aufgerufen)

__________________

WIN 7 PROF 64, ACCESS 2003 Wissenswertes: ACCESS-FAQ *** Habe mit ACC2007/10/13 nichts am Hut...
Hilfreiche Antworten kann es nur bei verständlichen Fragen geben! Anleitung dazu: Hier klicken | Auch hilfreich: Einführung in die Datenbank Microsoft Access. | Die Nachteile von Nachschlagefeldern
elmar ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 05.09.2017, 13:17   #7
badMoon
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo,

und erst einmal Danke für die Tipps und Hilfestellungen. Leider komme ich damit auch nicht weiter.

Mit folgendem Code habe ich es versucht:

Code:

Private Sub Form_Current()
        Me.AllowEdits = False
        Me!Vertragspartner.Form.AllowEdits = False
        Me!qtb_VertragArt.Form.AllowEdits = False
        Me!qtb_VertragArt.Form!Kosten.Form.AllowEdits = False
...usw.
End Sub
Aber, aufgrund der ganzen Unter- und Unter-Unterformulare würde das letztendlich zu verworren und pflegeaufwendig werden, zumal Löschen, Hinzufügen usw. noch gar nicht berücksichtigt wurde.

Gibt es keine Möglichkeit, Haupt- und alle Unterformulare in einem Rutsch zu sperren? Lediglich das Blättern, ansehen und Betätigen eines Schalters zum Öffnen von Dokumenten soll erlaubt sein.
Angehängte Grafiken
Dateityp: jpg formular.jpg (85,2 KB, 5x aufgerufen)

Geändert von badMoon (05.09.2017 um 13:20 Uhr).
badMoon ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 05.09.2017, 13:26   #8
Maxel
MOF Guru
MOF Guru
Standard

Du könntest alle Steuerelemente des Formulars in einer Schleife rekursiv durchlaufen und prüfen, ob es sich um ein Unterformular-Steuerelement handelt. Dann den entsprechenden Befehl anwenden.

__________________

Viele Grüße von Maxel

Nie aufhören anzufangen,
nie anfangen aufzuhören!
Maxel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 05.09.2017, 14:24   #9
badMoon
Threadstarter Threadstarter
MOF User
MOF User
Standard

@Maxel,

Danke für Deine Antwort, aber...

... da ist mein Access-Latein am Ende und überfordert .

Ich bin mir ziemlich sicher, dass es anspruchsvolle Lösungen geben wird. Hier fehlen mir einfach die Kenntnisse, da ich in Access doch recht wenig mache.
badMoon ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 05.09.2017, 14:34   #10
JPA
MOF Koryphäe
MOF Koryphäe
Standard

Wenn NurLesen dann würde ich folgende Eigenschaft setzen:
Code:

Me.RecordsetType = 2 'Snapshot
JPA ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.09.2017, 11:35   #11
badMoon
Threadstarter Threadstarter
MOF User
MOF User
Standard

@JPA,

Danke für Deine Antwort. Leider führte dies nicht zum Ziel.

Nun habe ich folgendes versucht:

Code:

Private Sub Form_Current()
    
If Me.FB = "16" Then
 
Dim ctl As Control

For Each ctl In Me.Controls
     If ctl.ControlType = acTextBox Then
     ctl.Locked = True
     End If
Next ctl

End If
    
Me.sucheVertrNr.Locked = False

End Sub
Das Ziel, dass die Datensätze lediglich angezeigt, aber nicht mehr geändert werden können, ist erreicht.

Warum aber positioniert das Suchfeld nach Auswahl des gewünschten Kriteriums nicht auf den gewünschten Datensatz, obwohl es doch wieder entsperrt wurde?

Code:

Me.sucheVertrNr.Locked = False
Und folgende Zusatzfragen:

Kann der obige Code so erweitert werden, dass
  • alle Felder, auch Kombinationsfelder, grau hinterlegt oder die Schriftfarbe grau eingestellt wird?
  • der Cursor in kein Feld mehr positioniert oder kein DropDown-Feld mehr aktiviert werden kann?

Besten Dank und Gruß,
Wolfgang

Geändert von badMoon (06.09.2017 um 12:04 Uhr).
badMoon ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.09.2017, 11:46   #12
JPA
MOF Koryphäe
MOF Koryphäe
Standard

Zitat:

Das Ziel, dass die Datensätze lediglich angezeigt, aber nicht mehr geändert werden können, ist erreicht.

Nicht wirklich. Die Steuerelemente sind gesperrt, und auch nur die acTextBox.
Es ist keine nachhaltige Lösung.

Mit Me.RecordsetType = 2 ist der gesamte Datensatz auf nur lesen. Warum meinst du, es führt nicht zum Ziel?

Zitat:

alle Felder, auch Kombinationsfelder, grau hinterlegt oder die Schriftfarbe grau eingestellt wird?
der Cursor in kein Feld mehr positioniert oder kein DropDown-Feld mehr aktiviert werden kann?

acCombox / acListbox.enabled=false
JPA ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.09.2017, 12:57   #13
badMoon
Threadstarter Threadstarter
MOF User
MOF User
Standard

Eventuell habe ich die Syntax nicht korrekt verwandt?

Code:

Private Sub Form_Current()
    
If Me.FB = "16" Then
     
    Me.Befehl52.Visible = False
    Me.öffneWV.Visible = False
    Me.btnZeigeAlleVerträge.Visible = False
    Me.btnZeigeDieseVerträge.Visible = False
    Me.Befehl77.Visible = False
    
    Me.RecordsetType = 2 'Snapshot
    Me.sucheVertrNr.Locked = False

End If

End Sub
Mit diesem Code lässt sich jeder Datensatz beliebig ändern


Gruß,
Wolfgang

Geändert von badMoon (06.09.2017 um 14:42 Uhr).
badMoon ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.09.2017, 14:47   #14
JPA
MOF Koryphäe
MOF Koryphäe
Standard

Laut deinem geposten Ereignis Form_Current, soll das Programm pro Datensatz entscheiden ob dieser zu bearbeiten ist, oder?

Mit Form_Current klappt RecordsetType natürlich nicht.
JPA ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.09.2017, 07:52   #15
badMoon
Threadstarter Threadstarter
MOF User
MOF User
Standard

Guten Morgen,

...form_Current war wohl nicht das richtige Ereignis. Die Einstellung "Me.RecordsetType = 2 'Snapshot" habe ich nunmehr mit einigen in Frage kommenden Ereignisvarianten ausprobiert. Im Ergebnis konnte ich nicht erreichen, dass neben dem Hauptformular auch alle Unterformulare gesperrt wurden, wenn ich diese Einstellung lediglich im Hauptformular vornahm.

Mittlerweile habe ich mich für folgende Variante entschieden:

Beim Start der Anwendung wird automatisch ein Hauptformular geöffnet. Hier ist folgende Prozedur hinterlegt:

Code:

Private Sub Form_open(Cancel As Integer)

DoCmd.SetWarnings False
DoCmd.RunSQL "SELECT getUsername() AS Benutzer, Mid([Benutzer],3,2) AS FB, Mid([Benutzer],3,5) AS SD  INTO Fachbereich;"
DoCmd.OpenForm "f_Fachbereich", acNormal, "", "", , acHidden
    DoCmd.Minimize
    If (Forms!f_Fachbereich!FB = "16") Then
        DoCmd.Close acForm, "Hauptmenü"
        DoCmd.OpenForm "hfVertrag", acNormal, "", "", acReadOnly, acNormal
    End If
DoCmd.SetWarnings True
End Sub
Beim Öffnen des Formulars "hfVertrag wird folgende Prozedur ausgeführt:

Code:

Private Sub Form_load()
    
If Me.FB = "16" Then
    Me.sucheVertrNr.Locked = False
    Me.Befehl52.Visible = False
    Me.öffneWV.Visible = False
    Me.btnZeigeAlleVerträge.Visible = False
    Me.btnZeigeDieseVerträge.Visible = False
    Me.Befehl77.Visible = False
    Me.Caption = Date
End If

End Sub
Im Ergebnis sind neben dem Haupt- auch alle Unterformulare so geöffnet, dass keine Änderungen durchgeführt werden können.

ABER

Die Felder können angesteuert, Kombinationsfelder geöffnet werden. Ebenso ist es nicht möglich, über das Suchfeld zu einem bestimmten Datensatz zu springen. Zwar kann auch dieses Kombinationsfeld aktiviert werden - ein Klick auf den gewünschten Datensatz öffnet diesen aber nicht.

Besteht die Möglichkeit, das Formular im Nur-Lese-Modus so zu öffnen, dass
  • der Cursor nicht in Felder / Kombinationsfelder gesetzt werden kann und
  • über das Kombinationsfeld zum Suchen der ausgewählte Datensatz geöffnet wird?

Vorab nochmals Danke für die Mühe und Hilfe,

Gruß,
Wolfgang
badMoon ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.