Well, that's no ordinary rabbit!
The Challenge: A request for a multiple type query that only one person can edit - the person who first entered a response.
Initial Solution: Add a second query that stores the user id of the person who first enters the response. Add an IFE attribute on the multiple query that only allows the cursor to stop there if there is no response yet or if the current user matches the response to the second query.
The Problem: Since query one is a multiple type there could be more lines of text off screen that users could not see.
Final Solution: Use a modified version of the word wrap attribute written by Joe Cocuzzo of Iatric Systems. The IFE attribute would then display the text in a text editor for the initial user and in a text viewer for other users.
TJT.M.TEXT
Uses an IFE attribute to load either a text editor or text
viewer
IFE=IF{%MIS.QUERY.zcus.is.M.edit(ANS,R,S,"",
IFE=IF{[ANS,"TJT.M.TEXT","M",1]|0_.=.!
IFE=(/.USR=[ANS,"TJT.M.USER"]|0);""),"";""}
The call to the macro has 5 arguments.- ANS, R, S, MAX, EDIT/VIEW. The only change from Joe's original attribute is the addition of a 5th argument - EDIT/VIEW. If that argument has a value the text is displayed in a text viewer window. If it has no value the text is loaded into a text editor window. See below for the changes to the macro itself.
TJT.M.USER
Uses IFE and REQ attributes to store the ID of the user who
first answers the TJT.M.TEXT query
IFE=IF{[ANS,"TJT.M.TEXT","M",1]|0_.'=.&([ANS,"TJT.M.USER"]|0_.=.)
IFE= /.USR^/[ANS%0,"TJT.M.USER"]|0,"";""}
REQ=IF{[ANS,"TJT.M.TEXT","M",1]|0_.'=.&([ANS,"TJT.M.USER"]|0_.=.)
REQ= /.USR^/[ANS%0,"TJT.M.USER"]|0,"";""}
TJT.M.OK
A simple Y/N prompt only there so I could stay on the CDS after exiting the text editor/viewer. It has no impact on how the rest of the CDS functions.
TJT.M.LABEL
A label type query that displays the "Press to exit the text editor" text
; --
EDIT macro
IF{/.GUI 2;0}^OS,
IF{'E "Z.text.ed.shell";"Z.view.shell"}^PGM,
%[PGM](^/IAT,ROW+OS,(ROW+OS+@multiple.line-1),@length,COL,"","","","",MAX)^CHG,
IF{/Z=147 13^/Z}
There are 2 changes here. The first is the addition of code to make the text window display properly using Workstation 4+. The second is the change in code to use either a text editor or text viewer depending on the E argument. This is not the full macro code but it does show the all the changes I made to Joe's original macro. You can view and download the full macro from Iatric Systems web site.
Don't see what you
need? Visit one of these other sites
or email me your request (tomt at thomast357.com).