From: sparks on
I also tried it with this which has no group by

SELECT Query32.PersonID, Query100.rowhead, Query32.FirstName,
Query32.LastName, Query32.ParentName, Query32.ParentAddress,
Query32.School, Query32.MissedVisitmark, Query100.Dia1, Query100.Sys1,
Query100.Dia2, Query100.Sys2, Query100.Dia3, Query100.Sys3,
Int(Switch(([Dia1]<90 And [sys1]<90),1,(([Dia2]<90 And [sys2]<90) Or
([dia3]<90 And [sys3]<90)),2,[MissedVisitmark]=1,3,(([dia1]>=95 Or
[sys1]>=95)) And ([dia2]>=95 Or [sys2]>=95) And ([dia3]>=95 Or
[sys3]>=95),5,(([dia1]>=90 Or [sys1]>=90)) And ([dia2]>=90 Or
[sys2]>=90) Or ([dia3]>=90 Or [sys3]>=90),4)) AS LETTERS,
Query32.ExportCode, Query32.ExportFile
FROM Query32 RIGHT JOIN Query100 ON Query32.AUTOID = Query100.rowhead
WHERE (((Int(Switch(([Dia1]<90 And [sys1]<90),1,(([Dia2]<90 And
[sys2]<90) Or ([dia3]<90 And
[sys3]<90)),2,[MissedVisitmark]=1,3,(([dia1]>=95 Or [sys1]>=95)) And
([dia2]>=95 Or [sys2]>=95) And ([dia3]>=95 Or
[sys3]>=95),5,(([dia1]>=90 Or [sys1]>=90)) And ([dia2]>=90 Or
[sys2]>=90) Or ([dia3]>=90 Or [sys3]>=90),4)))=1))
ORDER BY Query100.rowhead;

Same error.

remember this is NOT an update query.

It is saying that it is not updateable.

it is saying I can not set the values in the tables

SET tbldemo.ExportCode = 1, tbldemo.exportfile=""" &
Letterstring & """;")

On Mon, 02 Aug 2010 15:07:19 GMT, Bob Quintal <rquintal(a)sPAmpatico.ca>
wrote:

