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?





Best Answer

  • M.Kierepka
    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.


  • Misbah



    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- 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?

  • Misbah



    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



  • 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.
  • @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.






  • @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.

  • 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.