Solved

Can you send a WHERE clause from access to Microsoft SQL server

Posted on 2014-11-14
6
278 Views
Last Modified: 2014-11-14
I have a screen in access where I am allowing the user to choose what they do and do not want selected from a query. I am building the WHERE clause dynamically based off of what they select. This query takes way to long to run in access, but only takes about eight seconds in Microsoft SQL server. I have created a stored procedure in SQL server and I want to pass the WHERE clause that I have built into it, but it wants the variable to be set equal to something instead of just the statement in order to prevent SQL injection attacks. I have also tried to use exec() and pass everything as a string, but i have strings in my WHERE clause which prevent the entire string from passing. ex. 'This is a example ' strVar ' that I pass'. Is there any way I can pass the information I want into SQL server?

Thanks
0
Comment
Question by:rcimasi
6 Comments
 
LVL 35

Expert Comment

by:PatHartman
ID: 40443797
You have to build the query in VBA so that all the variables can be expanded first.

strSQL = "Select ...., From ... WHERE ClientID = " & Me.ClientID & " AND " OrderDate > #" & Me.FromDate & "#;"
0
 

Author Comment

by:rcimasi
ID: 40443812
On my form I just have radio buttons, two for each choice, once to include that item, one to not include that item. I do not know what they will choose or if they will choose it. When they select something I simply add it to the WHERE clause.

WhereClause = WhereClause + "tblProject.ProjectStatus = 2"

I then just pass WhereClause into SQL server where it will hopefully run it.
Would I have to create a variable for each item on the page and pass it to SQL server?
0
 
LVL 35

Assisted Solution

by:PatHartman
PatHartman earned 250 total points
ID: 40443828
You need to create the ENTIRE SQL string.  So, create a variable that includes the static part and then concatenate the variable part to make a complete string.  Save the string as a pass-through querydef.  Replace the Form's RecordSource with the name of the new pass-through query.
0
Efficient way to get backups off site to Azure

This user guide provides instructions on how to deploy and configure both a StoneFly Scale Out NAS Enterprise Cloud Drive virtual machine and Veeam Cloud Connect in the Microsoft Azure Cloud.

 
LVL 11

Accepted Solution

by:
John_Vidmar earned 250 total points
ID: 40443839
I too would build the query in VBA:
strSQL = "SELECT ... FROM ... WHERE ..."

if boolean-expression-based-on-what-user-selected then
	strSQL = strSQL + " AND somefield = whatever"
end if

if another-boolean-expression-based-on-a-different-user-selection then
	strSQL = strSQL + " AND someotherfield = somethingelse"
end if

Open in new window

If you are selecting from one table, and there is no initial WHERE-clause then I do this:
strSQL = "SELECT ... FROM ... WHERE 1=1 "

if boolean-expression-based-on-what-user-selected then
	strSQL = strSQL + " AND somefield = whatever"
end if

if another-boolean-expression-based-on-a-different-user-selection then
	strSQL = strSQL + " AND someotherfield = somethingelse"
end if

Open in new window

0
 

Author Comment

by:rcimasi
ID: 40443865
I was able to pass just my WHERE clause into SQL server by creating a variable in SQL server:

@SQL = 'SELECT .... FROM ... WHERE ' + @WhereClause
exec(@SQL)

But building the query in VBA and running the query as exec(@VBA) would work as well.
0
 
LVL 65

Expert Comment

by:Jim Horn
ID: 40443899
Looks like we have a winner here, but in case it helps I have an article called Migrating your Access Queries to SQL Server Transact-SQL that is a big honkin' comparison between Access and SQL Server T-SQL.  If it helps please click the big green 'Was this article helpful?' button at the end.
0

Featured Post

Best Practices: Disaster Recovery Testing

Besides backup, any IT division should have a disaster recovery plan. You will find a few tips below relating to the development of such a plan and to what issues one should pay special attention in the course of backup planning.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
VB.NET 2008 - SQL Timeout 9 24
DCount Type Mismatch 2 22
divide by zero error 23 16
Need help with a Stored Proc on Sql Server 2012 4 10
This article shows gives you an overview on SQL Server 2016 row level security. You will also get to know the usages of row-level-security and how it works
Phishing attempts can come in all forms, shapes and sizes. No matter how familiar you think you are with them, always remember to take extra precaution when opening an email with attachments or links.
Basics of query design. Shows you how to construct a simple query by adding tables, perform joins, defining output columns, perform sorting, and apply criteria.
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

773 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