Bestimmte Datensätze schützen

Moderator: ModerationP

Bestimmte Datensätze schützen

Beitragvon Gast » 11. Sep 2021, 07:39

Hallo,
kann man bestimmte Datensätze vor einer Änderung in einem Formular schützen?
Damit ist gemeint, dass beim Blättern mit Hilfe der Navigationsleiste eben ganz bestimmte Datensätze nicht geändert werden können.
Mit Forms!Employees.RecordsetType = 2 im Form_Current wird immer wieder der 1. Datensatz eingestellt. Bleibt da nur jedes Control zu sperren?
Gruß Petra
Gast
 

Re: Bestimmte Datensätze schützen

Beitragvon KlausMz » 11. Sep 2021, 08:11

Hallo,
das geht, problemlos.
Aber, wie wird der bestimmte Datensatz idendifiziert ?
Bzw. woran machst Du fest, dass der DS nicht geändert werden darf ?
Und wie hast Du Dir es vorgestellt, wenn (wegen eines Fehlers z.B.) der DS doch geändert werden muss ?
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Benutzeravatar
KlausMz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 40253
Registriert: 06. Okt 2003, 15:09
Wohnort: Irgendwo in der Pfalz

Re: Bestimmte Datensätze schützen

Beitragvon Gast » 11. Sep 2021, 08:57

Hallo,
dass der DS nicht geändert werden darf?

Ich hatte das mit RecordsetType im Form_Current versucht. Je nach Wert der gebundenen Spalte einer Combobox
Code: Alles auswählen
If Me!cboStatus = 1 Then
  Me.RecordsetType = 2

der DS doch geändert werden muss ?

Wenn eine Änderung nötig sein sollte, über einen Button mit
Code: Alles auswählen
Me.RecordsetType = 0

Aber wie gesagt, geht nicht, es wird immer der 1. Satz gezeigt.
Gruß Petra
Gast
 

Re: Bestimmte Datensätze schützen

Beitragvon KlausMz » 11. Sep 2021, 11:22

Hallo,
im Ereignis "Beim Anzeigen" (Form_Current)
einfach eine Zeile:
Code: Alles auswählen
Me.AllowEdits = Not Me.cboStatus = 1


Für den Button dann:
Code: Alles auswählen
Me.AllowEdits = Me.cboStatus = 1


If..Then braucht man da nicht.
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Benutzeravatar
KlausMz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 40253
Registriert: 06. Okt 2003, 15:09
Wohnort: Irgendwo in der Pfalz

Re: Bestimmte Datensätze schützen

Beitragvon Beaker s.a. » 11. Sep 2021, 11:26

