PDA

View Full Version : عمل نکردن catch



csharpprogramer88
شنبه 12 مرداد 1392, 17:56 عصر
private int getmaxID_groupfactorkharid()
{
var Result = database.tbl_group_factorkharid.Select(x => x.id_factor_kharid).Max();
try
{
return ((int)Result + 1);
}
catch
{
return 1;
}

}

سلام

در این تابع میخوام آخرین id (کلید اصلی) را بدست بیاورم و یکی به آن اضافه کنم برای اصافه کردن کد را در try نوشتم در catch هم تعیین کردم در صورت خالی بودن جدول ، مقدار 1 برگشت بشه ولی عمل نمیکنه

لطفا کد منو بررسی کنید

با تشکر

sohil_ww
شنبه 12 مرداد 1392, 18:02 عصر
private int getmaxID_groupfactorkharid()
{
var Result = database.tbl_group_factorkharid.Select(x => x.id_factor_kharid).Max();
try
{
return ((int)Result + 1);
}
catch
{
return 1;
}

}

سلام

در این تابع میخوام آخرین id (کلید اصلی) را بدست بیاورم و یکی به آن اضافه کنم برای اصافه کردن کد را در try نوشتم در catch هم تعیین کردم در صورت خالی بودن جدول ، مقدار 1 برگشت بشه ولی عمل نمیکنه

لطفا کد منو بررسی کنید

با تشکر

می خوای اخرین شماره آیدی ثبت شده رو برگردونی ؟! !

اگه اره از تابع last استفاده کن این جوری داری لغمه رو می چرخونی (نخوری لغمه رو ها ماه رمضانه !!! )

hojjatshariffam
شنبه 12 مرداد 1392, 18:13 عصر
بله گفته دوستمون sohil_ww (http://barnamenevis.org/member.php?274781-sohil_ww) صحیحه ولی برای اینکه مشکل Catch برات حل بشه خط اولی رو هم بیار داخل try
فکر کنم مشکلت حل میشه

csharpprogramer88
شنبه 12 مرداد 1392, 18:54 عصر
می خوای اخرین شماره آیدی ثبت شده رو برگردونی ؟! !

اگه اره از تابع last استفاده کن این جوری داری لغمه رو می چرخونی (نخوری لغمه رو ها ماه رمضانه !!! )

باشه حرفتو گوش میدم نمیخورم

از این تایع استفاده نکردم تا حالا نمونه کد داری؟

csharpprogramer88
شنبه 12 مرداد 1392, 18:56 عصر
بله گفته دوستمون sohil_ww (http://barnamenevis.org/member.php?274781-sohil_ww) صحیحه ولی برای اینکه مشکل Catch برات حل بشه خط اولی رو هم بیار داخل try
فکر کنم مشکلت حل میشه

داخل بیارم جواب میده ولی شکل دستور try نغض نمیشه؟

sohil_ww
شنبه 12 مرداد 1392, 19:09 عصر
چرا که ندارم

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

این کد میاد آخرین مقدار از ستون انتخاب شده را بر می گردونه

select Last(column) from table

در ضمن شما می تونی بیای با تایع count تعداد ستون ها تو بدست بیاری اگه از 0 بود کاری که تو catch کردیو انجام بدی

مهرداد صفا
شنبه 12 مرداد 1392, 19:30 عصر
با سلام.
برای گرفتن آخرین شناسه ای که در جدول قرار داده شده از تابع IDENT_CURRENT (http://technet.microsoft.com/en-us/library/ms175098.aspx) هم می توانید استفاده کنید. البته باید مستقیم به پایگاده داده connect شوید ولی سرعت خیلی بهتری خواهید داشت.

Mahmoud.Afrad
شنبه 12 مرداد 1392, 22:46 عصر
با متد Any وجود رکورد رو میتونید چک کنید.

private int getmaxID_groupfactorkharid()
{
if (database.tbl_group_factorkharid.Any())
{
var Result = database.tbl_group_factorkharid.Max(x => x.id_factor_kharid);
return Result + 1;
}
else
{
return 1;
}
}

csharpprogramer88
شنبه 12 مرداد 1392, 23:28 عصر
با سلام.
برای گرفتن آخرین شناسه ای که در جدول قرار داده شده از تابع IDENT_CURRENT (http://technet.microsoft.com/en-us/library/ms175098.aspx) هم می توانید استفاده کنید. البته باید مستقیم به پایگاده داده connect شوید ولی سرعت خیلی بهتری خواهید داشت.


تا حالا چنین چیزی به گوشم نخورده بیشتر توضیح میدید؟

FastCode
یک شنبه 13 مرداد 1392, 15:18 عصر
چه کاریه میکنید آخه؟
ساده ترین کار اینه که چک کنید Result خالی نباشه.به جای var هم از int? استفاده کنید.

مهرداد صفا
یک شنبه 13 مرداد 1392, 18:23 عصر
تا حالا چنین چیزی به گوشم نخورده بیشتر توضیح میدید؟

این تابع آخرین Identity که در یک جدول قرار داده شده را بر می گرداند:


SELECT IDENT_CURRENT('نام جدول');

و در صورتی که مجوزهای لازم برای دسترسی به object وجود نداشته باشد مقدار NULL را بر می گرداند.
بر خلاف @@IDENTITY و SCOPE_INDENTITY این تابع محدودیتی نسبت به scope و session ندارد و تنها نام جدول را گرفته آخرین شناسه آن را بر می گرداند.
با مثال زیر می توانید آخرین شناسه های تمام جدولهای database جاری را ببینید:


SqlDataAdapter adapter = new SqlDataAdapter("select name,IDENT_CURRENT(name) as LastId from sys.tables", "server=.\\sqlexpress;integrated security=true;database=yourDataBaseName;");
dataGridView1.DataSource = new DataTable();
adapter.Fill((DataTable)dataGridView1.DataSource);