Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Anmeldungen zum Forentreffen 2018 sind auf der Anmeldeseite möglich
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

EditRechte im Browse nur für einen User [erledigt]

Moderator: Moderatoren

Antworten
Benutzeravatar
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 404
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Kontaktdaten:

EditRechte im Browse nur für einen User [erledigt]

Beitrag von Ewald » Do, 15. Okt 2015 11:52

Ich möchte, das nur ein bestimmter User in einer Tabelle Änderungen vornehmen kann. Alle anderen sollen nur browsen können.
Das hier hatte ich schon scharf gestellt da es funktionierte. Aber wie ich jetzt durch wütende Proteste erfahren habe leider nur, wenn der vuser auch "ADMIN" ist. Der kann browsen und editieren.
Aber alle anderen können in der Tabelle dann nicht nur "nicht editieren", sie können in der Tabelle auch nicht browsen. Der Cursor lässt sich in der Tabelle nicht bewegen.

Code: Alles auswählen

@ 5,0 dcbrowse ob1 alias _hospital size 133,34 fit ;
      edit xbeBRW_ItemSelected when {||vuser="ADMIN"}; 
     

Ein Editprotect an allen Feldern war auch ein Schuss in den Ofen. Der Cursor saust automatisch durch alle Felder/Zeilen der Tabelle wenn der vuser nicht "ADMIN" ist. Das ist sehr störend, da die Tabelle über 2 Mio Einträge hat ;-)

Code: Alles auswählen

@ 5,0 dcbrowse ob1 alias _hospital size 133,34 fit ;
      edit xbeBRW_ItemSelected ; 
dcbrowsecol field blah1 Header "Blah1" editprotect when {||vuser <> "ADMIN"
dcbrowsecol field blah2 Header "Blah2" editprotect when {||vuser <> "ADMIN"
     
Wo und wie muss ich den Schalter denn wohl setzten, damit die Tabelle von jedem "gebrowst" werden kann, aber nur editiert werden kann, wenn der vuser auch "ADMIN" ist ?
Zuletzt geändert von Ewald am Do, 15. Okt 2015 13:15, insgesamt 1-mal geändert.

Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1981
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Kontaktdaten:

Re: EditRechte im Browse nur für einen User

Beitrag von Koverhage » Do, 15. Okt 2015 12:05

probier es mal mal der EDITOR clause. Ich habe es nicht getestet, der User müsste das Feld anklicken können aber die Daten nicht verändern.
Gruß
Klaus

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13811
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: EditRechte im Browse nur für einen User

Beitrag von brandelh » Do, 15. Okt 2015 12:30

Item Selected darfst du dafür nicht verwenden, weil je nach Maus oder Taste selected oder marked nötig ist.
Ich würde das tiefer abfangen, wenn du nicht grundssätzlich den browse auf readonly setzen kannt.

Also für jeden deine Editfunktion aufrufnen und in der dann prüfen ob editieren ja oder nein ...
Gruß
Hubert

Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1981
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Kontaktdaten:

Re: EditRechte im Browse nur für einen User

Beitrag von Koverhage » Do, 15. Okt 2015 12:45

Noch eine Idee:

IF erlaubt
dann Tabelle mit edit clause
ELSE
Tabelle ohne edit clause
ENDIF
Gruß
Klaus

Benutzeravatar
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 404
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Kontaktdaten:

Re: EditRechte im Browse nur für einen User

Beitrag von Ewald » Do, 15. Okt 2015 13:00

@Hubert,
moin, das habe ich ja versucht und alle Felder auf editprotect gesetzt. Dann entwickelt der Browser aber ein Eigenleben ;-)
Es werden der Reihe nach die Felder angesprungen und der Cursor läuft automatisch weiter. Zeile für Zeile für Zeile.

@Klaus,
ich denke, das mit den verschiedenen Browseobjekten klingt vielversprechend. Ich werde berichten.

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 6828
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: EditRechte im Browse nur für einen User

Beitrag von Tom » Do, 15. Okt 2015 13:13

Die richtige Klausel wäre auch PROTECT auf Spaltenebene. Ergänzend dazu müssen ggf. ITEMMARKED/DATALINK und ITEMSELECTED des Browses selbst konfiguriert werden.
Herzlich,
Tom

Benutzeravatar
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 404
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Kontaktdaten:

Re: EditRechte im Browse nur für einen User

Beitrag von Ewald » Do, 15. Okt 2015 13:14

Jep, genau so wollte ich das haben.
Danke und schönen Arbeitstag zusammen.
Ewald

Code: Alles auswählen

vedit:=if(vuser="ADMIN",.t.,.f.)
if vedit
@ 5,0 dcbrowse ob1 alias _hospital size 133,34 fit ;
      edit xbeBRW_ItemSelected  
    else
@ 5,0 dcbrowse ob1 alias _hospital size 133,34 fit 
endif

Benutzeravatar
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 404
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Kontaktdaten:

Re: EditRechte im Browse nur für einen User [erledigt]

Beitrag von Ewald » Do, 15. Okt 2015 13:19

@Tom,
mojn, hab ich ja wie gesagt mal versucht. Wenn ich im Browse das editieren ermögliche und dann alle Spalten auf protect setzte wird der Browser zum Selbstläufer. Sobald man in das Fenster klickt rast der Cursor alle Zeile durch. Wunderschön anzusehen und bei einer entsprechend riesigen Tabelle auch irgendwie unterhaltsam.

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 6828
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: EditRechte im Browse nur für einen User [erledigt]

Beitrag von Tom » Do, 15. Okt 2015 13:27

EDITPROTECT war ja auch falsch, und noch falscher in der Anordnung "EDITPROTECT WHEN". Einfach "PROTECT {||DarfNicht()}", feddisch. Ein WHEN in einer Browsecolumn ist mit eXpress++ ein Totalkiller.

Alternativ kannst Du auch für <nEditMode> für den Fall der Nichteditierbarkeit einen ungültigen Wert wählen, z.B. -1.
Herzlich,
Tom

Benutzeravatar
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 404
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Kontaktdaten:

Re: EditRechte im Browse nur für einen User [erledigt]

Beitrag von Ewald » Do, 15. Okt 2015 13:38

:shock: Wird Zeit das es FEB 2016 wird. Ich sage nur RENTE !!!
Ich hab das protect in 1000 Browsern stehen

Code: Alles auswählen

protect {||if bed,.t.,.f.}
Wie ich jetzt auf das when gekommen bin ? Man weiß es nicht.

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 6828
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: EditRechte im Browse nur für einen User [erledigt]

Beitrag von Tom » Do, 15. Okt 2015 14:29

:lol:

Ich denke allerdings, dass es am sinnvollsten wäre, das über den Editmode zu steuern. Dort kannst Du auch mit Codeblöcken hantieren und z.B. eine Get-Set-Funktion verwenden, die standardmäßig immer den korrekten Modus zurückgibt, und nur dann entsprechende Werte, wenn man nicht editieren darf. Damit könntest Du dann auch mit wenigen Codeänderungen mehrere Browses entsprechend ausstatten.
Herzlich,
Tom

Antworten