Solved

Using Queries with a Linked Database

Posted on 2013-01-10
5
175 Views
Last Modified: 2013-01-22
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
Comment
Question by:Buck_Beasom
  • 2
  • 2
5 Comments
 
LVL 61

Expert Comment

by:mbizup
ID: 38762616
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
 
LVL 47

Expert Comment

by:Dale Fye (Access MVP)
ID: 38763015
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
 

Author Comment

by:Buck_Beasom
ID: 38774164
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
 
LVL 47

Accepted Solution

by:
Dale Fye (Access MVP) earned 500 total points
ID: 38774233
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
 

Author Closing Comment

by:Buck_Beasom
ID: 38806782
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

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Experts-Exchange is a great place to come for help with solutions for your database issues, and many problems are resolved within minutes of being posted.  Others take a little more time and effort and often providing a sample database is very helpf…
A simple tool to export all objects of two Access files as text and compare it with Meld, a free diff tool.
What’s inside an Access Desktop Database. Will look at the basic interface, Navigation Pane (Database Container), Tables, Queries, Forms, Report, Macro’s, and VBA code.
In Microsoft Access, learn how to use Dlookup and other domain aggregate functions and one method of specifying a string value within a string. Specify the first argument, which is the expression to be returned: Specify the second argument, which …

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

26 Experts available now in Live!

Get 1:1 Help Now