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

Moderator: Moderatoren

Antworten
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

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

Beitrag von Ewald »

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: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: EditRechte im Browse nur für einen User

Beitrag von Koverhage »

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: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: EditRechte im Browse nur für einen User

Beitrag von brandelh »

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: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: EditRechte im Browse nur für einen User

Beitrag von Koverhage »

Noch eine Idee:

IF erlaubt
dann Tabelle mit edit clause
ELSE
Tabelle ohne edit clause
ENDIF
Gruß
Klaus
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: EditRechte im Browse nur für einen User

Beitrag von Ewald »

@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: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: EditRechte im Browse nur für einen User

Beitrag von Tom »

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
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: EditRechte im Browse nur für einen User

Beitrag von Ewald »

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
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

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

Beitrag von Ewald »

@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: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

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

Beitrag von Tom »

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
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

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

Beitrag von Ewald »

: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: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

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

Beitrag von Tom »

: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