PDA

View Full Version : سوال: عدم شناسایی متغیر های sqlDataAdapter.SelectCommand.CommandText



jabber
دوشنبه 04 شهریور 1392, 21:43 عصر
سلام
من میخوام فقط سطرهای مورد جستجو تو گرید ویو نمایش داده بشه نه همه فیلدهای جدول به همین خاطر کد زیر رو برای sqlDataAdapter میدم تا فقط فیلدهای مورد جستجو رو بیاره
da.SelectCommand.CommandText = " select * from tbl_patient where FileId=@FileId and Name=@Name";
امامتغیرهای بعد where رو نمیشناسه و خطای زیر رو میده
Must declare the scalar variable "@FileId".

راه حل چیه؟
چطوری فقط فیلدهای مورد جستجو رو تو گرید نمایش بدم نه همه محتوای جدول رو؟

sohil_ww
دوشنبه 04 شهریور 1392, 22:04 عصر
متغیر ها رو باید(البته بهتر بگم پارامتر هارو )باید مقدار دهی کنید
cmd.paramerts.add()

jabber
دوشنبه 04 شهریور 1392, 22:14 عصر
مشکل من با SqlCommand نیست متغیرهای اونو با شیوه ای که گفتین تعریف کردم خطا هم نداره متغیرهای sqldataadapter رو نمیشناسه

sohil_ww
دوشنبه 04 شهریور 1392, 22:19 عصر
اینو ببین
لینــــــــــــــــک (http://msdn.microsoft.com/en-us/library/bbw6zyha.aspx)

danialafshari
دوشنبه 04 شهریور 1392, 22:26 عصر
مشکل من با SqlCommand نیست متغیرهای اونو با شیوه ای که گفتین تعریف کردم خطا هم نداره متغیرهای sqldataadapter رو نمیشناسه

1-
دستی نوشتم:
using System.Data.SqlClient;
da.SelectCommand.CommandText = "select * from tbl_patient where FileId=" + textBox1.Text + " and Name=" + textBox2.Text;

فکر کنم باید ' باشه
فعلا اینو تست کنید
2-
نمونه در سایت زیاده می تونستید یکی رو دریافت و با اون مقایسه و مشکلتون رو حل کنید و نیازی به تاپیک نبود!

موفق باشی

jabber
دوشنبه 04 شهریور 1392, 22:35 عصر
این خطا رو میده
invalid column name "مقدار وارد شده به تکست باکس 1"

danialafshari
دوشنبه 04 شهریور 1392, 22:43 عصر
این یک کوئری که به درستی کار می کنه
بین تکست باکس ها مثل کد زیر ' بزارید
SELECT ID, Name, Family, Tel, Address FROM dbo.Table_1 WHERE (Name = 'danial') AND (Address = 'Home')

behnam-soft
دوشنبه 04 شهریور 1392, 22:50 عصر
با اجازه اساتید بزرگوار، کدیکه جلوی فیلد آی دی نوشته میشه باید 2 تا ' داشته باشه یعنی: '" + textBox1.Text + "'

jabber
دوشنبه 04 شهریور 1392, 22:58 عصر
این یک کوئری که به درستی کار می کنه
بین تکست باکس ها مثل کد زیر ' بزارید
SELECT ID, Name, Family, Tel, Address FROM dbo.Table_1 WHERE (Name = 'danial') AND (Address = 'Home')


کد رو بصورت زیر نوشتم :
da.SelectCommand.CommandText = " select * from tbl_patient where FileId='txtFileId.Text' and Name='txtName.Text'";
خطای زیر رو میده
Conversion failed when converting the varchar value 'txtFileId.Text' to data type int.
مقداری رو که بین ' ' قرار میکره رو بعنوان رشته در نظر میگیره و اصلا مقدار تکست باکس رو به نمی تونه بگیره

danialafshari
سه شنبه 05 شهریور 1392, 00:06 صبح
با اجازه اساتید بزرگوار، کدیکه جلوی فیلد آی دی نوشته میشه باید 2 تا ' داشته باشه یعنی: '" + textBox1.Text + "'
با تشکر از شما
عرض کردم کد رو به صورت دستی نوشتم.

کد رو بصورت زیر نوشتم :
da.SelectCommand.CommandText = " select * from tbl_patient where FileId='txtFileId.Text' and Name='txtName.Text'";
خطای زیر رو میده
Conversion failed when converting the varchar value 'txtFileId.Text' to data type int.
مقداری رو که بین ' ' قرار میکره رو بعنوان رشته در نظر میگیره و اصلا مقدار تکست باکس رو به نمی تونه بگیره
آخرین بار توسط jabber در تاریخ دوشنبه 04 شهریور 1392، ساعت 23:45 عصر ویرایش شده است
فکر نکنم به نتیجه ای برسیم جز بالا رفتن پست تاپیک
بفرمائید:

farhad.k.t
سه شنبه 05 شهریور 1392, 00:17 صبح
در مواقعی که در Table اطلاعات فارسی دارید بهتر است از همان روشی که دوستمان گفتند(مقداردهی پارامترها) استفاده کنید و در ضمن همین طور که گفتید خطایی که گرفته شده txtFileIdوtxtName به صورت رشته ای در نظر گرفته شده اند .
بهتر است از کد زیر استفاده کنید.

cmd = new SqlCommand("select * from tbl_info where namefield=@namefield and familyfield=@familyfield",con );
cmd.Parameters.Add("@namefield", name);
cmd.Parameters.Add("@familyfield", family);
SqlDataAdapter ds = new SqlDataAdapter(cmd);

برای این که به مشکل بالا برنخورید از ترکیب رشته ها استفاده کنید:

cmd = new SqlCommand("select * from tbl_info where id="+varid,con );

ولی دقت کنید که varid را string تعریف کرده باشید یا در غیر این صورت یک To String به varid اضافه کنید.