Solved

searching the database sql server dynamically

Posted on 2012-03-21
6
143 Views
Last Modified: 2012-04-18
Hi there,

i have an asp.net website with the 3 tier, and i have connect sql server database with it. now im implementing the search crateria, i have put 3 checkboxlist controls on the page. and also have two text boxes one for searching postcode and other for any business like Mcdonalds or pizza hut etc, and a search button.
my question is that when a user enter a post code or a business name or any of them can be empty as well, and also when the user select any of the checkbox in the checkbox list , as he can select either one or two or as many as he wants, so how i will make a stored procedure in sql server depending on the checkboxes selected in the checkboxlist. like if two checkboxes selected then the stored procedure should return me the result only for them two checkboxes, if more then return for them more its depends on the checkboxlist.

Any help appreciated as i am stuck now.

Thanks
0
Comment
Question by:shah36
6 Comments
 
LVL 16

Expert Comment

by:brad2575
ID: 37746801
If you are doing this in a Stored Procedure you would pass all the variables to the Stored Procedure (if not do the following logic in the ASP code).

Then build out a string with your select statment, somethign like this (SQL CODE):

DIM SQLCode varchar(MAX)
-- doing 1=1 because easier when adding dynamic "AND" statements to force a single where no matter what
Set SQLCODE = "Select FieldList From Table WHERE 1=1"

if ISNULL(checkboxvariable, '') <> ''
    SET SQLCode = SQLCODE + 'AND fieldfromTable = ''' + checboxvariable + '''
   -- using 3 single quotes above for escape sequence so it forces 1 single quote to appear int he string


-- do the same for all the variable fields above

Then

EXEC(SQLCode)
0
 
LVL 20

Accepted Solution

by:
BuggyCoder earned 500 total points
ID: 37746802
CREATE TABLE [dbo].[SalesHistory]
  (        
        @PostCode varchar(10),        
        @BusinessName varchar(10),
        @Val1 varchar(10),
        @Val2 varchar(10),
        @Val3 varchar(10),
  )
  GO              

  SET NOCOUNT ON             
  BEGIN
  DECLARE @SelectStatement NVARCHAR(2000)
  DECLARE @FullStatement NVARCHAR(4000)     
  SET @WhereStatement = '';

  SET @SelectStatement = 'SELECT * FROM SalesHistory '
  
  If(@PostCode<>null)
  BEGIN
  SET @WhereStatement = @WhereStatement + "PostCode='" + @PostCode + "' ";
  END

  If(@BusinessName<>null)
  BEGIN
  SET @WhereStatement = @WhereStatement + "AND BusinessName='" + @BusinessName + "'";
  END
  --And So On for other variables
  if(len(@WhereStatement)>0)
  BEGIN
  SET @WhereStatement = " Where " + @WhereStatement
  END

  SET @SelectStatement=@SelectStatement + @WhereStatement;
  print @SelectStatement;
  EXECUTE sp_executesql @SelectStatement;
  END

Open in new window


Basically where are generating dynamic query here:-
http://www.zdnetasia.com/generate-dynamic-sql-statements-in-sql-server-62040277.htm
0
 

Author Comment

by:shah36
ID: 37746850
Hi thanx brad and buggycoder for the reply.

is it possible i implement it on sql server side , in a stored procedure of sql server.

as i have mentioned im working on a 3 tier so i need to keep seperate the database from the business logic..so i need to implement it in sql server and then use the parameters to access it.

any help ?
0
PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

 
LVL 20

Expert Comment

by:BuggyCoder
ID: 37746857
CREATE Procedure usp_fetchdata
        @PostCode varchar(10),        
        @BusinessName varchar(10),
        @Val1 varchar(10),
        @Val2 varchar(10),
        @Val3 varchar(10),
AS

 
  BEGIN

  SET NOCOUNT ON;

  DECLARE @SelectStatement NVARCHAR(2000)
  DECLARE @FullStatement NVARCHAR(4000)     
  SET @WhereStatement = '';

  SET @SelectStatement = 'SELECT * FROM SalesHistory '
  
  If(@PostCode<>null)
  BEGIN
  SET @WhereStatement = @WhereStatement + "PostCode='" + @PostCode + "' ";
  END

  If(@BusinessName<>null)
  BEGIN
  SET @WhereStatement = @WhereStatement + "AND BusinessName='" + @BusinessName + "'";
  END
  --And So On for other variables
  if(len(@WhereStatement)>0)
  BEGIN
  SET @WhereStatement = " Where " + @WhereStatement
  END

  SET @SelectStatement=@SelectStatement + @WhereStatement;
  print @SelectStatement;
  EXECUTE sp_executesql @SelectStatement;
  END

Open in new window


The code is for SP, make some syntax changes(if required) as i don't have SSMS here...
0
 
LVL 9

Expert Comment

by:sachinpatil10d
ID: 37746903
Try this

--sp_selData 'demo','valutec','mercury'
CREATE Proc sp_selData
        @Val1 nvarchar(50)='',
        @Val2 nvarchar(50)='',
        @Val3 nvarchar(50)=''
as
     select * from <TableName>
     where <Column1> like '%'+ @Val1 +'%'
     or <Column2> like '%'+ @Val2 +'%'
     or <Column3> like '%'+ @Val3 +'%'
Go

Open in new window


TableName = your table name
Column1,2,3 = your filter columns
0
 

Author Closing Comment

by:shah36
ID: 37860171
Thank you very much all it helped a lot.
regards
0

Featured Post

Optimizing Cloud Backup for Low Bandwidth

With cloud storage prices going down a growing number of SMBs start to use it for backup storage. Unfortunately, business data volume rarely fits the average Internet speed. This article provides an overview of main Internet speed challenges and reveals backup best practices.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
sql calculate reminders 11 76
Parsing the XML data to SQL Server 4 66
SQL Query with Sum and Detail rows 2 50
Present Absent from working date rage 11 21
In this article I will describe the Backup & Restore method as one possible migration process and I will add the extra tasks needed for an upgrade when and where is applied so it will cover all.
In this article I will describe the Copy Database Wizard method as one possible migration process and I will add the extra tasks needed for an upgrade when and where is applied so it will cover all.
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…

823 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