• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 186
  • Last Modified:

Using Queries with a Linked Database

I'm building an application that manages a large amount if imported data and is used by a number of users. I have split the tables out from the rest of the application in the usual way, with the "Back End" parked up on the server.

Unfortunately, at the request of the user group, I can't embed the various queries in the code - as is my usual practice. Instead, the query names are stored in a table and executed in a sequence managed within that table.

Equally unfortunate, however, is that this methodology requires all of the queries to reside in the BACK END .accdb. In addition, any Make Table queries that are executed break the links to the back end tables and replace them with the new tables in the client .accdb.

Both of these are a royal pain in the neck!

Is there a way around this, assuming that use of the "DoCmd.OpenQuery strQueryName" method is something I am stuck with?

Thanks.
0
Buck_Beasom
Asked:
Buck_Beasom
  • 2
  • 2
1 Solution
 
mbizupCommented:
Try this revision to your back-end queries:

SELECT YourField
INTO YourTable IN "C:\YourPath\YourTargetDBName.mdb"
FROM YourTable
'etc

Open in new window


You can use an IN clause to specify a given database.
0
 
Dale FyeCommented:
You might want to take a look at my article on Creating and Using Temporary Tables.

Additionally, you indicate that " this methodology requires all of the queries to reside in the BACK END .accdb"; this is not true. Although the Table containing the query names resides in the BE, the code (and queries) are still processed in the FE; the queries must reside in the Front End.

Also, if you are running ACTION queries (Make table, Append, Delete, Update) then you should not be using DoCmd.OpenQuery, you should be using the Execute method, like:

db.Execute strSQL, dbFailOnError

OR

db.QueryDefs("QueryName").Execute dbFailOnError
0
 
Buck_BeasomDatabase DesignerAuthor Commented:
Fyed.

Thanks. Your comments helped, but before closing the question I would like some more input on the alternative query execution methods you provided. Why are these better for Action queries than DoCmd?

Thanks.
0
 
Dale FyeCommented:
Because the Execute method (which is available for both the database and querydefs) has an optional Options argument associated with it.  One of those options is 'dbFailOnError', which will raise an error if your query fails to execute (which is not the case with the RunSQL method).

Theoretically, if you check for the values in your fields, make sure they are the right data types, ... you should not have any errors when you run an Action query, but you NEVER know what a user might enter in a textbox, and the ability to trap for errors is the major advantage of using the Execute method.

HTH
Dale
0
 
Buck_BeasomDatabase DesignerAuthor Commented:
Thanks. I did notice that if I am executing a query that joins a query and a table, the query for the embedded SQL must be in the back end .accdb, but that is the only case.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Easily Design & Build Your Next Website

Squarespace’s all-in-one platform gives you everything you need to express yourself creatively online, whether it is with a domain, website, or online store. Get started with your free trial today, and when ready, take 10% off your first purchase with offer code 'EXPERTS'.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now