>The query below is most definitely NOT UPDATEABLE.
>It contains a Group By Clause. No query with a Group By clause is
>updateable.
>
>Bob
>
>sparks <sparks(a)home.com> wrote in
>news:25ld569u61uh9su5j071al3gi11ovn6t6s(a)4ax.com:
>
>>
>> SELECT Query32.PersonID, Query100.rowhead, Query32.FirstName,
>> Query32.LastName, Query32.ParentName, Query32.ParentAddress,
>> Query32.School, Query32.MissedVisitmark, Query100.Dia1,
>> Query100.Sys1, Query100.Dia2, Query100.Sys2, Query100.Dia3,
>> Query100.Sys3, Int(Switch(([Dia1]<90 And [sys1]<90),1,(([Dia2]<90
>> And [sys2]<90) Or ([dia3]<90 And
>> [sys3]<90)),2,[MissedVisitmark]=1,3,(([dia1]>=95 Or [sys1]>=95))
>> And ([dia2]>=95 Or [sys2]>=95) And ([dia3]>=95 Or
>> [sys3]>=95),5,(([dia1]>=90 Or [sys1]>=90)) And ([dia2]>=90 Or
>> [sys2]>=90) Or ([dia3]>=90 Or [sys3]>=90),4)) AS LETTERS,
>> Query32.ExportCode, Query32.ExportFile FROM Query32 RIGHT JOIN
>> Query100 ON Query32.AUTOID = Query100.rowhead GROUP BY
>> Query32.ChildsID, Query100.rowhead, Query32.FirstName,
>> Query32.LastName, Query32.ParentName, Query32.ParentAddress,
>> Query32.School, Query32.MissedVisitmark, Query100.Dia1,
>> Query100.Sys1, Query100.Dia2, Query100.Sys2, Query100.Dia3,
>> Query100.Sys3, Int(Switch(([Dia1]<90 And [sys1]<90),1,(([Dia2]<90
>> And [sys2]<90) Or ([dia3]<90 And
>> [sys3]<90)),2,[MissedVisitmark]=1,3,(([dia1]>=95 Or [sys1]>=95))
>> And ([dia2]>=95 Or [sys2]>=95) And ([dia3]>=95 Or
>> [sys3]>=95),5,(([dia1]>=90 Or [sys1]>=90)) And ([dia2]>=90 Or
>> [sys2]>=90) Or ([dia3]>=90 Or [sys3]>=90),4)), Query32.ExportCode,
>> Query32.ExportFile
>> HAVING (((Int(Switch(([Dia1]<90 And [sys1]<90),1,(([Dia2]<90 And
>> [sys2]<90) Or ([dia3]<90 And
>> [sys3]<90)),2,[MissedVisitmark]=1,3,(([dia1]>=95 Or [sys1]>=95))
>> And ([dia2]>=95 Or [sys2]>=95) And ([dia3]>=95 Or
>> [sys3]>=95),5,(([dia1]>=90 Or [sys1]>=90)) And ([dia2]>=90 Or
>> [sys2]>=90) Or ([dia3]>=90 Or [sys3]>=90),4)))=1))
>> ORDER BY Query100.rowhead;
>>
>> I did not use any wild cards.
>>
>> I do not understand why I can do this type of query in other
>> (previous databases) and all is fine.
>> I just did this database this month.
>> I am using a mail merge and updating the exportcode to show that
>> it has been printed.
>>
>> I am updating the table tbldemo based on matches listed in the
>> query.
>> SET tbldemo.ExportCode = 1, tbldemo.exportfile=""" &
>> Letterstring & """;")
>>
>> I have done this in the past and don't see what updatable query
>> has to do with it.
>>
>> What threw me at first was I thought it said update query
>> But its updateable query.
>>
>>
>>
>> On Mon, 2 Aug 2010 10:06:27 -0400, "Mark Andrews"
>> <mandrews___NOSPAM___(a)rptsoftware.com> wrote:
>>
>>>I know I have seen a few weird things when a query is in the mix
>>>of the join and it uses a .* to show all fields.
>>>
>>>Otherwise I'm sure other could help more if you supply the sql for
>>>qryletter1
>>>
>>>Mark
>>>
>>>"sparks" <sparks(a)home.com> wrote in message
>>>news:cbgd56trqc89goef5t92db8cok7h6ld6p7(a)4ax.com...
>>>>
>>>>
>>>> Call MergeAllWord(Letterstring, "qryletter1", "Normal",
>>>> strDir:=DirToPath("word\", False))
>>>>
>>>> this is the query
>>>>
>>>> DoCmd.RunSQL ("UPDATE qryletter1" & " INNER JOIN
>>>> tbldemo ON qryletter1" & ".PersonID = tbldemo.PersonID" & _
>>>> " SET tbldemo.ExportCode = 1,
>>>> tbldemo.exportfile=""" &
>>>> Letterstring & """;")
>>>>
>>>>
>>>> it is supposed to find the exports in qryletter1 that are
>>>> missing and print the letters with missing exportcode, and it
>>>> does. but when it hits this command to update tbldemo I get
>>>>
>>>> Operation Must use and Updateable Query
>>>>
>>>>
>>>>
>>>> On Mon, 02 Aug 2010 06:59:44 -0500, sparks <sparks(a)home.com>
>>>> wrote:
>>>>
>>>>>I am starting to see this in anything new we build.
>>>>>Everything that is already built is working fine.
>>>>>
>>>>>Is this some security update on the machines themselves.
>>>>>Most people are running windows 7 but some are still on XP.
>>>>>
>>>>>
>>>>>
>>>>>looked on the ms pages
>>>>>
>>>>>Operation must use and updatable query
>>>>>
>>>>>The most common reason is that the Internet Guest account
>>>>>(IUSR_MACHINE), which is by default part of the "Everyone"
>>>>>group, does not have Write permissions on the database file
>>>>>(.mdb). To fix this problem, use the Security tab in Explorer to
>>>>>adjust the properties for this file so that the Internet Guest
>>>>>account has the correct permissions.
>>>>>
>>>>>A second cause of this error is that the database was not opened
>>>>>with the correct MODE for writing.
>>>>>
>>>>>
>>>>>Anyone know what to look for to determine problems on new files
>>>>>that work fine on old files.
From: sparks on
I even made an update query

UPDATE TblDemo INNER JOIN Qryletter1 ON TblDemo.PersonID=
Qryletter1.PersonID SET TblDemo.ExportCode =
[qryletter1].[exportcode], TblDemo.ExportFile =
[Qryletter1].[exportfile];

this will not run saying that

Operation must use an Updateable query



On Mon, 02 Aug 2010 15:07:19 GMT, Bob Quintal <rquintal(a)sPAmpatico.ca>
wrote:

>The query below is most definitely NOT UPDATEABLE.
>It contains a Group By Clause. No query with a Group By clause is
>updateable.
>
>Bob
>
>sparks <sparks(a)home.com> wrote in
>news:25ld569u61uh9su5j071al3gi11ovn6t6s(a)4ax.com:
>
>>
>> SELECT Query32.PersonID, Query100.rowhead, Query32.FirstName,
>> Query32.LastName, Query32.ParentName, Query32.ParentAddress,
>> Query32.School, Query32.MissedVisitmark, Query100.Dia1,
>> Query100.Sys1, Query100.Dia2, Query100.Sys2, Query100.Dia3,
>> Query100.Sys3, Int(Switch(([Dia1]<90 And [sys1]<90),1,(([Dia2]<90
>> And [sys2]<90) Or ([dia3]<90 And
>> [sys3]<90)),2,[MissedVisitmark]=1,3,(([dia1]>=95 Or [sys1]>=95))
>> And ([dia2]>=95 Or [sys2]>=95) And ([dia3]>=95 Or
>> [sys3]>=95),5,(([dia1]>=90 Or [sys1]>=90)) And ([dia2]>=90 Or
>> [sys2]>=90) Or ([dia3]>=90 Or [sys3]>=90),4)) AS LETTERS,
>> Query32.ExportCode, Query32.ExportFile FROM Query32 RIGHT JOIN
>> Query100 ON Query32.AUTOID = Query100.rowhead GROUP BY
>> Query32.ChildsID, Query100.rowhead, Query32.FirstName,
>> Query32.LastName, Query32.ParentName, Query32.ParentAddress,
>> Query32.School, Query32.MissedVisitmark, Query100.Dia1,
>> Query100.Sys1, Query100.Dia2, Query100.Sys2, Query100.Dia3,
>> Query100.Sys3, Int(Switch(([Dia1]<90 And [sys1]<90),1,(([Dia2]<90
>> And [sys2]<90) Or ([dia3]<90 And
>> [sys3]<90)),2,[MissedVisitmark]=1,3,(([dia1]>=95 Or [sys1]>=95))
>> And ([dia2]>=95 Or [sys2]>=95) And ([dia3]>=95 Or
>> [sys3]>=95),5,(([dia1]>=90 Or [sys1]>=90)) And ([dia2]>=90 Or
>> [sys2]>=90) Or ([dia3]>=90 Or [sys3]>=90),4)), Query32.ExportCode,
>> Query32.ExportFile
>> HAVING (((Int(Switch(([Dia1]<90 And [sys1]<90),1,(([Dia2]<90 And
>> [sys2]<90) Or ([dia3]<90 And
>> [sys3]<90)),2,[MissedVisitmark]=1,3,(([dia1]>=95 Or [sys1]>=95))
>> And ([dia2]>=95 Or [sys2]>=95) And ([dia3]>=95 Or
>> [sys3]>=95),5,(([dia1]>=90 Or [sys1]>=90)) And ([dia2]>=90 Or
>> [sys2]>=90) Or ([dia3]>=90 Or [sys3]>=90),4)))=1))
>> ORDER BY Query100.rowhead;
>>
>> I did not use any wild cards.
>>
>> I do not understand why I can do this type of query in other
>> (previous databases) and all is fine.
>> I just did this database this month.
>> I am using a mail merge and updating the exportcode to show that
>> it has been printed.
>>
>> I am updating the table tbldemo based on matches listed in the
>> query.
>> SET tbldemo.ExportCode = 1, tbldemo.exportfile=""" &
>> Letterstring & """;")
>>
>> I have done this in the past and don't see what updatable query
>> has to do with it.
>>
>> What threw me at first was I thought it said update query
>> But its updateable query.
>>
>>
>>
>> On Mon, 2 Aug 2010 10:06:27 -0400, "Mark Andrews"
>> <mandrews___NOSPAM___(a)rptsoftware.com> wrote:
>>
>>>I know I have seen a few weird things when a query is in the mix
>>>of the join and it uses a .* to show all fields.
>>>
>>>Otherwise I'm sure other could help more if you supply the sql for
>>>qryletter1
>>>
>>>Mark
>>>
>>>"sparks" <sparks(a)home.com> wrote in message
>>>news:cbgd56trqc89goef5t92db8cok7h6ld6p7(a)4ax.com...
>>>>
>>>>
>>>> Call MergeAllWord(Letterstring, "qryletter1", "Normal",
>>>> strDir:=DirToPath("word\", False))
>>>>
>>>> this is the query
>>>>
>>>> DoCmd.RunSQL ("UPDATE qryletter1" & " INNER JOIN
>>>> tbldemo ON qryletter1" & ".PersonID = tbldemo.PersonID" & _
>>>> " SET tbldemo.ExportCode = 1,
>>>> tbldemo.exportfile=""" &
>>>> Letterstring & """;")
>>>>
>>>>
>>>> it is supposed to find the exports in qryletter1 that are
>>>> missing and print the letters with missing exportcode, and it
>>>> does. but when it hits this command to update tbldemo I get
>>>>
>>>> Operation Must use and Updateable Query
>>>>
>>>>
>>>>
>>>> On Mon, 02 Aug 2010 06:59:44 -0500, sparks <sparks(a)home.com>
>>>> wrote:
>>>>
>>>>>I am starting to see this in anything new we build.
>>>>>Everything that is already built is working fine.
>>>>>
>>>>>Is this some security update on the machines themselves.
>>>>>Most people are running windows 7 but some are still on XP.
>>>>>
>>>>>
>>>>>
>>>>>looked on the ms pages
>>>>>
>>>>>Operation must use and updatable query
>>>>>
>>>>>The most common reason is that the Internet Guest account
>>>>>(IUSR_MACHINE), which is by default part of the "Everyone"
>>>>>group, does not have Write permissions on the database file
>>>>>(.mdb). To fix this problem, use the Security tab in Explorer to
>>>>>adjust the properties for this file so that the Internet Guest
>>>>>account has the correct permissions.
>>>>>
>>>>>A second cause of this error is that the database was not opened
>>>>>with the correct MODE for writing.
>>>>>
>>>>>
>>>>>Anyone know what to look for to determine problems on new files
>>>>>that work fine on old files.
From: Salad on
sparks wrote:

> I even made an update query
>
> UPDATE TblDemo INNER JOIN Qryletter1 ON TblDemo.PersonID=
> Qryletter1.PersonID SET TblDemo.ExportCode =
> [qryletter1].[exportcode], TblDemo.ExportFile =
> [Qryletter1].[exportfile];
>
> this will not run saying that
>
> Operation must use an Updateable query

What is QryLetter1? If it uses a Group By, you are out of luck.

You could update via a recordset. You could make values returned from
QryLetter1 into a table and append from the table.

If you read Bob's reply and did not understand it you are going down a
road that will fail.


>
>
>
> On Mon, 02 Aug 2010 15:07:19 GMT, Bob Quintal <rquintal(a)sPAmpatico.ca>
> wrote:
>
>
>>The query below is most definitely NOT UPDATEABLE.
>>It contains a Group By Clause. No query with a Group By clause is
>>updateable.
>>
>>Bob
>>
>>sparks <sparks(a)home.com> wrote in
>>news:25ld569u61uh9su5j071al3gi11ovn6t6s(a)4ax.com:
>>
>>
>>>SELECT Query32.PersonID, Query100.rowhead, Query32.FirstName,
>>>Query32.LastName, Query32.ParentName, Query32.ParentAddress,
>>>Query32.School, Query32.MissedVisitmark, Query100.Dia1,
>>>Query100.Sys1, Query100.Dia2, Query100.Sys2, Query100.Dia3,
>>>Query100.Sys3, Int(Switch(([Dia1]<90 And [sys1]<90),1,(([Dia2]<90
>>>And [sys2]<90) Or ([dia3]<90 And
>>>[sys3]<90)),2,[MissedVisitmark]=1,3,(([dia1]>=95 Or [sys1]>=95))
>>>And ([dia2]>=95 Or [sys2]>=95) And ([dia3]>=95 Or
>>>[sys3]>=95),5,(([dia1]>=90 Or [sys1]>=90)) And ([dia2]>=90 Or
>>>[sys2]>=90) Or ([dia3]>=90 Or [sys3]>=90),4)) AS LETTERS,
>>>Query32.ExportCode, Query32.ExportFile FROM Query32 RIGHT JOIN
>>>Query100 ON Query32.AUTOID = Query100.rowhead GROUP BY
>>>Query32.ChildsID, Query100.rowhead, Query32.FirstName,
>>>Query32.LastName, Query32.ParentName, Query32.ParentAddress,
>>>Query32.School, Query32.MissedVisitmark, Query100.Dia1,
>>>Query100.Sys1, Query100.Dia2, Query100.Sys2, Query100.Dia3,
>>>Query100.Sys3, Int(Switch(([Dia1]<90 And [sys1]<90),1,(([Dia2]<90
>>>And [sys2]<90) Or ([dia3]<90 And
>>>[sys3]<90)),2,[MissedVisitmark]=1,3,(([dia1]>=95 Or [sys1]>=95))
>>>And ([dia2]>=95 Or [sys2]>=95) And ([dia3]>=95 Or
>>>[sys3]>=95),5,(([dia1]>=90 Or [sys1]>=90)) And ([dia2]>=90 Or
>>>[sys2]>=90) Or ([dia3]>=90 Or [sys3]>=90),4)), Query32.ExportCode,
>>>Query32.ExportFile
>>>HAVING (((Int(Switch(([Dia1]<90 And [sys1]<90),1,(([Dia2]<90 And
>>>[sys2]<90) Or ([dia3]<90 And
>>>[sys3]<90)),2,[MissedVisitmark]=1,3,(([dia1]>=95 Or [sys1]>=95))
>>>And ([dia2]>=95 Or [sys2]>=95) And ([dia3]>=95 Or
>>>[sys3]>=95),5,(([dia1]>=90 Or [sys1]>=90)) And ([dia2]>=90 Or
>>>[sys2]>=90) Or ([dia3]>=90 Or [sys3]>=90),4)))=1))
>>>ORDER BY Query100.rowhead;
>>>
>>>I did not use any wild cards.
>>>
>>>I do not understand why I can do this type of query in other
>>>(previous databases) and all is fine.
>>>I just did this database this month.
>>>I am using a mail merge and updating the exportcode to show that
>>>it has been printed.
>>>
>>>I am updating the table tbldemo based on matches listed in the
>>>query.
>>> SET tbldemo.ExportCode = 1, tbldemo.exportfile=""" &
>>> Letterstring & """;")
>>>
>>>I have done this in the past and don't see what updatable query
>>>has to do with it.
>>>
>>>What threw me at first was I thought it said update query
>>>But its updateable query.
>>>
>>>
>>>
>>>On Mon, 2 Aug 2010 10:06:27 -0400, "Mark Andrews"
>>><mandrews___NOSPAM___(a)rptsoftware.com> wrote:
>>>
>>>
>>>>I know I have seen a few weird things when a query is in the mix
>>>>of the join and it uses a .* to show all fields.
>>>>
>>>>Otherwise I'm sure other could help more if you supply the sql for
>>>>qryletter1
>>>>
>>>>Mark
>>>>
>>>>"sparks" <sparks(a)home.com> wrote in message
>>>>news:cbgd56trqc89goef5t92db8cok7h6ld6p7(a)4ax.com...
>>>>
>>>>>
>>>>> Call MergeAllWord(Letterstring, "qryletter1", "Normal",
>>>>>strDir:=DirToPath("word\", False))
>>>>>
>>>>>this is the query
>>>>>
>>>>> DoCmd.RunSQL ("UPDATE qryletter1" & " INNER JOIN
>>>>>tbldemo ON qryletter1" & ".PersonID = tbldemo.PersonID" & _
>>>>> " SET tbldemo.ExportCode = 1,
>>>>> tbldemo.exportfile=""" &
>>>>>Letterstring & """;")
>>>>>
>>>>>
>>>>>it is supposed to find the exports in qryletter1 that are
>>>>>missing and print the letters with missing exportcode, and it
>>>>>does. but when it hits this command to update tbldemo I get
>>>>>
>>>>>Operation Must use and Updateable Query
>>>>>
>>>>>
>>>>>
>>>>>On Mon, 02 Aug 2010 06:59:44 -0500, sparks <sparks(a)home.com>
>>>>>wrote:
>>>>>
>>>>>
>>>>>>I am starting to see this in anything new we build.
>>>>>>Everything that is already built is working fine.
>>>>>>
>>>>>>Is this some security update on the machines themselves.
>>>>>>Most people are running windows 7 but some are still on XP.
>>>>>>
>>>>>>
>>>>>>
>>>>>>looked on the ms pages
>>>>>>
>>>>>>Operation must use and updatable query
>>>>>>
>>>>>>The most common reason is that the Internet Guest account
>>>>>>(IUSR_MACHINE), which is by default part of the "Everyone"
>>>>>>group, does not have Write permissions on the database file
>>>>>>(.mdb). To fix this problem, use the Security tab in Explorer to
>>>>>>adjust the properties for this file so that the Internet Guest
>>>>>>account has the correct permissions.
>>>>>>
>>>>>>A second cause of this error is that the database was not opened
>>>>>>with the correct MODE for writing.
>>>>>>
>>>>>>
>>>>>>Anyone know what to look for to determine problems on new files
>>>>>>that work fine on old files.
From: Bob Quintal on
sparks <sparks(a)home.com> wrote in
news:a6ud56ttleop9b4l57lpovrlna9afiddel(a)4ax.com:

> I also tried it with this which has no group by
>
> SELECT Query32.PersonID, Query100.rowhead, Query32.FirstName,
> Query32.LastName, Query32.ParentName, Query32.ParentAddress,
> Query32.School, Query32.MissedVisitmark, Query100.Dia1,
> Query100.Sys1, Query100.Dia2, Query100.Sys2, Query100.Dia3,
> Query100.Sys3, Int(Switch(([Dia1]<90 And [sys1]<90),1,(([Dia2]<90
> And [sys2]<90) Or ([dia3]<90 And
> [sys3]<90)),2,[MissedVisitmark]=1,3,(([dia1]>=95 Or [sys1]>=95))
> And ([dia2]>=95 Or [sys2]>=95) And ([dia3]>=95 Or
> [sys3]>=95),5,(([dia1]>=90 Or [sys1]>=90)) And ([dia2]>=90 Or
> [sys2]>=90) Or ([dia3]>=90 Or [sys3]>=90),4)) AS LETTERS,
> Query32.ExportCode, Query32.ExportFile FROM Query32 RIGHT JOIN
> Query100 ON Query32.AUTOID = Query100.rowhead WHERE
> (((Int(Switch(([Dia1]<90 And [sys1]<90),1,(([Dia2]<90 And
> [sys2]<90) Or ([dia3]<90 And
> [sys3]<90)),2,[MissedVisitmark]=1,3,(([dia1]>=95 Or [sys1]>=95))
> And ([dia2]>=95 Or [sys2]>=95) And ([dia3]>=95 Or
> [sys3]>=95),5,(([dia1]>=90 Or [sys1]>=90)) And ([dia2]>=90 Or
> [sys2]>=90) Or ([dia3]>=90 Or [sys3]>=90),4)))=1))
> ORDER BY Query100.rowhead;
>
> Same error.
>
> remember this is NOT an update query.
>
> It is saying that it is not updateable.
>
> it is saying I can not set the values in the tables
>
> SET tbldemo.ExportCode = 1, tbldemo.exportfile=""" &
> Letterstring & """;")
>

study http://allenbrowne.com/ser-61.html
titled Why is my query read-only?

We've eliminated the first reason. The next six are probably not
aplicable. That leaves seven other possibilities.

Since nobody but you can see your table structure, nor the called
queries, you'll need to work your way through the list item by item.

Good luck.
From: Bob Barrows on
sparks wrote:
> I am starting to see this in anything new we build.
> Everything that is already built is working fine.
>
> Is this some security update on the machines themselves.
> Most people are running windows 7 but some are still on XP.
>
>
>
> looked on the ms pages
>
> Operation must use and updatable query
>
> The most common reason is that the Internet Guest account
> (IUSR_MACHINE), which is by default part of the "Everyone" group, does
> not have Write permissions on the database file (.mdb). To fix this
> problem, use the Security tab in Explorer to adjust the properties for
> this file so that the Internet Guest account has the correct
> permissions.

That is incomplete. All users require Modify permissions on the _folder_
containing the mdb file. That is because users need to create, modify
and delete the .ldb file that is used to control multi-user activity.

I'm not saying that is the cause of your problem. Are you using a .mdb
file as the backend for an ASP application? Is that why you cited that
solution? In ASP, identifying the user whose account is being used is
the key. If your site is set to allow Anonymous access, and you have not
set up an account for the IUSR account to impersonate, then the relevant
user account is indeed, the IUSR_Machine account. In addition, the
IWAM_Machine account could also be relevant if you are accessing the
database in application or server start or end events. If you are using
Integrated Security and Anonymous is turned off, then the account of the
user who requested the page is the relevant account.

As others have said, permissions is not the only cause of this error.
Certain queries can not be used for updates. GROUP BY is a prime
example. Read Allen's article as sited by the other Bob :-)
> study http://allenbrowne.com/ser-61.html
> titled Why is my query read-only?

--
HTH,
Bob Barrows