ورود

View Full Version : به جای نام ستون میتوان متغییر گذاشت؟؟!



Yama12
پنج شنبه 08 فروردین 1387, 14:56 عصر
سلام خدمت همه دوستان
کد زیر را نگاه کنید



SELECT * FROM [phone book] WHERE fname=@Sitem

من میخوام به جای اسم ستون یک متغییر به کار ببرم مثل var@ که میشه کد زیر:



SELECT * FROM [phone book] WHERE @var=@Sitem

اما وقتی اجرا میکنم دیتابیس هیچی بر نمیگردونه کد من اشکال داره یا اصلا این کار نشدنی هست
لطفا راهنمایی کنید که از چه کدی استفاده کنم
با تشکر

Amir_Safideh
پنج شنبه 08 فروردین 1387, 15:02 عصر
خوب اینکار غیرممکن نیست . البته در مورد این مسئله چندین بار در همین سایت بحث شده بود . اگر جستجو کنید باز هم بیشتر پیدا خواهید کرد .

Declare @Var varchar(30)
Set @Var = 'fname'
exec('Select * From [Phone Book] Where '+@Var+' = '+@Sitem)

----------
موفق باشید.

Yama12
جمعه 09 فروردین 1387, 12:09 عصر
خوب اینکار غیرممکن نیست . البته در مورد این مسئله چندین بار در همین سایت بحث شده بود . اگر جستجو کنید باز هم بیشتر پیدا خواهید کرد .

Declare @Var varchar(30)
Set @Var = 'fname'
exec('Select * From [Phone Book] Where '+@Var+' = '+@Sitem)

----------
موفق باشید.

با تشکر از توجه شما اما در محیط سی شارپ نمیشه varchar تعریف کرد چون متغییر sql هست
دوم اینکه علامت+ که قبل و بعد از متغییر گذاشتید برای چی هست
سوم اینکه اگر من قبل و بعد از یک متغییر '' بزارم به زشته تبدیل میشه
اگر میشه بیشتر توضیح بدید
بازم متشکرم

Amir_Safideh
جمعه 09 فروردین 1387, 13:40 عصر
خوب شما سوال خودتون در اس بخش اس کیو ال سرور مطرح کردید خوب مسلما جواب سوال هم بر اساس اینکه در محیط اس کیو ال اجرا بشه داده خواهد شد . خوب شما متغییر رو از نوع رشته بگیرید و بجای اون بزارید . و علامت + بخاطر این هست که ما رشته های مورد نظر رو به هم پیوند بدیم تا دستور مورد نظر به صورت یک متن یکپارچه در بیاد . یعنی ما متن Select رو به صورت یک رشته مینویسیم و برای اینکه اون متغییر ها رو به این رشته متصل کنیم از علامت + استفاده میشه .
خوب شما دقیقا بفرمائید که این کد رو کجا میخواهید بزنید .
-----------------
موفق باشید .

Yama12
جمعه 09 فروردین 1387, 14:18 عصر
خوب شما سوال خودتون در اس بخش اس کیو ال سرور مطرح کردید خوب مسلما جواب سوال هم بر اساس اینکه در محیط اس کیو ال اجرا بشه داده خواهد شد . خوب شما متغییر رو از نوع رشته بگیرید و بجای اون بزارید . و علامت + بخاطر این هست که ما رشته های مورد نظر رو به هم پیوند بدیم تا دستور مورد نظر به صورت یک متن یکپارچه در بیاد . یعنی ما متن Select رو به صورت یک رشته مینویسیم و برای اینکه اون متغییر ها رو به این رشته متصل کنیم از علامت + استفاده میشه .
خوب شما دقیقا بفرمائید که این کد رو کجا میخواهید بزنید .
-----------------
موفق باشید .

بازم تشکر از توجهتون
بله من تازه متوجه شدم + برای چی بود اما لازم به همچین کاری نیست چون وقتی که قبل از یک اسم مثله var علامت@ قرار میدیم به placeHolder تبدیل میشه و کاره متغیر رو انجام میده
من میخوام در محیط سی شارپ دات نت ین کد رو بنویسیم
البته به طور دقیق تر من یک دفتر چه تلفن نوشتم که برای قسمت جستجو میخوام کاربر فیلد رو انتخاب کنه که مثلا در نام جستجو کنه یا در شماره تلفن

Amir_Safideh
جمعه 09 فروردین 1387, 15:13 عصر
ببین دوست عزیز من با سی شارپ کار نکردم . ولی شما برای اینکه این اطلاعات رو بتونید از بانک دریافت کنید به یک ابزار ارتباطی احتیاج دارید مثل ADO ها که ما در دلفی ازش استفاده میکنیم . خوب برای اینکار شما باید این دستور Select رو به خاصیت SQL (یا چیزی شبیه اینکه در برنامه سی شارپ نمیدونم معادلش چیه)مربوط به این ابزار اختصاص بدی . در این صورت شما از کدی که من براتون فرستادم فقط آخرین خط کد رو یعنی این کد رو با کمی اصلاحات لازم دارید:


'Select * From [Phone Book] Where '+@Var+' = '+@Sitem)

بعد که خاصیت SQL رو ست کردید حالا باید کوئری رو اجرا کنید تا نتیجه رو ببینید .
-----------
موفق باشید .

Yama12
شنبه 10 فروردین 1387, 01:26 صبح
سلام و مرسی دوست عزیز
من هم از اول همین کار رو که شما میگید انجام میدادم اما برای من چیزی بر نمیگردونه
در حالی که از متغییر دوم رو قبول میکنه اما متغییر اول رو که میخوام وصل کنم به نام ستون اون رو هم قبول میکنه اما چیزی بر نمیگردونه
بازم مرسی عزیز
حق با شماست باید برم قسمت سی شارپ مطرح کنم