Group:  Microsoft Access ยป microsoft.public.access.multiuser
Thread: Relinking code and user-level security

Geek News

Relinking code and user-level security
"BruceM" <bamoob[ at ]yawhodotcalm.not> 6/27/2007 7:33:14 PM
I have a split database with user-level security. I am using code to
refresh the links to the back end tables. Since I am not offering users the
option of navigating to the correct file to reset the links if there is a
problem (the users cannot be counted on to do this), I am using a simpler
version of the code than was at the MVP site. It is in a standard module,
and is as follows (error handling is somewhat simplified):

Public Function RelinkBE() As Boolean

On Error GoTo ReLinkBE_Error

Dim tdf As TableDef
Dim strMsg As String

RelinkBE = True

For Each tdf In CurrentDb.TableDefs
If Len(tdf.Connect) > 0 Then
tdf.RefreshLink
End If
Next tdf
Set tdf = Nothing

ReLinkBE_Exit:
On Error GoTo 0
Exit Function

ReLinkBE_Error:

Select Case Err.Number
Case 3011 'Bad Table Name
strMsg = "Table Not Found."
Case 3024 'File Name Not Found
strMsg = "Database File Name Not Found."
Case 3044 'Path Not found
strMsg = "Database Path Not Found."
Case Else
strMsg = "Error " & Err.Number & " (" & Err.Description & _
") in function ReLinkBE of Module mdlRelink"
End Select

MsgBox strMsg, vbExclamation, "Call Support"
RelinkBE = False

Resume ReLinkBE_Exit

End Function

The code is called in the startup form's Open event. It seems to work as
intended to refresh the links, but it seems that it requires all users to
have full permissions (except Administer) to tables and queries. If a
(test) user is a member of a group that does not have these permissions,
Access throws error message 3033 (You do not have the necessary permissions
to use the "tblMain" object....). The message originates from the ReLinkBE
function.
I would guess the act of refreshing the links involves breaking and
restoring them. To Access, breaking the links before refreshing them is
probably interpreted as deleting the tables, thus full permissions are
needed. This seems to defeat much of the purpose of user level security
(although I have some FE code that restricts permission to the person who
created the record).
Does anybody know what's up here?


Re: Relinking code and user-level security
DAVID <david[ at ]nospam.nspam> 6/28/2007 2:01:37 AM
The permissions required for the link definitions
are seperate to the permissions required on the back
end tables.

You need read-data permissions on the back end
tables.

You need create-delete permissions for new tables
(and the old tabledefs) in the front end database.

The exact details have changed with different
versions of Access: probably best to create
new copies of the FE, BE and MDW if you have
changed versions.

Access.security is a good place to ask this
kind of question: I don't think .multiuser
is relevant.

(david)


BruceM wrote:
[Quoted Text]
> I have a split database with user-level security. I am using code to
> refresh the links to the back end tables. Since I am not offering users the
> option of navigating to the correct file to reset the links if there is a
> problem (the users cannot be counted on to do this), I am using a simpler
> version of the code than was at the MVP site. It is in a standard module,
> and is as follows (error handling is somewhat simplified):
>
> Public Function RelinkBE() As Boolean
>
> On Error GoTo ReLinkBE_Error
>
> Dim tdf As TableDef
> Dim strMsg As String
>
> RelinkBE = True
>
> For Each tdf In CurrentDb.TableDefs
> If Len(tdf.Connect) > 0 Then
> tdf.RefreshLink
> End If
> Next tdf
> Set tdf = Nothing
>
> ReLinkBE_Exit:
> On Error GoTo 0
> Exit Function
>
> ReLinkBE_Error:
>
> Select Case Err.Number
> Case 3011 'Bad Table Name
> strMsg = "Table Not Found."
> Case 3024 'File Name Not Found
> strMsg = "Database File Name Not Found."
> Case 3044 'Path Not found
> strMsg = "Database Path Not Found."
> Case Else
> strMsg = "Error " & Err.Number & " (" & Err.Description & _
> ") in function ReLinkBE of Module mdlRelink"
> End Select
>
> MsgBox strMsg, vbExclamation, "Call Support"
> RelinkBE = False
>
> Resume ReLinkBE_Exit
>
> End Function
>
> The code is called in the startup form's Open event. It seems to work as
> intended to refresh the links, but it seems that it requires all users to
> have full permissions (except Administer) to tables and queries. If a
> (test) user is a member of a group that does not have these permissions,
> Access throws error message 3033 (You do not have the necessary permissions
> to use the "tblMain" object....). The message originates from the ReLinkBE
> function.
> I would guess the act of refreshing the links involves breaking and
> restoring them. To Access, breaking the links before refreshing them is
> probably interpreted as deleting the tables, thus full permissions are
> needed. This seems to defeat much of the purpose of user level security
> (although I have some FE code that restricts permission to the person who
> created the record).
> Does anybody know what's up here?
>
>
Re: Relinking code and user-level security
"BruceM" <bamoob[ at ]yawhodotcalm.not> 6/28/2007 7:40:19 PM
Thanks for the reply. I realized after reading your posting that the table
defs in the FE do not need to be treated like the tables themselves. I have
now restricted the permissions to the BE tables, which will overrule weaker
permissions in the FE, while allowing the FE the functionality it needs.

