cancel
Showing results for 
Search instead for 
Did you mean: 

Opening schedules as read only?

0 Kudos

Hi all,

we have an input schedule that gives users a reference number (MS 7.5 version). However, sometimes users open the schedule at the same time and both get the same number. Is there a way to prevent a schedule from opening if another users already has it open?

Regards,

Marco

Accepted Solutions (0)

Answers (3)

Answers (3)

former_member186498
Active Contributor
0 Kudos

Hi Marco,

through BPC it isn't possible. If you need it you have to write vb code writing a singleton class that works on server or memorizing a on/off value on a custom table and test it on Workbook_Open closing the workbook if is already on.

Remember to set to off when closing and that if crashes the value remains on and you have to change it manually.

Regards

     Roberto

0 Kudos

Hi Roberto and others,

thanks for the reply. I sort of expected that it was not possible.

I have been pointed to another option to deal with my problem which is to refresh part of the schedule before actually sending the data, in which case the reference number gets updated before sending. Do you know about any documentation I can look at for that solution?

former_member186498
Active Contributor
0 Kudos

Hi Marco,

sorry but I don't understood your solution. You want to stop an input schedules if the same is yet open, now you speak to refresh a schedule before sending data but if you refresh it you will loose all the changes the user made ... Please explain better your idea.

Regards

     Roberto

0 Kudos

Hi Roberto,

i have been told that it was possible to refresh only parts/specific ranges within an input schedule. So what I am thinking of is to have a macro button to refresh/send the data from the schedule but before the relevant VBA runs the formula

MNU_eSUBMIT_REFSCHEDULEBOOK_CLEARANDREFRESH

it firsts triggers a formula that refreshes an EVGET somewhere in schedule.

So the process would be:

1) Open schedule - This will refresh on opening and create a reference number (via EVGET) based on numbers already existing in the database (latest +1)

2) user will input description and press a "Create" button

3) VBA is triggered to first update 1 specific EVGET in the schedule and then do the send and refresh as per above mentioned BPC statement.

Hope this is a bit more clear.

former_member186498
Active Contributor
0 Kudos

Hi Marco,

maybe I don't have understood your idea, ok to use an EVGET to update the fact table so you avoid to create a custom table but for me the process should be, supposing you have a record for each schedule with name and value setted to 1:

1) on workbook open test the value  of "this workbook" locking this record, if it is more then 1 you close the workbook with a msg "already opened" and free it otherwise you increment the value and free it.

2)leave user enter data

3) on close workbook you diminuish by 1 or update to 1 the value.

The problem is that you can't through ev functions lock the data between read and send so there is a possibility that 2 users read at the same moment the value 1 and update +1 in a fration of second thinking they are the only user that works on it.

You can accept this risk or you have to test again after update if the value is 2, if ok you proceed otherwise you close the workbook with a msg.

2) user will input description and press a "Create" button

sorry I don't understood this point at all, description and create button for what?

Regards

     Roberto

0 Kudos

Hi Roberto,

lets start again, forget about the above.

I have a schedule in which the user is assigned a reference number. It is a relatively straigt forward schedule. There is an EVGET that retrieves the last used number from the database and adds 1. This is then the new number.

So for example, numbers 1,2,3,4 have been used, so when the user opens the input schedule the user will get number 5 assigned. The user then inputs a comment and sends the number back to the database with that comment (and of course other master data combinations) and will use that for future reference.

Now the issue with this is that if 2 users open the input schedule at more or less the same time they will both get number 5 assigned. The first user sending his/her comment and other data is fine. However, once the second user send his/her comment and other data we end up with a reference number being in the system twice with different combinations. That causes issues.

The first thing I tought about preventing this is users not being able to open the input schedule at the same time. As in the above replies this would mean VBA coding which i do not really want to do.

So my new thought was to have the input schedule "refreshing" the EVGET that calculates the reference number without refreshing the rest of the schedule. So when the second user is sending the data there is a quick check if number 5 is actually still the correct reference number, and if not the number gets changed to 6.

Now I understood that there is a formula/command within BPC that allows only a specific range within the template to refresh, leaving the other areas in the template as they were. So in my case, it updates the reference number but it does not refresh the area where the users has put his/her comment. My question now is, is that understanding correct, and if so, where can I find some documentation on how that formula/commands works.

Marco

former_member186498
Active Contributor
0 Kudos

Hi Marco,

now it's clear your question, link for the MNU commands , I don't know if there is a command that do what you want, the MNU you indicate doesn't seems to do only a partial refresh but it seems it will send and refresh all the workbook.

Regards

     Roberto

Former Member
0 Kudos

Hi Marco,

you cannot prevent a second user from opening the schedule at the same time. The only thing you can do is set concurrent locking so that whilst data is written by one user another user cannot save to the same dimension elements.

BR,
Arnold

Shrikant_Jadhav
Active Contributor
0 Kudos

Hi Marco,

I think in BPC we don;t have that kind of functionality i,e, concurrent locking.

Shrikant