[AccessD] Operation must use an updatable query...and it does.

Gustav Brock gustav at cactus.dk
Thu Sep 23 03:55:12 CDT 2004


Hi Christopher

First, specify the control as a parameter:

PARAMETERS [Forms]![frmFcod]![JobID] Long;
UPDATE Job
SET Job.JobNotes =
DCount("Note","tblNotes","JobID =" & [Forms]![frmFcod]![JobID])
WHERE (((Job.JobID)=[Forms]![frmFcod]![JobID]));

If that doesn't work, why not rewrite it:

  PARAMETERS JobNo Long, NoteCount Long;
  UPDATE Job
  SET Job.JobNotes = NoteCount
  WHERE (Job.JobID = JobNo);

and then:

  lngJobID = Nz([Forms]![frmFcod]![JobID], 0)
  lngNoteCount = DCount("Note", "tblNotes", "JobID = " & lngJobID & "")
  Set dbs = CurrentDb()
  Set qdy = dbs.QueryDefs("qryUpdateNotesCount")
  Set qdy.Parameters("JobNo").Value = lngJobID
  Set qdy.Parameters("NoteCount").Value = lngNoteCount
  qdy.Execute
  qdy.Close

This may turn out faster than debugging the current code.

/gustav


> This is weird.

> I'm refitting an Access 2000 app that a client of mine wrote to run
> his business.  One of the issues that has recently started happening
> (after the client exported all the objects from a corrupted MDB into
> a fresh MDB container) is that a query being run from a form triggers
> the following error:

> "Operation must use an updatable query"

> Here is the code that is firing the query:

> [code]  

> DoCmd.SetWarnings False
> DoCmd.OpenQuery "qryUpdateNotesCount"
> DoCmd.SetWarnings True

> [/code]

> Primitive, but OK.  I figure the query is written incorrectly or has
> recently been changed, and prepare myself to go clean it up/fix it. 
> But here's the kicker:

> 1) This exact code - and this exact query - has been running fine for
> years.  I can dig up previous versions of the app with this code and
> query in them, and this line of code executes just fine.

> 2) If I actually go to the queries tab and double-click
> qryUpdateNoteCount, it works just fine, even immediately after trying
> to execute that code and throwing an error.

> So now I'm scratching my head.  This is very perplexing.  This is the
> only build of the app in which this line of code errors out.  Yet, I
> can manually execute the query just fine in this build.  Even worse,
> it only fails on some machines.  Whiskey Tango Foxtrot, over?  This
> used to work on every machine in the house.  

> Here is the syntax of the query:

> [code]

> UPDATE Job SET Job.JobNotes = DCount("Note","tblNotes","JobID =" &
> [forms]![frmfcod]![jobid])
> WHERE (((Job.JobID)=[Forms]![frmFcod]![JobID]));
> [/code]

> I decompiled, recompiled, compacted & repaired.  No change.

> I am considering going through the app and replacing this line of
> code with something else to update this field.  But I'm loathe to do
> so until I understand why the failure is occurring to start with.

> Any ideas?

> -Christopher Hawkins, the Great and Terrible-
> Respectfully,

> Christopher Hawkins
> Software Developer
> (559) 687-7591
> http://www.christopherhawkins.com




More information about the AccessD mailing list