PDA

View Full Version : سوال: اضافه کردن یک مقدار به مقدار قبلی درون بانک از ado.net



mmdostd
شنبه 04 دی 1395, 21:11 عصر
با سلام
میخوام وقتی روی باتنم کلیک میکنم
مقدار فیلد توی بانکم به اضافه 1 بشه
مثلا تو سی شارپ با متغیر ها این کار رو میکردیم :
x=x+1
حالا فکر کنیم متغیر ایکس من یه فیلدیه تو بانک!
من میخوام هر بار که باتن مورد نظرمو میزنم،مقدار داخل فیلد مورد نظرم به اضافه 1 بشه
و مقدارشو داخل یه جایی مثل تکست باکس نمایش بده
وقتی هم که مقدار اون فیلدم بیشتر از 10 بود،دیگه اجازه ثبت نده
چون زیاد آشنایی با ado.net ندارم،ممنون میشم کد های مربوطه رو قرار بدید

mojtaba0912433
دوشنبه 06 دی 1395, 12:16 عصر
مورد اول يه Select از بانكت ميزني به علاوه 1 ميكني و نشون ميدي (select max()+1)
مورد دوم هم با شرط گذاري حل ميشه

mmdostd
دوشنبه 06 دی 1395, 23:23 عصر
مورد اول يه Select از بانكت ميزني به علاوه 1 ميكني و نشون ميدي (select max()+1)
مورد دوم هم با شرط گذاري حل ميشه
با سلام
متوجه منظورم نشدید
من نمیخوام تنها نمایش داده بشه!
من میخوام این مقدار تو بانکم ثبت بشه
یعنی اگه 2 بود،با زدن دکمه، به اضافه 1 بشه و در بانک ثبت و تو فرم نمایش داده بشه

mojtaba0912433
سه شنبه 07 دی 1395, 09:23 صبح
اون چيزي كه به نظر من ميرسه اول با يه select اون فيلد را بدست بياري و توي فرمت نمايش بدي و بعد با يه insert ‌توي بانكت ثبت كني

csharpcollegian
سه شنبه 07 دی 1395, 12:11 عصر
سلام
یکی از راه هایی که دارید اینه که این کار رو در خود دیتابیس به کمک یه پروسیجر انجام بدید:


CREATE PROCEDURE MyProc
AS
BEGIN
if ((Select Column_Name From Table_Name Where 'Your Condition') < 10)
Begin
Update Table_Name Set Column_Name = Column_Name + 1 Where 'Your Condition'
return (Select Column_Name From Table_Name Where 'Your Condition')
End
else
return -1
END
GO
زمانی که مقدار فیلد بیشتر از 10 بشه دیگه عملیات اضافه کردن رو انجام نمیده و عدد -1 رو برمی گردونه که به کمک اون می تونید برای کاربر پیغام مورد نظرتون رو به نمایش بذارید.
موفق باشید

mmdostd
چهارشنبه 08 دی 1395, 01:35 صبح
سلام
یکی از راه هایی که دارید اینه که این کار رو در خود دیتابیس به کمک یه پروسیجر انجام بدید:


CREATE PROCEDURE MyProc
AS
BEGIN
if ((Select Column_Name From Table_Name Where 'Your Condition') < 10)
Begin
Update Table_Name Set Column_Name = Column_Name + 1 Where 'Your Condition'
return (Select Column_Name From Table_Name Where 'Your Condition')
End
else
return -1
END
GO
زمانی که مقدار فیلد بیشتر از 10 بشه دیگه عملیات اضافه کردن رو انجام نمیده و عدد -1 رو برمی گردونه که به کمک اون می تونید برای کاربر پیغام مورد نظرتون رو به نمایش بذارید.
موفق باشید
نمیشه بدون پروسیجر باشه؟
من تو فرم میخوام بنویسمشون :(

csharpcollegian
چهارشنبه 08 دی 1395, 10:26 صبح
چرا میشه ! در رویداد کلیک باتن مورد نظر، ابتدا یک Select از جدول مورد نظر بزنید و به کمک یه if مقدار ستونش رو بررسی کنید. اگر کمتر از 10 بود جدول مورد نظر رو Update کنید و اگر نبود هم که پیغام به کاربر.
برای دستور Select و Update هم می تونید از مثالی که در پروسیجر پست قبل براتون گذاشتم استفاده کنید.

csharpcollegian
چهارشنبه 08 دی 1395, 10:42 صبح
چون زیاد آشنایی با ado.net ندارم،ممنون میشم کد های مربوطه رو قرار بدید

برای اجرای کوئری Select از روشی که توو این پست (http://barnamenevis.org/showthread.php?533360-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D8%AF%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%A8%D8%A7%D9%86%DA%A9-%D8%A8%D9%87-textbox) بهتون گفتم استفاده کنید و برای اجرای کوئری Update هم می تونید از روش زیر استفاده کنید :

SqlConnection Con = new SqlConnection(@"Your Connection String");
SqlCommand Cmd = new SqlCommand("Update Table_Name Set Column_Name = Column_Name + 1 Where 'Your Condition'", Con);
Con.Open();
Cmd.ExecuteNonQuery();
Con.Close();
موفق باشید