PDA

View Full Version : حرفه ای: خطا در استفاده از استور پروسیجر در سی شارپ



hahaie
پنج شنبه 07 اردیبهشت 1391, 21:25 عصر
سلام.لطفا حذف نکنید که مشکل اصلی در سی شارپه.یه استور پروسیجر توی sql نوشتم که در sql به خوبی جواب میده اما وقتی میخوام از اون در سی شارپ استفاده کنم خطا میده اما در شرایط خاص.کدای استور پروسیجر در زیر هست:if(@tbl=1) select max(id) from tbl_moshtari where id>0else if(@tbl=2) select max(id) from tbl_kala where id>0else if(@tbl=3) select max(id) from tbl_factor where id>0else if(@tbl=4) select max(id) from tbl_kharid where id>0else if(@tbl=5) select max(id) from tbl_pardakht where id>0جالب اینه که اگه کد 1 و 2 رو بهش فرستادی ایرادی نمیگیره اما کد 3،4 یا 5 رو ارور میده(ارور:Specified cast is not valid).یه نکته اینکه نوع فیلد id در دو جدول اول(که خطا نداره)از نوع smallint و بقیه(که خطا داره)int.(شاید اصلا ارور به این موضوع ربطی نداشته باشه).اگه جوابی برا این مسئله نداشتید کسی میتونه بگه چطوری میشه از تابع max در لینکیو استفاده کرد؟ممنون

akhlaghi_mohammad
پنج شنبه 07 اردیبهشت 1391, 22:34 عصر
کسی میتونه بگه چطوری میشه از تابع max در لینکیو استفاده کرد؟ممنون
ببین این به دردت می خوره...


var db = new Linq1DataContext();
long MuxID = Convert.ToInt64(db.Table1.AsQueryable().Max(f => f.tblID).ToString())

ali_habibi1384
دوشنبه 18 اردیبهشت 1391, 07:06 صبح
فكر ميكنم مشكل از else if هات باشه اونا رو تبديل كن به if ببين چه جوابي ميده

ASKaffash
دوشنبه 18 اردیبهشت 1391, 07:25 صبح
سلام
دستور را به شکل ذیل تبدیل کنید ببینید مشکل حل می شود :

if @tbl=1
select max(id) from tbl_moshtari where id>0
else Begin
if (@tbl=2)
select max(id) from tbl_kala where id>0
else Begin
if (@tbl=3)
select max(id) from tbl_factor where id>0
else Begin
if (@tbl=4)
select max(id) from tbl_kharid where id>0
else Begin
if (@tbl=5)
select max(id) from tbl_pardakht where id>0
End
End
End