|
|
|
date: Wed, 26 Sep 2007 20:48:44 +0700,
group: microsoft.public.access.multiuser
back
Re: User access security and user names in table records
If those codes(after update and after insert event) were put together in
the form, the result after a new record
were inserted will be the same value.
The next time that recods were changed/update, the 'ModifiedBy' field wil
change.
The 'User Name' is not windows user name, it can be msaccess Current User or
an additional variable that anyone should insert it whenever application
start.
"BruceM" wrote in message
news:%23Oxkcc4$HHA.3916@TK2MSFTNGP02.phx.gbl...
> Note that the After Insert invent applies to new records, so would have no
> effect on an updated record (if I understand the Insert event correctly).
> However, the OP only mentioned adding the name to a new record, so it may
> not matter.
> Note that my suggestion would insert the Access CurrentUser. If the
> question is about using the Windows user name, I can't tell if your code
> will produce that result, but I do know that most people regard an API as
> the most reliable method:
> http://www.mvps.org/access/api/api0008.htm
>
> In either case, running SQL may be unnecessarily complex. Inserting the
> value into the field should be adequate.
>
> "Bobby" wrote in message
> news:A2B335A0-B1B8-406A-94D2-9A9DD60EF821@microsoft.com...
>> It's really make sense... I did it in my applications too
>> First you have to make sure every user to login to your application
>> if neccecery put them in groups too.
>> Then add two field to put the information of the user who added and
>> changed
>> the rows,
>> eg. Table name: MyTable
>> Rec_ID : indexed, autonumber, not null
>> "Created_By" and "Modified_By" (two field for the informations)
>>
>> To put information about added record:
>> In form(s) after insert event put these codes
>>
>> sql = "Update MyTable set Created_By='User_Name' where Rec_ID=" &
>> Me!Rec_ID
>> Docmd.runsql sql
>>
>> To put information about changed record:
>> In form(s) after insert event put these codes
>>
>> sql = "Update MyTable set Modified_By='User_Name' where Rec_ID=" &
>> Me!Rec_ID
>> Docmd.runsql sql
>>
>> In additions you can put information about the date and time those
>> records
>> added/created
>>
>> I hope it could help
>>
>> p.s. : I'm sorry if you find a wrong spelling in the codes above cause I
>> wrote it straight in mail
>> I use MSAccess 2003, the codes works in mdb or adp (in adp you can
>> also write a trigger in the table)
>>
>> Cheers
>>
>> Bobby
>>
>> "Nick" wrote in message
>> news:28077E2D-35E8-4F25-9AF3-D545B7B590AA@microsoft.com...
>>> Hello All
>>>
>>> I wonder if anyone can help?
>>>
>>> I am building a multiple user database with user access security and I
>>> would
>>> like to add some code so that every record added by each user has that
>>> user's
>>> user name included in each record... if that makes any sense?
>>>
>>> Does anyone know how to do this at all?
>>>
>>> I would be willing to make a contribution for a complete solution.
>>>
>>> Many thanks in advance and kind regards
>>>
>>> Nick
>>>
>>>
>>>
>>
>
>
date: Wed, 26 Sep 2007 20:48:44 +0700
author: Bobby
Re: User access security and user names in table records
You said to use the After Insert event for a new record and for a modified
record. It will work for a new record, but not for a modified record.
The OP mentioned "user access security", which I took to mean Access
User-Level Security. If each user has a separate name in the secure mdw
file, CurrentUser will accomplish what the OP needs.
I think I understand that 'User Name' in your code is a placeholder for
whatever value needs to be inserted, but the trick is using an actual value
in the string.
If it was me I would use something like:
Me.ModifiedBy = CurrentUser
in an appropriate event. Running SQL seems to me more than is needed.
However, the OP seems to have lost interest in the topic, so our
recommendations don't really matter for purposes of this discussion.
"Bobby" wrote in message
news:2003CB6C-4B98-4315-8BC9-2A1156030C81@microsoft.com...
> If those codes(after update and after insert event) were put together in
> the form, the result after a new record
> were inserted will be the same value.
>
> The next time that recods were changed/update, the 'ModifiedBy' field wil
> change.
> The 'User Name' is not windows user name, it can be msaccess Current User
> or
> an additional variable that anyone should insert it whenever application
> start.
>
> "BruceM" wrote in message
> news:%23Oxkcc4$HHA.3916@TK2MSFTNGP02.phx.gbl...
>> Note that the After Insert invent applies to new records, so would have
>> no effect on an updated record (if I understand the Insert event
>> correctly). However, the OP only mentioned adding the name to a new
>> record, so it may not matter.
>> Note that my suggestion would insert the Access CurrentUser. If the
>> question is about using the Windows user name, I can't tell if your code
>> will produce that result, but I do know that most people regard an API as
>> the most reliable method:
>> http://www.mvps.org/access/api/api0008.htm
>>
>> In either case, running SQL may be unnecessarily complex. Inserting the
>> value into the field should be adequate.
>>
>> "Bobby" wrote in message
>> news:A2B335A0-B1B8-406A-94D2-9A9DD60EF821@microsoft.com...
>>> It's really make sense... I did it in my applications too
>>> First you have to make sure every user to login to your application
>>> if neccecery put them in groups too.
>>> Then add two field to put the information of the user who added and
>>> changed
>>> the rows,
>>> eg. Table name: MyTable
>>> Rec_ID : indexed, autonumber, not null
>>> "Created_By" and "Modified_By" (two field for the informations)
>>>
>>> To put information about added record:
>>> In form(s) after insert event put these codes
>>>
>>> sql = "Update MyTable set Created_By='User_Name' where Rec_ID=" &
>>> Me!Rec_ID
>>> Docmd.runsql sql
>>>
>>> To put information about changed record:
>>> In form(s) after insert event put these codes
>>>
>>> sql = "Update MyTable set Modified_By='User_Name' where Rec_ID=" &
>>> Me!Rec_ID
>>> Docmd.runsql sql
>>>
>>> In additions you can put information about the date and time those
>>> records
>>> added/created
>>>
>>> I hope it could help
>>>
>>> p.s. : I'm sorry if you find a wrong spelling in the codes above cause I
>>> wrote it straight in mail
>>> I use MSAccess 2003, the codes works in mdb or adp (in adp you
>>> can
>>> also write a trigger in the table)
>>>
>>> Cheers
>>>
>>> Bobby
>>>
>>> "Nick" wrote in message
>>> news:28077E2D-35E8-4F25-9AF3-D545B7B590AA@microsoft.com...
>>>> Hello All
>>>>
>>>> I wonder if anyone can help?
>>>>
>>>> I am building a multiple user database with user access security and I
>>>> would
>>>> like to add some code so that every record added by each user has that
>>>> user's
>>>> user name included in each record... if that makes any sense?
>>>>
>>>> Does anyone know how to do this at all?
>>>>
>>>> I would be willing to make a contribution for a complete solution.
>>>>
>>>> Many thanks in advance and kind regards
>>>>
>>>> Nick
>>>>
>>>>
>>>>
>>>
>>
>>
>
date: Wed, 26 Sep 2007 10:23:30 -0400
author: BruceM
Re: User access security and user names in table records
Well, it's allways interesting to discuss about security in access.
I had to admit that the codes I wrote were ment to use it in adp... (event i
tried it in mdb),so the use of SQL statement were not a problem.
Yes I see it too, that the OP has another discussion in this groups.
But I would like to talk about this (access security) for further use and
applies another times.
Thank's for the sharing
"BruceM" wrote in message
news:O9TURjEAIHA.1184@TK2MSFTNGP04.phx.gbl...
> You said to use the After Insert event for a new record and for a modified
> record. It will work for a new record, but not for a modified record.
> The OP mentioned "user access security", which I took to mean Access
> User-Level Security. If each user has a separate name in the secure mdw
> file, CurrentUser will accomplish what the OP needs.
> I think I understand that 'User Name' in your code is a placeholder for
> whatever value needs to be inserted, but the trick is using an actual
> value in the string.
> If it was me I would use something like:
> Me.ModifiedBy = CurrentUser
> in an appropriate event. Running SQL seems to me more than is needed.
> However, the OP seems to have lost interest in the topic, so our
> recommendations don't really matter for purposes of this discussion.
>
> "Bobby" wrote in message
> news:2003CB6C-4B98-4315-8BC9-2A1156030C81@microsoft.com...
>> If those codes(after update and after insert event) were put together in
>> the form, the result after a new record
>> were inserted will be the same value.
>>
>> The next time that recods were changed/update, the 'ModifiedBy' field wil
>> change.
>> The 'User Name' is not windows user name, it can be msaccess Current User
>> or
>> an additional variable that anyone should insert it whenever application
>> start.
>>
>> "BruceM" wrote in message
>> news:%23Oxkcc4$HHA.3916@TK2MSFTNGP02.phx.gbl...
>>> Note that the After Insert invent applies to new records, so would have
>>> no effect on an updated record (if I understand the Insert event
>>> correctly). However, the OP only mentioned adding the name to a new
>>> record, so it may not matter.
>>> Note that my suggestion would insert the Access CurrentUser. If the
>>> question is about using the Windows user name, I can't tell if your code
>>> will produce that result, but I do know that most people regard an API
>>> as the most reliable method:
>>> http://www.mvps.org/access/api/api0008.htm
>>>
>>> In either case, running SQL may be unnecessarily complex. Inserting the
>>> value into the field should be adequate.
>>>
>>> "Bobby" wrote in message
>>> news:A2B335A0-B1B8-406A-94D2-9A9DD60EF821@microsoft.com...
>>>> It's really make sense... I did it in my applications too
>>>> First you have to make sure every user to login to your application
>>>> if neccecery put them in groups too.
>>>> Then add two field to put the information of the user who added and
>>>> changed
>>>> the rows,
>>>> eg. Table name: MyTable
>>>> Rec_ID : indexed, autonumber, not null
>>>> "Created_By" and "Modified_By" (two field for the informations)
>>>>
>>>> To put information about added record:
>>>> In form(s) after insert event put these codes
>>>>
>>>> sql = "Update MyTable set Created_By='User_Name' where Rec_ID=" &
>>>> Me!Rec_ID
>>>> Docmd.runsql sql
>>>>
>>>> To put information about changed record:
>>>> In form(s) after insert event put these codes
>>>>
>>>> sql = "Update MyTable set Modified_By='User_Name' where Rec_ID=" &
>>>> Me!Rec_ID
>>>> Docmd.runsql sql
>>>>
>>>> In additions you can put information about the date and time those
>>>> records
>>>> added/created
>>>>
>>>> I hope it could help
>>>>
>>>> p.s. : I'm sorry if you find a wrong spelling in the codes above cause
>>>> I
>>>> wrote it straight in mail
>>>> I use MSAccess 2003, the codes works in mdb or adp (in adp you
>>>> can
>>>> also write a trigger in the table)
>>>>
>>>> Cheers
>>>>
>>>> Bobby
>>>>
>>>> "Nick" wrote in message
>>>> news:28077E2D-35E8-4F25-9AF3-D545B7B590AA@microsoft.com...
>>>>> Hello All
>>>>>
>>>>> I wonder if anyone can help?
>>>>>
>>>>> I am building a multiple user database with user access security and I
>>>>> would
>>>>> like to add some code so that every record added by each user has that
>>>>> user's
>>>>> user name included in each record... if that makes any sense?
>>>>>
>>>>> Does anyone know how to do this at all?
>>>>>
>>>>> I would be willing to make a contribution for a complete solution.
>>>>>
>>>>> Many thanks in advance and kind regards
>>>>>
>>>>> Nick
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>
>
>
date: Wed, 26 Sep 2007 22:16:16 +0700
author: Bobby
Re: User access security and user names in table records
Hello All
I'm sorry I haven't lost interest in this topic at all. I am simply trying
to get up to speed with the level of debate whilst actually building the
database and making stategic decisions as I go along.
I reiterate I am still willing to make a contribution for a complete answer...
but maybe I should clarify first and update you with my progress.
I have decided not to use Microsoft Access user level security as this will
be a bit difficult to manage with staff turnover.
Instead I would like to code my form to read the network logon of the user
and grant access only according to a list of approved users possibly held in
a separate table.
Is this possible?
Thank you all for sharing your knowlegde and expertise this is most
appreciated
I may need to call on this in a more formalised way latter on as my deadline
looms!
Best wishes, Nick
Best wishes
"Bobby" wrote:
> Well, it's allways interesting to discuss about security in access.
> I had to admit that the codes I wrote were ment to use it in adp... (event i
> tried it in mdb),so the use of SQL statement were not a problem.
>
> Yes I see it too, that the OP has another discussion in this groups.
> But I would like to talk about this (access security) for further use and
> applies another times.
> Thank's for the sharing
> "BruceM" wrote in message
> news:O9TURjEAIHA.1184@TK2MSFTNGP04.phx.gbl...
> > You said to use the After Insert event for a new record and for a modified
> > record. It will work for a new record, but not for a modified record.
> > The OP mentioned "user access security", which I took to mean Access
> > User-Level Security. If each user has a separate name in the secure mdw
> > file, CurrentUser will accomplish what the OP needs.
> > I think I understand that 'User Name' in your code is a placeholder for
> > whatever value needs to be inserted, but the trick is using an actual
> > value in the string.
> > If it was me I would use something like:
> > Me.ModifiedBy = CurrentUser
> > in an appropriate event. Running SQL seems to me more than is needed.
> > However, the OP seems to have lost interest in the topic, so our
> > recommendations don't really matter for purposes of this discussion.
> >
> > "Bobby" wrote in message
> > news:2003CB6C-4B98-4315-8BC9-2A1156030C81@microsoft.com...
> >> If those codes(after update and after insert event) were put together in
> >> the form, the result after a new record
> >> were inserted will be the same value.
> >>
> >> The next time that recods were changed/update, the 'ModifiedBy' field wil
> >> change.
> >> The 'User Name' is not windows user name, it can be msaccess Current User
> >> or
> >> an additional variable that anyone should insert it whenever application
> >> start.
> >>
> >> "BruceM" wrote in message
> >> news:%23Oxkcc4$HHA.3916@TK2MSFTNGP02.phx.gbl...
> >>> Note that the After Insert invent applies to new records, so would have
> >>> no effect on an updated record (if I understand the Insert event
> >>> correctly). However, the OP only mentioned adding the name to a new
> >>> record, so it may not matter.
> >>> Note that my suggestion would insert the Access CurrentUser. If the
> >>> question is about using the Windows user name, I can't tell if your code
> >>> will produce that result, but I do know that most people regard an API
> >>> as the most reliable method:
> >>> http://www.mvps.org/access/api/api0008.htm
> >>>
> >>> In either case, running SQL may be unnecessarily complex. Inserting the
> >>> value into the field should be adequate.
> >>>
> >>> "Bobby" wrote in message
> >>> news:A2B335A0-B1B8-406A-94D2-9A9DD60EF821@microsoft.com...
> >>>> It's really make sense... I did it in my applications too
> >>>> First you have to make sure every user to login to your application
> >>>> if neccecery put them in groups too.
> >>>> Then add two field to put the information of the user who added and
> >>>> changed
> >>>> the rows,
> >>>> eg. Table name: MyTable
> >>>> Rec_ID : indexed, autonumber, not null
> >>>> "Created_By" and "Modified_By" (two field for the informations)
> >>>>
> >>>> To put information about added record:
> >>>> In form(s) after insert event put these codes
> >>>>
> >>>> sql = "Update MyTable set Created_By='User_Name' where Rec_ID=" &
> >>>> Me!Rec_ID
> >>>> Docmd.runsql sql
> >>>>
> >>>> To put information about changed record:
> >>>> In form(s) after insert event put these codes
> >>>>
> >>>> sql = "Update MyTable set Modified_By='User_Name' where Rec_ID=" &
> >>>> Me!Rec_ID
> >>>> Docmd.runsql sql
> >>>>
> >>>> In additions you can put information about the date and time those
> >>>> records
> >>>> added/created
> >>>>
> >>>> I hope it could help
> >>>>
> >>>> p.s. : I'm sorry if you find a wrong spelling in the codes above cause
> >>>> I
> >>>> wrote it straight in mail
> >>>> I use MSAccess 2003, the codes works in mdb or adp (in adp you
> >>>> can
> >>>> also write a trigger in the table)
> >>>>
> >>>> Cheers
> >>>>
> >>>> Bobby
> >>>>
> >>>> "Nick" wrote in message
> >>>> news:28077E2D-35E8-4F25-9AF3-D545B7B590AA@microsoft.com...
> >>>>> Hello All
> >>>>>
> >>>>> I wonder if anyone can help?
> >>>>>
> >>>>> I am building a multiple user database with user access security and I
> >>>>> would
> >>>>> like to add some code so that every record added by each user has that
> >>>>> user's
> >>>>> user name included in each record... if that makes any sense?
> >>>>>
> >>>>> Does anyone know how to do this at all?
> >>>>>
> >>>>> I would be willing to make a contribution for a complete solution.
> >>>>>
> >>>>> Many thanks in advance and kind regards
> >>>>>
> >>>>> Nick
> >>>>>
> >>>>>
> >>>>>
> >>>>
> >>>
> >>>
> >>
> >
> >
>
>
date: Thu, 27 Sep 2007 02:31:00 -0700
author: Nick
Re: User access security and user names in table records
There are some ways of creating homemade security. I couldn't attest to
their effectiveness, and I don't know if they will answer your needs, but
here is a link:
http://www.utteraccess.com/forums/showflat.php?Cat=&Board=48&Number=373275&page=1&view=collapsed&sb=5&o=&fpart=1
Watch for line wrapping in your newsreader. Look for the Attachment link in
the message header.
Access user-level security would be simple enough to manage if you assign
permissions to groups. Just add a new user to a group. You could assign a
default password, then have the user change the password upon initial login.
Or you could test for a password, and bring up a password form if the
password is blank. I won't go into the details, since it sounds as if you
are not going to use user-level security anyhow, but I do want to point out
that after the initial setup, user-level security is fairly simple to
administer.
Having said that, you could use DLookup to see if the network logon matches
a name in a table. If it does not, generate a message box and exit the
application. I haven't really tried anything of the sort, but I expect the
necessary code could be in the Activate event of the first form, or
something of that sort. It may look something like:
Dim strCriteria as String
strCriteria = "[LogonName] = """ & fOSUserName & """"
If IsNull(DLookup("[LogonName]","tblLogOnNames",strCriteria)) Then
MsgBox "You don't have permission to use this database"
DoCmd.Quit
End If
This assumes you have used the code in the link that points to the API for
getting the logon name (fOSUserName)
"Nick" wrote in message
news:32446AE8-AC7B-4133-B4C1-12D4BE3783E4@microsoft.com...
> Hello All
>
> I'm sorry I haven't lost interest in this topic at all. I am simply trying
> to get up to speed with the level of debate whilst actually building the
> database and making stategic decisions as I go along.
>
> I reiterate I am still willing to make a contribution for a complete
> answer...
>
> but maybe I should clarify first and update you with my progress.
>
> I have decided not to use Microsoft Access user level security as this
> will
> be a bit difficult to manage with staff turnover.
>
> Instead I would like to code my form to read the network logon of the user
> and grant access only according to a list of approved users possibly held
> in
> a separate table.
>
> Is this possible?
>
> Thank you all for sharing your knowlegde and expertise this is most
> appreciated
>
> I may need to call on this in a more formalised way latter on as my
> deadline
> looms!
>
> Best wishes, Nick
> Best wishes
> "Bobby" wrote:
>
>> Well, it's allways interesting to discuss about security in access.
>> I had to admit that the codes I wrote were ment to use it in adp...
>> (event i
>> tried it in mdb),so the use of SQL statement were not a problem.
>>
>> Yes I see it too, that the OP has another discussion in this groups.
>> But I would like to talk about this (access security) for further use and
>> applies another times.
>> Thank's for the sharing
>> "BruceM" wrote in message
>> news:O9TURjEAIHA.1184@TK2MSFTNGP04.phx.gbl...
>> > You said to use the After Insert event for a new record and for a
>> > modified
>> > record. It will work for a new record, but not for a modified record.
>> > The OP mentioned "user access security", which I took to mean Access
>> > User-Level Security. If each user has a separate name in the secure
>> > mdw
>> > file, CurrentUser will accomplish what the OP needs.
>> > I think I understand that 'User Name' in your code is a placeholder for
>> > whatever value needs to be inserted, but the trick is using an actual
>> > value in the string.
>> > If it was me I would use something like:
>> > Me.ModifiedBy = CurrentUser
>> > in an appropriate event. Running SQL seems to me more than is needed.
>> > However, the OP seems to have lost interest in the topic, so our
>> > recommendations don't really matter for purposes of this discussion.
>> >
>> > "Bobby" wrote in message
>> > news:2003CB6C-4B98-4315-8BC9-2A1156030C81@microsoft.com...
>> >> If those codes(after update and after insert event) were put together
>> >> in
>> >> the form, the result after a new record
>> >> were inserted will be the same value.
>> >>
>> >> The next time that recods were changed/update, the 'ModifiedBy' field
>> >> wil
>> >> change.
>> >> The 'User Name' is not windows user name, it can be msaccess Current
>> >> User
>> >> or
>> >> an additional variable that anyone should insert it whenever
>> >> application
>> >> start.
>> >>
>> >> "BruceM" wrote in message
>> >> news:%23Oxkcc4$HHA.3916@TK2MSFTNGP02.phx.gbl...
>> >>> Note that the After Insert invent applies to new records, so would
>> >>> have
>> >>> no effect on an updated record (if I understand the Insert event
>> >>> correctly). However, the OP only mentioned adding the name to a new
>> >>> record, so it may not matter.
>> >>> Note that my suggestion would insert the Access CurrentUser. If the
>> >>> question is about using the Windows user name, I can't tell if your
>> >>> code
>> >>> will produce that result, but I do know that most people regard an
>> >>> API
>> >>> as the most reliable method:
>> >>> http://www.mvps.org/access/api/api0008.htm
>> >>>
>> >>> In either case, running SQL may be unnecessarily complex. Inserting
>> >>> the
>> >>> value into the field should be adequate.
>> >>>
>> >>> "Bobby" wrote in message
>> >>> news:A2B335A0-B1B8-406A-94D2-9A9DD60EF821@microsoft.com...
>> >>>> It's really make sense... I did it in my applications too
>> >>>> First you have to make sure every user to login to your application
>> >>>> if neccecery put them in groups too.
>> >>>> Then add two field to put the information of the user who added and
>> >>>> changed
>> >>>> the rows,
>> >>>> eg. Table name: MyTable
>> >>>> Rec_ID : indexed, autonumber, not null
>> >>>> "Created_By" and "Modified_By" (two field for the informations)
>> >>>>
>> >>>> To put information about added record:
>> >>>> In form(s) after insert event put these codes
>> >>>>
>> >>>> sql = "Update MyTable set Created_By='User_Name' where Rec_ID=" &
>> >>>> Me!Rec_ID
>> >>>> Docmd.runsql sql
>> >>>>
>> >>>> To put information about changed record:
>> >>>> In form(s) after insert event put these codes
>> >>>>
>> >>>> sql = "Update MyTable set Modified_By='User_Name' where Rec_ID=" &
>> >>>> Me!Rec_ID
>> >>>> Docmd.runsql sql
>> >>>>
>> >>>> In additions you can put information about the date and time those
>> >>>> records
>> >>>> added/created
>> >>>>
>> >>>> I hope it could help
>> >>>>
>> >>>> p.s. : I'm sorry if you find a wrong spelling in the codes above
>> >>>> cause
>> >>>> I
>> >>>> wrote it straight in mail
>> >>>> I use MSAccess 2003, the codes works in mdb or adp (in adp
>> >>>> you
>> >>>> can
>> >>>> also write a trigger in the table)
>> >>>>
>> >>>> Cheers
>> >>>>
>> >>>> Bobby
>> >>>>
>> >>>> "Nick" wrote in message
>> >>>> news:28077E2D-35E8-4F25-9AF3-D545B7B590AA@microsoft.com...
>> >>>>> Hello All
>> >>>>>
>> >>>>> I wonder if anyone can help?
>> >>>>>
>> >>>>> I am building a multiple user database with user access security
>> >>>>> and I
>> >>>>> would
>> >>>>> like to add some code so that every record added by each user has
>> >>>>> that
>> >>>>> user's
>> >>>>> user name included in each record... if that makes any sense?
>> >>>>>
>> >>>>> Does anyone know how to do this at all?
>> >>>>>
>> >>>>> I would be willing to make a contribution for a complete solution.
>> >>>>>
>> >>>>> Many thanks in advance and kind regards
>> >>>>>
>> >>>>> Nick
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>
>> >>>
>> >>>
>> >>
>> >
>> >
>>
>>
date: Thu, 27 Sep 2007 07:50:48 -0400
author: BruceM
|
|