| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Auf dem Weg zur digitalen Auftragsmappe. , ein Anwenderbericht
|
Autor
|
Thema: Schreibschutz auf Feld (773 mal gelesen)
|
Gerd.A Mitglied Application Engineer
Beiträge: 615 Registriert: 10.06.2003 Compass/PSP alle Versionen Office/Easy/Pro JobServer, Webserver SQL2000/SQL 2005/SQL2008 /R2 /SQL 2012 Vault4-heute alle Versionen Dell M4700 w7-64bit
|
erstellt am: 30. Aug. 2005 17:06 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum Ich möchte beim Ändern eines Datensatzes das das Feld Short_Desc nicht geändert werden kann. So wie es mit Ident oder Filetype gehändelt wird. Ich hab schon alles durchforstet und find nichts was mir auf die Sprünge hilft. Hat jemand von euch eine Idee ???
------------------ Gruß Gerd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WolfgangE Mitglied
Beiträge: 1006 Registriert: 29.01.2003
|
erstellt am: 30. Aug. 2005 18:06 <-- editieren / zitieren --> Unities abgeben: Nur für Gerd.A
Hallo Gerd, das musst per Programmierung lösen, ist beim IDENT zB. auch so gelöst. So bald ein Feld in Compass bearbeitet wird, wird nach einer DBQ-Prozedur mit dem Namen OnUpdate_Feldname gesucht. In dieser kannst du einen return-Wert angeben, der das Update des Felds verhindert. Weiß lieder nicht mehr, wie das genau ausgesehn hat, kann ja auch nicht mehr nachschlagen. Sieh einfach mal in den mitgelieferten DBP-Dateien nach. Kannt auch den Trace einschalten, versuchen das Feld IDENT zu akutalisien, dann findest gleich den Prozedurnamen. Den dann in den DBPs suchen, dann hast eine schöne Vorlage. Ciao, WolfgangE ------------------ An Optimist Is A Person Who Has Not Been Shown All The Facts Yet!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Gerd.A Mitglied Application Engineer
Beiträge: 615 Registriert: 10.06.2003 Compass/PSP alle Versionen Office/Easy/Pro JobServer, Webserver SQL2000/SQL 2005/SQL2008 /R2 /SQL 2012 Vault4-heute alle Versionen Dell M4700 w7-64bit
|
erstellt am: 31. Aug. 2005 12:01 <-- editieren / zitieren --> Unities abgeben:
Hallo Wolfgang Danke für deine Antwort. Eigentlich möcht ich das ja genauso haben wie beim Ident, das es beim ändern direkt ausgegraut wird und gar nicht mehr zum bearbeiten möglich ist. Ich meine auch die richtige Prozedur ( PreUpdateField_IDENT )gefunden zu haben, aber ich find nicht den Punkt wo diese aufgerufen wird. ------------------ Gruß Gerd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WolfgangE Mitglied
Beiträge: 1006 Registriert: 29.01.2003
|
erstellt am: 31. Aug. 2005 12:42 <-- editieren / zitieren --> Unities abgeben: Nur für Gerd.A
Hallo Gerd, mit dem Prozedurnamen bist richtig, ist natürlich die PreUpdateField_IDENT (hab leider nix mehr zum nachsehn da). Den Aufruf wirst in den DBPs nicht finden, diese Prozeduren werden automatisch aufgerufen, sozusagen dann, wenn du in das Feld (hier IDENT) rein klickst, um es zu bearbeiten. Du musst also einfach eine Prozedur PreUpdateField_SHORT_DESC erzeugen und bei deinem EntityType reinhängen, damit sie auch gefunden wird. Über die return-Werte 1 und 0 gibts dann an, ob das Update erlaubt ist oder nicht. Welcher return-Wert was bewirkt, weiß ich leider nicht mehr, musst probieren. Jedenfalls wird deine Prozedur in etwa so aussehn: public PreUpdateField_SHORT_DESC, myProcedure procedure myProcedure return 1; endproc Das war's schon. Kannst dann, wie in jeder anderen Prozedur auch, noch ein paar IF-Abfragen etc. einbauen und das ganze noch flexibler gestalten. Ciao, WolfgangE ------------------ An Optimist Is A Person Who Has Not Been Shown All The Facts Yet!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Gerd.A Mitglied Application Engineer
Beiträge: 615 Registriert: 10.06.2003 Compass/PSP alle Versionen Office/Easy/Pro JobServer, Webserver SQL2000/SQL 2005/SQL2008 /R2 /SQL 2012 Vault4-heute alle Versionen Dell M4700 w7-64bit
|
erstellt am: 01. Sep. 2005 09:47 <-- editieren / zitieren --> Unities abgeben:
Hallo Wolfgang Genau so hab ich es auch gemacht, das doofe ist nur , ich hab auf der falschen Installation getestet. Nehm ich die richtige funktionierts auch. Return 0 = update nicht erlaubt Return 1 = Update erlaubt Eine If abfrage sollte man schon einbauen, sonst kann man das Feld nie füllen ------------------ Gruß Gerd [Diese Nachricht wurde von Gerd.A am 01. Sep. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stephan 2 Mitglied
Beiträge: 326 Registriert: 28.11.2001
|
erstellt am: 05. Sep. 2005 12:22 <-- editieren / zitieren --> Unities abgeben: Nur für Gerd.A
|
Gerd.A Mitglied Application Engineer
Beiträge: 615 Registriert: 10.06.2003 Compass/PSP alle Versionen Office/Easy/Pro JobServer, Webserver SQL2000/SQL 2005/SQL2008 /R2 /SQL 2012 Vault4-heute alle Versionen Dell M4700 w7-64bit
|
erstellt am: 05. Sep. 2005 13:19 <-- editieren / zitieren --> Unities abgeben:
Hallo Stephan Im Designer auf nur lesend setzen würde beim Ident funktionieren, da dort ja eine Nummer generiert wird, somit das Feld ja gefüllt ist. Bei einem anderen Feld z.B SHORT_DESC ( Bezeichnung )füllst du im normalfall den Wert selbst, setzt du es auf nur lesen kannst du bei der neuanlage auch nichts reinschreiben, mußt du aber da es ein Pflichtfeld ist. Du könntest nie einen Datensatz anlegen ------------------ Gruß Gerd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stephan 2 Mitglied
Beiträge: 326 Registriert: 28.11.2001
|
erstellt am: 05. Sep. 2005 13:22 <-- editieren / zitieren --> Unities abgeben: Nur für Gerd.A
|
Gerd.A Mitglied Application Engineer
Beiträge: 615 Registriert: 10.06.2003 Compass/PSP alle Versionen Office/Easy/Pro JobServer, Webserver SQL2000/SQL 2005/SQL2008 /R2 /SQL 2012 Vault4-heute alle Versionen Dell M4700 w7-64bit
|
erstellt am: 05. Sep. 2005 13:27 <-- editieren / zitieren --> Unities abgeben:
|
WolfgangE Mitglied
Beiträge: 1006 Registriert: 29.01.2003
|
erstellt am: 05. Sep. 2005 16:58 <-- editieren / zitieren --> Unities abgeben: Nur für Gerd.A
Zitat: Original erstellt von Gerd.A: Klar wenn ich nat�rlich neue Dialoge kreiere geht es auch , aber daf�r bin ich zu faul Die oben genannte Version ist da eleganter
Nicht nur eleganter, auch wesentlich sicherer. Die Variante mit dem Designer würde ich nicht verwenden, da muss man schon ganz genau wissen wie das mit Profilen, Vererbung etc. funktioniert, um nicht eine böse Ãœberraschung zu erleben. Die Eigenschaften eines Feldes gelten ja immer nur für das aktuelle Datenblatt (im Gegensatz zu den Standardwerten). Fügt sich ein Benutzer das Feld einfach noch mal aus der Feldauswahl ein, und ist das Feld über die Standardwerte (sprich bei den GUIFields des EntityTypes) nicht schreibgeschützt, kann der Benutzer fröhlich drüber schreiben, gar kein Problem (und selbst die Standardwerte müssen zuvor noch mindestens ins Profil CUSTOMER:SYSTEMS veröffentlich werden, sofern diese Änderung nicht direkt in der Konfiguration durchgeführt wird). Desweiteren sind viele Felder ja nicht nur in den Dialogen, sondern auch in diversen Listen zu finden. Die müsstest wiederum anpassen, lückenlos wohlgemerkt. Und wieder gibt es dort die Feldauswahl ... Das Einbinden des in diesem Thead genannten Programms ist so gut wie kei Aufwand (ca. 15 Minuten) und v. a. durchgängig und konsequent. Und kein Benutzer kann da einfach was umgehn. Nur so als Anmerkung :-) Ciao, WolfgangE ------------------ An Optimist Is A Person Who Has Not Been Shown All The Facts Yet!!! [Diese Nachricht wurde von WolfgangE am 05. Sep. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |