We help IT Professionals succeed at work.

Unanticipated Results when Executing a SQL stored procedure from Access 2010

508 Views
Last Modified: 2013-12-07
I’ve created a pass-through query in Access which executes a stored procedure that searches for a string across all tables in my SQL database.  The stored procedure on the SQL server runs as expected with results that show all the tables that contain the value in my search string.  However, when I run that same SP using the pass-through query in Access, the Access “view” returns only one table instead of multiple tables that contain my value.  I know the Access interface behaves differently than SQL, but I have a form which is bound to the search result of the pass-through query and I need the users to view all of the tables which contain their search string.
Comment
Watch Question

Commented:
did you check the privileges that the access connection have when you run the query across the sql server? This may be a privilege problem
Darlyne PittTech & CRM Consultant

Author

Commented:
I'm connecting via trust connection to the SQL server as a domain admin so privileges aren't an issue.  There are no error messages and the query executes just fine except it returns only one table.
CERTIFIED EXPERT
Distinguished Expert 2017

Commented:
I don't use stored procedures that return multiple recordsets for this very reason.  You can probably get to the other recordsets if you work with the results in code but not when it is bound to a form.

Create a separate sp for each recordset.
Darlyne PittTech & CRM Consultant

Author

Commented:
Sorry, I misworded my question and should have said that my form is not bound to the search result, I am using the .Connect and .sql properties in code to list the results in an unbound control, but I think I’m incorrectly using the pass-through query.  I will try your approach and let you know how it goes.
CERTIFIED EXPERT
Commented:
This one is on us!
(Get your first solution completely free - no credit card required)
UNLOCK SOLUTION
Darlyne PittTech & CRM Consultant

Author

Commented:
Christian,

Thanks for this.  I changed my method and decided to not use a pass-through query and just call the SP from SQL using VBA:
   'Stored procedure + parameters called from Form
    strSQL = "Exec sqlsp_searchalltables " & Me.txtTables & _
       ", " & "'%" & Me.txtSearchTerm & "%'"

Open in new window

But I think I can now still use your suggestion and use the UNION ALL method in my SP to concatenate the results.  Not sure how to do that, but I'll post a new question if I get stuck.

Darlyne
CERTIFIED EXPERT

Commented:
Hi,

if you use "Execute" in a SQL string you can't use DAO and you must use ADO, that means: It is also a "pass-through" query as you are working with T-SQL and not with Access SQL...;-)

So there would be no difference if you used a "real" pass-through query or ADO, it's both T-SQL. PT Queries are read-only, with ADO you can also write to the result if needed.

A "UNION ALL" query means that you must have the exact number of columns in both (all) SELECTs which are part of the query. For example:

SELECT a,b,c FROM MyTable WHERE ....
UNION ALL
SELECT x,y,z FROM MyOtherTable WHERE....

Open in new window


They also should have the same datatype in the corresponding columns (here: a and x, b and y, c and z) or you must cast them to the same datatype.

Cheers,

Christian
Darlyne PittTech & CRM Consultant

Author

Commented:
Thanks for the additional information on pass-through queries, I didn't know the correct terminology.  I am using ADO, but I may have a problem using the UNION ALL because although my column count can be equal, I not sure I can have the same datatypes.  I'll check.
CERTIFIED EXPERT

Commented:
Hi,

the datatype can be cast to the wanted one, any datatype can be cast as a string for example.

If all other methods fail you could also add an additional parameter to your sp which you can use to only output the wanted return table. In this case you would need to call the same sp as often as needed with a different parameter so that the code in the sp remains in one place but the result set can be switched using this additional parameter.

Cheers,

Christian

Gain unlimited access to on-demand training courses with an Experts Exchange subscription.

Get Access
Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Empower Your Career
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE

Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

  • Troubleshooting
  • Research
  • Professional Opinions
Unlock the solution to this question.
Join our community and discover your potential

Experts Exchange is the only place where you can interact directly with leading experts in the technology field. Become a member today and access the collective knowledge of thousands of technology experts.

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.