دوست عزیز مطمعنا تمامی این راه ها به نوبه خودشون درست هستن ... اما اگر بخوای یک شرط رو پروسیجر شما چک کنه و نتیجه رو به شما برگردونه و برنامه شما باتوجه به مقدار بازگشتی از sql اقدام لازم رو انجام بده باید ازیک پارامتر خروجی استفاده کنی
من این مورد شمارو چک کردم و دقیقا با روشی که گفتم جواب میده
اول پروسیجر خودتو به این شکل تعریف کن
CREATE proc [dbo].[sum]
@name nvarchar(50),
@mablagh int ,
@bank nvarchar(50),
@tarikh nvarchar(50),
@vaze nvarchar(50)
--متغیر خروجی
,@Res int Output
AS
DECLARE @Total int
select @Total= sum(Mablagh) from Table_2 where vaze =@vaze
IF (@Total<@mablagh)
set @Res=1
ELSE
Begin
set @Res=0
insert into Table_2 (Name,mablagh,bank,tarikh,vaze)values(@name,@mablagh,@bank,@tarikh,@vaze)
END;
GO
بعد دستورات زیر در رویداد مورد نظر
private void button1_Click(object sender, EventArgs e)
{
SqlConnection con=new SqlConnection(@"server=SERVER\SQLK8R2;Database=Booter;user ID=sa;password=1");
SqlCommand com = new SqlCommand("sum", con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.AddWithValue("@name",TxtName.Text);
com.Parameters.AddWithValue("@mablagh", Convert.ToInt32(TxtMablagh.Text));
com.Parameters.AddWithValue("@bank", TxtBank.Text);
com.Parameters.AddWithValue("@tarikh", TxtTarikh.Text);
com.Parameters.AddWithValue("@vaze", CmbVaze.Text);
com.Parameters.Add("@Res",SqlDbType.Int);
com.Parameters["@Res"].Direction = ParameterDirection.Output;
//---------
try
{
con.Open();
com.ExecuteNonQuery();
int Results = Convert.ToInt32(com.Parameters["@Res"].Value);
if (Results == 1)
{
MessageBox.Show("مبلغ وارد شده بزرگتر از...");
}
else
{
MessageBox.Show("موجودی شما ثبت شد" );
}
}
catch (SqlException)
{
MessageBox.Show("مشکل در اجرای فرمان ارسالی");
}
finally
{
con.Close();
}
}
به این ترتیب اگر مبلغ وارد شده بزرگتر از مجموع مبالغ مورد نظر شما با توجه به شرط داخل پروسیجر باشه اطلاعات ثبت نمیشه اما اگه کمتر باشه ثبت میشه ....
موفق باشی