rambod51
دوشنبه 12 مرداد 1394, 11:39 صبح
با سلام
من یه تیکه کد نوشتم که از تو سی شارپ برای برداشت از حساب که یه سری پارامتر رو به Sp میفرسته و یک حساب رو چک میکنه اگر مقداری که میخوایم از حساب برداشت کنیم از موجودی بیشتر بود و حساب منفی میشد کاری انجام نده در غیر این صورت از حساب برداشت کنه
Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 0, current count = 1.
رو میده این دستورات من هستش
ALTER proc [dbo].[bar1]
@i nvarchar(13),
@dat nvarchar(10),
@vari int,
@bar int ,
@tra nvarchar(10),
@mand1 int output
--@result int output
as
begin tran t2
insert Into gardesh(id,date1,variz,bardasht,tarakonesh)Values
(@i,@dat,@vari,@bar,@tra);
if (exists (select * from mandeh where ID=@i))
begin
select @mand1= mandeh from mandeh where id=@i
if @mand1-@bar<0
begin
set @mand1=0
rollback tran t2
end
else
begin
UpDate mandeh set mandeh=mandeh-@bar,date1=@dat where id=@i;
-- set @result=1
set @mand1=1
end
end
commit tran t2
و اینم پارامترها و دستورات من
public partial class pbardasht : System.Web.UI.Page
{
SqlConnection conObj;
protected void Page_Load(object sender, EventArgs e)
{
conObj = new SqlConnection("data source=.; database=test; integrated security=true;");
}
protected void Button1_Click(object sender, EventArgs e)
{
SqlCommand cmdObj = new SqlCommand("bar1", conObj);
cmdObj.CommandType = CommandType.StoredProcedure;
cmdObj.Parameters.AddWithValue("@i", TextBox1.Text);
cmdObj.Parameters.AddWithValue("@dat", TextBox2.Text);
cmdObj.Parameters.AddWithValue("@vari", Convert.ToInt32(TextBox3.Text));
cmdObj.Parameters.AddWithValue("@bar", Convert.ToInt32(TextBox4.Text));
cmdObj.Parameters.AddWithValue("@tra", TextBox5.Text);
cmdObj.Parameters.Add("@mand1",SqlDbType.Int);
cmdObj.Parameters["@mand1"].Direction=ParameterDirection.Output;
//cmdObj.Parameters.Add("@result", SqlDbType.Int);
// cmdObj.Parameters["@result"].Direction = ParameterDirection.Output;
conObj.Open();
cmdObj.ExecuteNonQuery();
conObj.Close();
اگر کسی بتونه کمک کنه ممنون میشم
133872
کل قسمتی که نیازه رو ضمیمه کردم اسم sp من bar1
با تشکر از همه شما دوستان میباشد
من یه تیکه کد نوشتم که از تو سی شارپ برای برداشت از حساب که یه سری پارامتر رو به Sp میفرسته و یک حساب رو چک میکنه اگر مقداری که میخوایم از حساب برداشت کنیم از موجودی بیشتر بود و حساب منفی میشد کاری انجام نده در غیر این صورت از حساب برداشت کنه
Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 0, current count = 1.
رو میده این دستورات من هستش
ALTER proc [dbo].[bar1]
@i nvarchar(13),
@dat nvarchar(10),
@vari int,
@bar int ,
@tra nvarchar(10),
@mand1 int output
--@result int output
as
begin tran t2
insert Into gardesh(id,date1,variz,bardasht,tarakonesh)Values
(@i,@dat,@vari,@bar,@tra);
if (exists (select * from mandeh where ID=@i))
begin
select @mand1= mandeh from mandeh where id=@i
if @mand1-@bar<0
begin
set @mand1=0
rollback tran t2
end
else
begin
UpDate mandeh set mandeh=mandeh-@bar,date1=@dat where id=@i;
-- set @result=1
set @mand1=1
end
end
commit tran t2
و اینم پارامترها و دستورات من
public partial class pbardasht : System.Web.UI.Page
{
SqlConnection conObj;
protected void Page_Load(object sender, EventArgs e)
{
conObj = new SqlConnection("data source=.; database=test; integrated security=true;");
}
protected void Button1_Click(object sender, EventArgs e)
{
SqlCommand cmdObj = new SqlCommand("bar1", conObj);
cmdObj.CommandType = CommandType.StoredProcedure;
cmdObj.Parameters.AddWithValue("@i", TextBox1.Text);
cmdObj.Parameters.AddWithValue("@dat", TextBox2.Text);
cmdObj.Parameters.AddWithValue("@vari", Convert.ToInt32(TextBox3.Text));
cmdObj.Parameters.AddWithValue("@bar", Convert.ToInt32(TextBox4.Text));
cmdObj.Parameters.AddWithValue("@tra", TextBox5.Text);
cmdObj.Parameters.Add("@mand1",SqlDbType.Int);
cmdObj.Parameters["@mand1"].Direction=ParameterDirection.Output;
//cmdObj.Parameters.Add("@result", SqlDbType.Int);
// cmdObj.Parameters["@result"].Direction = ParameterDirection.Output;
conObj.Open();
cmdObj.ExecuteNonQuery();
conObj.Close();
اگر کسی بتونه کمک کنه ممنون میشم
133872
کل قسمتی که نیازه رو ضمیمه کردم اسم sp من bar1
با تشکر از همه شما دوستان میباشد