View Full Version : چگونه می توان در صورتیکه پارامتر Null بود کل سطر ها را نمایش داد؟
fahimi
یک شنبه 28 اردیبهشت 1393, 21:42 عصر
DECLARE @Id_Kala INT
SELECT * FROM dbo.Forosh WHERE @Id_Kala IS NULL OR IdKala =@Id_Kala
در Sqlserver درصورتیکه IdKala نال(NULL) باشد کل سطر را بر می گرداند در صورتیکه داری مقدار باشد براساس آن فیلتر می کند
چگونه می توانم از داخل برنامه Id_Kala را مقدار دهی کنم
یوسف زالی
چهارشنبه 07 خرداد 1393, 19:32 عصر
بستگی به این داره که با چه شیی دارید کار می کنید.
معمولا برای این کارها یک استور پروسیجر در اس کیو ال تعریف می کنند و با یک شی ADOStoredProc بهش وصل شده و پارامتر هاش رو مقدار دهی می کنند.
می تونید از ADOQuery هم استفاده کنید.
ZonLine
سه شنبه 13 خرداد 1393, 15:54 عصر
سلام دوست عزیز
شما میتونی یه AdoQuery مثلا به اسم AdoQuery1 روی فرم بزاری و از قسمت پارامتر ها یک پارامتر براش تعریف کنی به اسم Id_Kala@
اونوقت می تونی این کد رو داخل AdoQuery1 بنویسی
SELECT * FROM dbo.Forosh WHERE @Id_Kala IS NULL OR IdKala =:@Id_Kala
و از داخل برنامه این کد رو بنویسی
;ADOQuery1.Close
;ADOQuery1.Parameters.ParamByName('@IdKala').Value := 2
;ADOQuery1.Open
fahimi
جمعه 16 خرداد 1393, 06:20 صبح
با تشکر از پاسخ دوستان محترم
من تعدادی TextBox دارم که در صورتیکه کاربر مقدار دهی کند در فیلتر شرکت داده شود و در غیر این صورت در فیلتر شرکت داده نمی شود در هر صورت حتی اگر با تابع Trim هم کارکتر اضافه حذف شود باز NULL به عنوان پارامتر ارسال نمی شود
101101000
شنبه 17 خرداد 1393, 13:19 عصر
با تشکر از پاسخ دوستان محترم
من تعدادی TextBox دارم که در صورتیکه کاربر مقدار دهی کند در فیلتر شرکت داده شود و در غیر این صورت در فیلتر شرکت داده نمی شود در هر صورت حتی اگر با تابع Trim هم کارکتر اضافه حذف شود باز NULL به عنوان پارامتر ارسال نمی شود
شما کنترل اعمال فیلتر رو در سمت دیتا بیس انجام بده. معمولا مقدار پیش فرض پارامتر رو در دلفی (ADOQuery or ADOStoredProcedur , ...) مقدار NULL در نظر میگیره. اگر سمت کلاینت بخوای کنترل کنی با شرط خالی بوده TextBox پارامتر رو ارسال کن. یعنی اگر مقداری درون TextBox نداشتی پارامتر رو ارسال نکنه. اما روش بهتر اینه که سمت سرور انجام بدی یعنی داخل دستورات Select حالا اگه در sp باشه هم که بهتر؛ میتونی ابتدا مقدار پارامتر رو تنظیم پیش فرض کنی یا اینکه داخل Where کنترل کنی.
برای مثال در تعریف sp مقدار پارامتر رو پیش فرض '' قرار بده. اگر هم که عددی بود 0. و در قسمت شرط انتخابت کد زیر رو استفاده کن:
... ISNULL(Param1, '') = '' OR
... ISNULL(Param2, 0) = 0 OR
یوسف زالی
شنبه 17 خرداد 1393, 18:48 عصر
اگر اصرار دارید نال ارسال کنید، باید با یک شرط کنترل کنید.
یعنی اگر مقداری درون TextBox نداشتی پارامتر رو ارسال نکنه
این گفته اشتباه وحشتناکیه. همیشه تمام پارامترهاتون رو پر کنید. حتی با نال.
با باقی صحبت های دوستمون موافقم.
101101000
یک شنبه 18 خرداد 1393, 08:37 صبح
اگر اصرار دارید نال ارسال کنید، باید با یک شرط کنترل کنید.
این گفته اشتباه وحشتناکیه. همیشه تمام پارامترهاتون رو پر کنید. حتی با نال.
با باقی صحبت های دوستمون موافقم.
ممنون دوست عزیز. منظورم این نبود که پارامتر رو پر نکنه!
منظور از ارسال نکردن پارامتر این نبود که اصلا پارامتر رو مقدار دهی نکنیم بلکه مقدار TextEdit رو ارسال نکنیم. شاید نحوه ی بیانم کمی اشتباه بود. اما با این که همیشه تمامی پارامتر ها رو پر کنیم حتی با نال موافقم و ممنون از راهنماییتون.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.