PDA

View Full Version : جست و جو براساس دو فیلد یک جدول



حسین.کاظمی
چهارشنبه 17 دی 1393, 14:30 عصر
باسلام
یک بانک اطلاعاتی دارم و میخام یک کوئری بسازم که بر اساس کد پرسنلی یا فامیلی پرسنل را وارد کرد نمایش بده!
برای این کار از چه دستوری میتونم استفاده کنم ؟؟؟؟؟؟؟

پیشاپیش از راهنماییاتون سپاس گذارم

sadegh.te
چهارشنبه 17 دی 1393, 15:17 عصر
سلام از کد زیر میتونید استفاده کنید.

SELECT * FROM TBL_name where fild_name1 LIKE "'+textbox1.text+'" AND fild_name2 LIKE "'+textbox2.text+'"

حسین.کاظمی
پنج شنبه 18 دی 1393, 08:03 صبح
سلام از کد زیر میتونید استفاده کنید.

SELECT * FROM TBL_name where fild_name1 LIKE "'+textbox1.text+'" AND fild_name2 LIKE "'+textbox2.text+'"


سلام ممنونم از راهنماییت
ولی؛
من میخام که کاربر فقط تو یک تکست باکس کد پرسنلی یا فامیلی را نوشت جست و جو براساس این دو فیلدی که در یک جدول هست را انجام بشه!!

sadegh.te
پنج شنبه 18 دی 1393, 09:15 صبح
سلام خوب شما میتونید اطلاعاتو از کاربر از یه textbox بگیرید و بعد اونو تبدیل به دو متغیر کنید و اون دو تا متغیر رو چایگزین tectbox های داخل کوئری کنید.

حسین.کاظمی
پنج شنبه 18 دی 1393, 09:37 صبح
دوست عزیز میشه یه مثال بزنید و یا اگر نمونه برنامه را داری ممنونت میشم بزارید

sadegh.te
پنج شنبه 18 دی 1393, 09:49 صبح
مثلا وقتی که کاربر شما داخل تکسباکس مینویسه امیر امیری خوب کاملا معلومه که بین اسم و فامیلی یه فاصله هستش شما میتونید از این فاصله استفاده کنید و با کد نویسی بگید که تا وقتی که میرسه به فضای خالی رو

بریزه داخل یه متغیر و ادامه شو بریزه داخل یه متغیر دیگه و SQL شما هم این شکلی میشه.


SELECT * FROM TBL_name where fild_name1 LIKE "'+variable1+'" AND fild_name2 LIKE "'+variable2+'"




ولی به نظر من این روش اشتباهه بهترین روش اینه که اسم رو داخل یه تکسباکس بنویسی و فامیای رو هم داخل یه تکسباکس دیگه من تا الان ندیدم که برنامه ای بیاد نام و نام خانوادگی رو داخل یه textbox بگیره.

ham3d1988
پنج شنبه 18 دی 1393, 10:08 صبح
سلام بهتره داینامیک کوئری بنویسید
شما احتمالا منظورتون اینه که یه تکست داشته باشی و اگه کاربر توش نام رو وارد کرد با فیلد نام چک بشه و اگه کد پرسنلی وارد کرد با کد پرسنلی مقایسه بشه.
برای اینکار میتونید یه پراسیجر بنویسید و مقدار تکست باکس رو بهش پاس بدید
اگه فرض کنیم مقدار پاس شده @X باشه پراسیجر اینجوری میشه:


DECLARE @x NVARCHAR(10)
DECLARE @stat NVARCHAR(MAX)




SET @x='35926'


set @stat='SELECT * FROM OwTbl OT
WHERE OT.OWCode=''' + @x + ''' OR OT.OWFamily like N''%' + @x + '%'''


print @stat
exec sp_executesql @stat

حسین.کاظمی
پنج شنبه 18 دی 1393, 10:43 صبح
سلام بهتره داینامیک کوئری بنویسید
شما احتمالا منظورتون اینه که یه تکست داشته باشی و اگه کاربر توش نام رو وارد کرد با فیلد نام چک بشه و اگه کد پرسنلی وارد کرد با کد پرسنلی مقایسه بشه.
[/SQL]

سلام
بله دقیقاً منظورم همین است!!!
ممنونم

حسین.کاظمی
شنبه 20 دی 1393, 06:58 صبح
ham3d1988 (http://barnamenevis.org/member.php?175070-ham3d1988) میشه sp را واضحتر بنویسید؟؟؟

ham3d1988
شنبه 20 دی 1393, 10:12 صبح
سلام مجدد


Create PROCEDURE SPName
(
@x NVARCHAR(10)
)
AS
BEGIN


DECLARE @stat NVARCHAR(MAX)


set @stat='SELECT * FROM OwTbl OT
WHERE OT.OWCode=''' + @x + ''' OR OT.OWFamily like N''%' + @x + '%'''
print @stat
exec sp_executesql @stat
END

حسین.کاظمی
یک شنبه 26 بهمن 1393, 07:36 صبح
سلام مجدد


Create PROCEDURE SPName
(
@x NVARCHAR(10)
)
AS
BEGIN


DECLARE @stat NVARCHAR(MAX)


set @stat='SELECT * FROM OwTbl OT
WHERE OT.OWCode=''' + @x + ''' OR OT.OWFamily like N''%' + @x + '%'''
print @stat
exec sp_executesql @stat
END



سلام
کسی از دوستان هست که کدهای بالا را واسم توضیح بدهد مثلاً چرا از دو متغییر استفاده کرده این دوستمون (@stat)
کلاً با کوئری زیر که قرمز رنگند متوجشون نشدم منظرشو


'SELECT * FROM OwTbl OT WHERE OT.OWCode=''' + @x + ''' OR OT.OWFamily like N''%' + @x + '%'''




تشکر از همگی