PDA

View Full Version : پروسجر جستجو



angel farahani
سه شنبه 23 اردیبهشت 1393, 15:49 عصر
با سلام ، دوستان من یک چنین فرم جستجویی دارم که براش پروسجر زیر رو نوشتم ، اما جوابی نمیده و هیچی بر نمی گردونه ، میشه راهنماییم کنید کجاش مشکل داره ؟؟

118974

و اینم پروسجرم :

USE [OnlineResturans]GO
/****** Object: StoredProcedure [dbo].[sp_Search] Script Date: 07/10/2012 04:08:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- Batch submitted through debugger: ostad.sql|0|0|C:\Users\Lenovo\Documents\SQL Server Management Studio\Projects\ostad.sql
ALTER procedure [dbo].[sp_Search]
@shopname varchar(30),
@shoptypeid int,
@wifi bit,
@freeship bit,
@parkingplace tinyint,
@economylevel tinyint,
@areanum tinyint


As
Begin
select shopid,shopname,shoptypeid,description,economyleve l,areanum,shoplogoname from shop
Where(shopname=null)or (shopname LIKE '%'+@shopname+'%')
and
(shoptypeid=null)or(shoptypeid=@shoptypeid)
and
(wifi=null)or(wifi=@wifi)
and
(freeship=null)or(freeship=@freeship)
and
(parkingplace=null)or(parkingplace=@parkingplace)
and
(economylevel=null)or(economylevel=@economylevel)
and
(areanum=null)or(areanum=@areanum)

return

End

espootin
سه شنبه 23 اردیبهشت 1393, 19:23 عصر
سلام.

مشخصه که شرطتون مشکل داره و با هیچ رکوردی تطابق نداره! این شرط را باید اصلاح کنید.
هدفتون از این شرط چیه؟ چه چیزی را می خواهید؟

angel farahani
سه شنبه 23 اردیبهشت 1393, 19:43 عصر
سلام ، میخوام فیلدهایی که مقدارش رو وارد کرده با توجه به آنها جستجو رو در نظر بگیره و بر اساس فیلدهایی که مقدارشون مشخص نشده جستجو انجام نشه . حالا چطور باید درست بشه ؟ اطلاعات رستوران ها رو میخوام خروجی بده

espootin
سه شنبه 23 اردیبهشت 1393, 21:08 عصر
به نمونه زیر توجه کنید.


-- input params
declare @param1 int = 5;
-- variables
declare @select varchar(max), @condition varchar(max), @command varchar(max);
-- set select command
set @select = 'select col1,col2,col3,.. from TableName ';
-- add conditions
if(@param1 is not null)
set @condition = 'Name like ''%علی%''';
-- merge commands
select @command = @select + ' where ' + @condition;
-- execute
exec (@command);


بدین صورت پارامتر هایی که مقدار دارند را توی شرط بگذارید و از عملگر And نیز بین آنها استفاده کنید و سپس اجرا کنید.
انشالا که به جواب مورد نظرتون می رسید.
موفق باشید./

angel farahani
پنج شنبه 25 اردیبهشت 1393, 19:12 عصر
با سپاس از شما ، من اصن با این نمونه کدی که شما گذاشتین نتونستم بنویسم :( میشه شما با توجه به پرامترهای جدول من مثالتون رو بزنید ، بخدا خیلی سر این مورد موندم :(

angel farahani
پنج شنبه 25 اردیبهشت 1393, 21:01 عصر
من این مدلی نوشتم : ولی خطای Incorrect syntax near 'َ'. رو میده ، میشه راهنمایی کنید

ALTER procedure [dbo].[sp_Search]

@shopname varchar(30)=null,
@shoptypeid int=null,
@wifi bit=null,
@freeship bit=null,
@parkingplace tinyint=null,
@economylevel tinyint=null,
@areanum tinyint=null






AS
BEGIN
select shopid,shopname,shoptypeid,description,economyleve l,areanum,shoplogoname from shop
WHERE
([shopname] LIKE IsNULL(@shopname, shopname) + '%')
AND
[shoptypeid] = IsNull(@shoptypeid, [shoptypeid])
AND
[wifi] = IsNull(@wifi,[wifi])
AND
[freeship] = IsNull(@freeship, [freeship])
َAND
[parkingplace] = IsNull(@parkingplace,[parkingplace])
AND
[economylevel] = IsNull(@economylevel,[economylevel])
AND
[areanum] = IsNull(@areanum,[areanum]);


END

angel farahani
جمعه 26 اردیبهشت 1393, 17:56 عصر
من طبق آموزش های توی نت ، اینطوری هم نوشتم اما هیچی بر نمی گردونه :( این همه مهندس اینجاست هیشکی مشکل من رو حل نمی کنه :(


USE [OnlineResturans]GO
/****** Object: StoredProcedure [dbo].[SearchShops] Script Date: 07/13/2012 06:42:43 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO



ALTER PROCEDURE [dbo].[SearchShops]

@shopname varchar(30)=null,
@shoptypeid int=null,
@wifi bit=null,
@freeship bit=null,
@parkingplace tinyint=null,
@economylevel tinyint=null,
@areanum tinyint=null


AS
BEGIN


Select *
From shop
Where(@shopname IS null OR shopname Like '%'+@shopname+'%')AND
(@shoptypeid IS null OR shoptypeid=@shoptypeid)AND
(@wifi IS null OR wifi=@wifi)AND
(@freeship IS null OR freeship=@freeship)AND
(@parkingplace IS null OR parkingplace=@parkingplace)AND
(@economylevel IS null OR economylevel=@economylevel)AND
(@areanum IS null OR areanum=@areanum)


END

espootin
شنبه 27 اردیبهشت 1393, 08:32 صبح
این رو تست کنین ،‌ باید جواب بگیرید:


ALTER PROCEDURE [dbo].[SearchShops]

@shopname varchar(30)=null,
@shoptypeid int=null,
@wifi bit=null,
@freeship bit=null,
@parkingplace tinyint=null,
@economylevel tinyint=null,
@areanum tinyint=null


AS
BEGIN


select shopid, shopname, shoptypeid, [description]
,economylevel,areanum,shoplogoname
from shop
WHERE
[shopname] = coalesce (@shopname, shopname)
AND [shoptypeid] = coalesce (@shoptypeid, shoptypeid)
AND [wifi] = coalesce (@wifi, wifi)
AND [freeship] = coalesce (@freeship, freeship)
َAND [parkingplace] = coalesce (@parkingplace, parkingplace)
AND [economylevel] = coalesce (@economylevel, economylevel)
AND [areanum] = coalesce (@areanum, areanum);


END

angel farahani
شنبه 27 اردیبهشت 1393, 23:14 عصر
سلام با تشکر از شما ، من از این کد استفاده کردم که درست هست و تو اس کیو ال خروجی گرفتم

ALTER PROCEDURE [dbo].[SearchShops]

@shopname varchar(30)=null,
@shoptypeid int=null,
@wifi bit=null,
@freeship bit=null,
@parkingplace tinyint=null,
@economylevel tinyint=null,
@areanum tinyint=null


AS
BEGIN


Select shopid,shoplogoname,shopname,shoptypeid,descriptio n,economylevel,areanum
From shop
Where(@shopname IS null OR shopname Like '%'+@shopname+'%')AND
(@shoptypeid IS null OR shoptypeid=@shoptypeid)AND
(@wifi IS null OR wifi=@wifi)AND
(@freeship IS null OR freeship=@freeship)AND
(@parkingplace IS null OR parkingplace=@parkingplace)AND
(@economylevel IS null OR economylevel=@economylevel)AND
(@areanum IS null OR areanum=@areanum)