PDA

View Full Version : جستجو در بانک وقتی نمیدانیم کدام فیلدها قرار است پر شود



mhdhp86
شنبه 14 مرداد 1391, 23:58 عصر
سلام.
من هر چی جستجو کردم توی سایت نتونستم جوابی پیدا کنم.برای همین یک تاپیک جدید زدم
من چند تا combobox دارم که بر اساس انچه در آنها انتخاب شده قراره از جدولم کوئری بگیرم.اما پر کردن همه فیلدها در صفحه جستجو اجباری نیست.
از طرف دیگه لزوما همه این مقادیر در جدول بانکم پر نشده.مثلا فیلد هام هستند: نام، نام خانوادگی، جنسیت، مدرک.... و در جدول ممکنه جنسیت یا مدرک مشخص نشده باشه(تنها فیلد اجباری نام خانوادگیه)
من کوئری ام رو چطور بنویسم که هر کدام از فیلد های فرم پر شد یا نشد جواب درستی بهم بده؟

Mahmoud.Afrad
یک شنبه 15 مرداد 1391, 00:21 صبح
باید کوئری رو به صورت پویا ایجاد کنی یعنی هر فیلدی پر شد باید عبارت مناسب به کوئری اضافه بشه.
http://barnamenevis.org/showthread.php?343579-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88%DB%8C-%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA%D9%87-%D8%AF%D8%B1-Database

Felony
یک شنبه 15 مرداد 1391, 04:06 صبح
این حاصل چند ساعت تلاش من و بهترین و ساده ترین راه حلی که تا به حال دیدم :

CREATE PROCEDURE SearchPatientDossier
@DocID int = null,
@SerialNumber nvarchar(15) = null,
@FName nvarchar(30) = null,
@LName nvarchar(30) = null,
@NationalCode nvarchar(10) = null,
@Mobile nvarchar(20) = null
AS
BEGIN
SET NOCOUNT ON;

-- Get patient list using filter parameters
SELECT
[Patients].[ID]
,[Patients].[Doc_ID]
,[Patients].[SerialNumber]
,[Users].[Username]
,[Patients].[FName]
,[Patients].[LName]
,[Patients].[Birthday]
,[Patients].[NationalCode]
,[Patients].[Phone]
,[Patients].[Mobile]
,[Patients].[Addr]
FROM
[dbo].[Patients]
INNER JOIN [dbo].[Users] ON [dbo].[Patients].[Doc_ID] = [dbo].[Users].ID
WHERE
([dbo].[Patients].[Doc_ID] LIKE ISNULL(@DocID , [dbo].[Patients].[Doc_ID] ) ) AND
([dbo].[Patients].[SerialNumber] LIKE ISNULL(@SerialNumber , [dbo].[Patients].[SerialNumber]) + '%') AND
([dbo].[Patients].[FName] LIKE ISNULL(@FName , [dbo].[Patients].[FName] ) + '%') AND
([dbo].[Patients].[LName] LIKE ISNULL(@LName , [dbo].[Patients].[LName] ) + '%') AND
([dbo].[Patients].[NationalCode] LIKE ISNULL(@NationalCode , [dbo].[Patients].[NationalCode] ) + '%') AND
([dbo].[Patients].[Mobile] LIKE ISNULL(@Mobile , [dbo].[Patients].[Mobile] ) + '%');
END

mhdhp86
یک شنبه 15 مرداد 1391, 15:18 عصر
این trigger هست؟

mhdhp86
یک شنبه 15 مرداد 1391, 15:30 عصر
باید کوئری رو به صورت پویا ایجاد کنی یعنی هر فیلدی پر شد باید عبارت مناسب به کوئری اضافه بشه.
این نمونه ها رو امتحان کن


من در این برنامه شما sql connection رو عوض کردم اما باز هم موقع اجرا ارور میده که به بانک دسترسی نداره.چه کار کنم؟

mhdhp86
یک شنبه 15 مرداد 1391, 15:37 عصر
اگر موقع ورود اطلاعات همه فیلدها رو اجباری کنم تا پر بشن، موقع جستجو می تونم بدون stored procedure اطلاعات رو بازیابی کنم؟ حتی اگر باز هم موقع سرچ بعضی گزینه ها پر نشه

mhdhp86
دوشنبه 16 مرداد 1391, 17:58 عصر
نه.منظورم اینه که تو فرم ورود اطلاعات(نه موقع جستجو) قبل از وارد کردن اطلاعات تو بانک،چک کنم همه فیلدها پر بشه. تا موقع جستجو فیلدهایی که روشون جستجو میشه خالی نباشن.
اما موقع جستجو هر فیلدی رو که خواست پر کنه