BTW, I took the unusual (for me) step of cross-posting, since I didn't know
in which group to ask the question.

"DAVID" <david[ at ]nospam.nspam> wrote in message
news:utNmEhSuHHA.4440[ at ]TK2MSFTNGP06.phx.gbl...
[Quoted Text]
> The permissions required for the link definitions
> are seperate to the permissions required on the back
> end tables.
>
> You need read-data permissions on the back end
> tables.
>
> You need create-delete permissions for new tables
> (and the old tabledefs) in the front end database.
>
> The exact details have changed with different
> versions of Access: probably best to create
> new copies of the FE, BE and MDW if you have
> changed versions.
>
> Access.security is a good place to ask this
> kind of question: I don't think .multiuser
> is relevant.
>
> (david)
>
>
> BruceM wrote:
>> I have a split database with user-level security. I am using code to
>> refresh the links to the back end tables. Since I am not offering users
>> the option of navigating to the correct file to reset the links if there
>> is a problem (the users cannot be counted on to do this), I am using a
>> simpler version of the code than was at the MVP site. It is in a
>> standard module, and is as follows (error handling is somewhat
>> simplified):
>>
>> Public Function RelinkBE() As Boolean
>>
>> On Error GoTo ReLinkBE_Error
>>
>> Dim tdf As TableDef
>> Dim strMsg As String
>>
>> RelinkBE = True
>>
>> For Each tdf In CurrentDb.TableDefs
>> If Len(tdf.Connect) > 0 Then
>> tdf.RefreshLink
>> End If
>> Next tdf
>> Set tdf = Nothing
>>
>> ReLinkBE_Exit:
>> On Error GoTo 0
>> Exit Function
>>
>> ReLinkBE_Error:
>>
>> Select Case Err.Number
>> Case 3011 'Bad Table Name
>> strMsg = "Table Not Found."
>> Case 3024 'File Name Not Found
>> strMsg = "Database File Name Not Found."
>> Case 3044 'Path Not found
>> strMsg = "Database Path Not Found."
>> Case Else
>> strMsg = "Error " & Err.Number & " (" & Err.Description & _
>> ") in function ReLinkBE of Module mdlRelink"
>> End Select
>>
>> MsgBox strMsg, vbExclamation, "Call Support"
>> RelinkBE = False
>>
>> Resume ReLinkBE_Exit
>>
>> End Function
>>
>> The code is called in the startup form's Open event. It seems to work as
>> intended to refresh the links, but it seems that it requires all users to
>> have full permissions (except Administer) to tables and queries. If a
>> (test) user is a member of a group that does not have these permissions,
>> Access throws error message 3033 (You do not have the necessary
>> permissions to use the "tblMain" object....). The message originates
>> from the ReLinkBE function.
>> I would guess the act of refreshing the links involves breaking and
>> restoring them. To Access, breaking the links before refreshing them is
>> probably interpreted as deleting the tables, thus full permissions are
>> needed. This seems to defeat much of the purpose of user level security
>> (although I have some FE code that restricts permission to the person who
>> created the record).
>> Does anybody know what's up here?
>>

Home | Search | Terms | Imprint Contact
Newsgroups Reader - provided by WiredBox.Net