Write Access by Column not Row
Hi all,
I have a module setup with a list as the rows, and line items as the columns (there is only one line item, a boolean). I wanted to have it so each row (i.e. each item in the list) has it's own write access driver, but of course due to the nature of modules, in the blueprint view there is only one driver as it's per line item not per list item.
I guess I could have a long chain of ifs to fulfill this but that seems inefficient; is there a better way of setting this up so that each list item has it's own write access driver?
Regards,
Sam
Best Answer
-
Yeah, so esiest way is to just chain IF/THEN/ELSE.
But if you have more than few conditions to chain, then you might use solution I've mentioned above:
1. Make your drivers numeric (1 is TRUE, 0 is FALSE)
2. Create line item subset (LISS) and add drivers to it
3. Map LISS to items on your rows list (in some SYS module)
4. Add CALC module with your dimensions (probably without rows?) + LISS, add Boolean line item and set formula to "COLLECT()=1"
5. in DCA module, you need to convert CALC from LISS to your rows dimension using LOOKUP, and you can now apply it to the grid.1
Answers
-
For List Item level access it is controlled by SELECTIVE ACCESS and not necessarily by Drivers. You can use Selective access in Users section provided you already have that list enabled on Selective Access.
Hope that helps
Misbah
MIZ LOGIX
0 -
@Misbah- I don't want to disable access to the list everywhere, I just want to disable write access under certain conditions in this module alone. I beleive that adding selective access restrictions would apply across modules?
0 -
Ah I see! but you can still apply DCA.
If you have a logic in place then you can write a formula in boolean formatted line item (in a module dimensioned by the same list) and then place that line item in Write Access Driver in the blueprint. I think it will work
If you have some screenshots that I can mimick I will quickly try to create it
Misbah
MIZ LOGIX0 -
It depends on exactly what kind of drivers need to be used separately for each row. If they are separate, non-numeric line items, then unfortunately yes - you need to use long IF/ELSE, or experiment with Boolean logic using OR/AND. If they are number formatted, you can use COLLECT(), and then just map it to your rows.0
-
@Misbah thanks - here are screenshots of the module. Ideally the drivers are based on other states, e.g. "submitted to country" cannot be modified if "submitted to region" is checked.
0 -
@M.Kierepka - The drivers are based on other items in the same module, e.g. "submitted to country" cannot be modified if "submitted to region" is checked.
0 -
EDIT: Nevermind, I can use the ITEM() function.
Hey @M.Kierepka,So wondering if you could elaborate on the best way to achieve this - I think I understand what you mean but am missing something. Below is the current module (headers are a list), 'status driver' being the row that will control access to the row above:
Essentially, everything except the first item in status should have no write access, then if the first one is checked, the next becomes unchecked and so on.
0