Hallo Petra,
Durch die Änderung des RecordsetTypes wird vermutlich (ich hab's noch nie versucht)
die Datenbasis erneut geladen, wodurcht der DS-Zeiger auf den 1. DS positioniert wird.
Besser du verwendest die Eigenschaft "AllowEdits" beim "Form_Current"
Code: Alles auswählen
Me.AllowEdits = (Me!cboStatus = 1)


gruss ekkehard


zu spät :(
Ereignisorientierte Programmierung:
Alles, was geschieht, geschieht.
Alles, was während seines Geschehens etwas anderes geschehen
läßt, läßt etwas anderes geschehen.
Alles, was sich selbst im Zuge seines Geschehens erneut geschehen
läßt, geschieht erneut.
Beaker s.a.
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1204
Registriert: 14. Jul 2012, 21:56
Wohnort: Bremen

Re: Bestimmte Datensätze schützen

Beitragvon Gast » 11. Sep 2021, 11:45

Recht oft muss man nicht alles auf einmal sehen - bei 127.000 Datensätzen wäre das auch nicht ganz so einfach.

Daher könnte man auch schlicht zwei Instanzen des gleichen Formulars verwenden. Die eine Instanz würde ausschließlich jene Datensätze anzeigen, die nur zum Anschauen sind. Dort kann man alles schön statisch sperren. Die zweite Instanz zeigt die änderbaren Datensätze und bietet die Möglichkeiten dafür.

Zusatz: Mit einem DataMacro, das bereits auf Tabellenebene wirkt, sollte man auch eine bedingte Sperrung einleiten können.
Gast
 

Re: Bestimmte Datensätze schützen

Beitragvon Gast » 11. Sep 2021, 19:40

Hallo,
danke euch
@ekkehard
wird vermutlich (ich hab's noch nie versucht) die Datenbasis erneut geladen

Du liegst laut Hilfe genau richtig
Wenn die RecordsetType-Eigenschaft eines geöffneten Formulars oder Berichts geändert wird, führt dies zu einer automatischen Neuerstellung der Datensatzgruppe.


@Klaus
Wenn das Formular des gesperrten Datensatzes eine andere Hintergrundfarbe haben soll, werde ich wohl um If-then nicht herumkommen oder gibt es da noch einen Trick?
Steckt hinter dem Button-Code dieselbe Logik wie bei dem mit der Klammer von ekkehard?

@Gast
Die eine Instanz würde ausschließlich jene Datensätze anzeigen, die nur zum Anschauen sind.

Wahrscheinlich müsste man dafür zwei Auswahlabfragen mit der Combo als Kriterium erstellen.
Aber ich glaube, es wird schwer, den Datensatz in den Status gesperrt zu setzen, wenn der Datensatz im ungesperrten Formular vervollständigt ist. Soll das über das über das erwähnte Datenmakro geschehen?
Gruß Petra
Gast
 

Re: Bestimmte Datensätze schützen

Beitragvon Bitsqueezer » 11. Sep 2021, 20:14

Hallo,

sofern es sich um Controls handelt, auf die Conditional Formatting angewendet werden kann, empfiehlt es sich, eine berechnete Spalte in die Abfrage einzubauen, die True oder False auswirft (um CF von langwierigen Berechnungen zu entlasten). Entsprechend dem Ergebnis kann man die Felder per CF auf Locked setzen oder nicht. Damit ist nicht nur der aktuelle Datensatz geschützt/ungeschützt, sondern alle, und der User kann es auch gleich sehen.
Das muß man natürlich bei allen Feldern machen, aber man kann auch mehrere auswählen und CF gemeinsam setzen.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8465
Registriert: 21. Jun 2007, 12:17

Re: Bestimmte Datensätze schützen

Beitragvon Gast » 11. Sep 2021, 20:52

Hallo Christian,
und der User kann es auch gleich sehen

Das bei den Feldern, wohl nicht auf das Formular.
Da hat man wohl keine Chance?
Gruß Petra
Gast
 

Re: Bestimmte Datensätze schützen

Beitragvon Bitsqueezer » 12. Sep 2021, 11:52

Hallo,

naja, zusätzliche Effekte hinzuzufügen, kannst Du natürlich auch machen. Zur Not hilft eine gesperrte Textbox im Hintergrund, um passend zur Abfrage eine entsprechende Hintergrundfarbe zu setzen (per CF).

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8465
Registriert: 21. Jun 2007, 12:17

Re: Bestimmte Datensätze schützen

Beitragvon Gast » 16. Sep 2021, 12:41

Hallo Christian,
ich habe das mit der Textbox so verstanden. Sie wird über allen anderen Controls aufgezogen und in den Hintergrund gesetzt.
Aber das verhindert das Tabellenlayout des Ufos. Sie landet immer in einer Zelle und bringt das Layout durcheinander.
Davon abgesehen - kann man überhaupt per CF die Box in den Vordergrund holen?
Sie würde dann, da gesperrt, die Eingabe bei den anderen Controls verhindern. So hatte ich das Ganze verstanden. Oder liege ich damit daneben?
Gruß Petra
Gast
 

Re: Bestimmte Datensätze schützen

Beitragvon Doming » 16. Sep 2021, 13:09

Hallo Petra,
Du hast in einem Datensatz das Feld wahr/falsch, wodurch Du festgelegt hast, ob der Datensatz geschützt wird.
Im Formular nimmst Du ein Kontrollkästchen (z.B. X1 als Name) und setzt es irgendwo in die Zeile, als Datenherkunft nimmst Du das wahr/falsch-Feld. Das Kästchen setzt Du auf unsichtbar.
Als bedingte Formatierung nimmst Du für die sichtbaren Textfelder den Ausdruck =X1 und als Farbe hellgrau.
Und im Ereignis Form_Current steht bei den Textboxen Me.Textbox.Enabled = X1 bzw. dem wahr/falsch-Feld der Abfrage.

Nun sind alle gesicherten Zeilen im Endlosformular hellgrau und können nicht verändert werden.
Gruß
Doming
Benutzeravatar
Doming
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 191
Registriert: 01. Jul 2014, 05:19

Re: Bestimmte Datensätze schützen

Beitragvon Bitsqueezer » 16. Sep 2021, 14:26

Hallo Petra,

um die Ausführungen von Doming noch zu ergänzen:

Nein, die Textbox soll natürlich im Hintergrund bleiben, und wie gesagt, auch nur nötig, wenn Du unbedingt die ganze Zeile im Hintergrund farblich markieren willst. Wenn Du auf die Spielerei verzichten kannst, laß es einfach.
Viel einfacher wäre etwa ein Icon oder eine Textbox in der Zeile, die einfach rot oder grün wird etc. Es genügt eine optische Markierung, die muß nicht über die ganze Zeile gehen...

Das mit dem Layout ist leider das Problem beim Designer, sobald Du eine Textbox (oder ein anderes Control) verschiebst, die unabhängig vom Layout sein soll und mit diesem überlappen, wird es automatisch in das Layout "eingebaut" und zerbröselt das komplette übrige Layout.

Da hilft nur, programmatisch die X/Y-Position zu verändern (natürlich zur Designzeit, nicht zur Laufzeit). Mit der Maus ist da meistens nichts zu machen.

Die Textbox soll natürlich auch nicht die Eingabe in die Controls verhindern durch Positionierung in den Vordergrund, denn dazu müßte sie ja durchsichtig sein. Damit hast Du keine optische Markierung mehr, außerdem kämst Du dann auch nicht bei den freien Datensätzen an die darunterliegenden Controls...

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8465
Registriert: 21. Jun 2007, 12:17

Re: Bestimmte Datensätze schützen

Beitragvon Gast » 17. Sep 2021, 10:29

Hallo,
ich danke euch.
Ich werde beides mal versuchen, komme aber erst nächste Woche dazu.
Gruß Petra
Gast
 


Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: Sprett und 4 Gäste