增加信息成功后返回int编号和内容的问题
程序中部分代码如下:protectedvoidImageButton1_Click(objectsender,System.Web.UI.ImageClickEventA...
程序中部分代码如下:
protected void ImageButton1_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
BillDispense bill = new BillDispense();
bill.BillType = this.DropDownList1.SelectedValue;
bill.BillStartCode = this.TextBox1.Text;
bill.BillEndCode = this.TextBox2.Text;
bill.ReceiveBillPerson = this.DropDownList2.SelectedValue;
bill.AcceptStation = this.txtbBirthday.Text;
bill.ReceiveBillTime = Convert.ToDateTime(this.TextBox3.Text);
bill.ReleasePerson = this.DropDownList3.SelectedValue;
BillBusiness billBusiness = new BillBusiness();
if (billBusiness.CreateBillDispense(bill))
{
Response.Redirect("BillDispenseList.aspx");
}// 增加操作成功
else
{
Utility.AlertMsg(this, "增加用户失败!");
}// 增加操作失败
}
运行后错误为:无法将int隐式转换为bool。
因为其中CreateBillDispense方法执行后返回的是int型输出参数(这个方法相关存储过程在以下给出)。
意思就是增加成功后向BillDispenseList.aspx返回一条带PKID和以上内容的自增数据。该怎样修改原程序?
方法相关存储过程:
ALTER procedure [dbo].[uspCreateBillDispense](
@billType VARCHAR(50), --票据类型
@billStartCode VARCHAR(50), --票据开始号
@billEndCode VARCHAR(50), --票据结束号
@receiveBillPerson VARCHAR(50), --领票人
@acceptStation VARCHAR(50), --接货点
@receiveBillTime DATETIME, --领票时间
@releasePerson VARCHAR(50), --分发人
@PKID INT OUTPUT --票据ID
)
as
begin tran --加事务控制
insert into BillMgt_BillDispense(
billType
,billStartCode
,billEndCode
,receiveBillPerson
,acceptStation
,receiveBillTime
,releasePerson
)
values(@billType
,dbo.funGenerateBillCode(@billType,@billStartCode,@receiveBillTime) --函数直接用
,dbo.funGenerateBillCode(@billType,@billEndCode,@receiveBillTime) --函数直接用
,@receiveBillPerson
,@acceptStation
,@receiveBillTime
,@releasePerson
)
set @PKID=Scope_identity()-- 获取自增列
if @@error<>0
goto error
commit tran
return 0
error:
rollback tran
return 1
业务层方法CreateBillDispense是int型的,就像我题中说的那样,如果是bool就不会报错了吧。。。
我也非常想把这个定义成bool,可是从存储过程的int 输出参数,到实体层,到数据访问层,到业务层,它的返回值都是int。。。。。 展开
protected void ImageButton1_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
BillDispense bill = new BillDispense();
bill.BillType = this.DropDownList1.SelectedValue;
bill.BillStartCode = this.TextBox1.Text;
bill.BillEndCode = this.TextBox2.Text;
bill.ReceiveBillPerson = this.DropDownList2.SelectedValue;
bill.AcceptStation = this.txtbBirthday.Text;
bill.ReceiveBillTime = Convert.ToDateTime(this.TextBox3.Text);
bill.ReleasePerson = this.DropDownList3.SelectedValue;
BillBusiness billBusiness = new BillBusiness();
if (billBusiness.CreateBillDispense(bill))
{
Response.Redirect("BillDispenseList.aspx");
}// 增加操作成功
else
{
Utility.AlertMsg(this, "增加用户失败!");
}// 增加操作失败
}
运行后错误为:无法将int隐式转换为bool。
因为其中CreateBillDispense方法执行后返回的是int型输出参数(这个方法相关存储过程在以下给出)。
意思就是增加成功后向BillDispenseList.aspx返回一条带PKID和以上内容的自增数据。该怎样修改原程序?
方法相关存储过程:
ALTER procedure [dbo].[uspCreateBillDispense](
@billType VARCHAR(50), --票据类型
@billStartCode VARCHAR(50), --票据开始号
@billEndCode VARCHAR(50), --票据结束号
@receiveBillPerson VARCHAR(50), --领票人
@acceptStation VARCHAR(50), --接货点
@receiveBillTime DATETIME, --领票时间
@releasePerson VARCHAR(50), --分发人
@PKID INT OUTPUT --票据ID
)
as
begin tran --加事务控制
insert into BillMgt_BillDispense(
billType
,billStartCode
,billEndCode
,receiveBillPerson
,acceptStation
,receiveBillTime
,releasePerson
)
values(@billType
,dbo.funGenerateBillCode(@billType,@billStartCode,@receiveBillTime) --函数直接用
,dbo.funGenerateBillCode(@billType,@billEndCode,@receiveBillTime) --函数直接用
,@receiveBillPerson
,@acceptStation
,@receiveBillTime
,@releasePerson
)
set @PKID=Scope_identity()-- 获取自增列
if @@error<>0
goto error
commit tran
return 0
error:
rollback tran
return 1
业务层方法CreateBillDispense是int型的,就像我题中说的那样,如果是bool就不会报错了吧。。。
我也非常想把这个定义成bool,可是从存储过程的int 输出参数,到实体层,到数据访问层,到业务层,它的返回值都是int。。。。。 展开
4个回答
展开全部
你看看业务层的方法是不是bool类型。
if (billBusiness.CreateBillDispense(bill)>0)
{
Response.Redirect("BillDispenseList.aspx");
}// 增加操作成功
else
{
Utility.AlertMsg(this, "增加用户失败!");
}// 增加操作失败
}
if (billBusiness.CreateBillDispense(bill)>0)
{
Response.Redirect("BillDispenseList.aspx");
}// 增加操作成功
else
{
Utility.AlertMsg(this, "增加用户失败!");
}// 增加操作失败
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.你把(BLL层)BillBusiness类里的CreateBillDispense(BillDispense)方法改成返回Bool值。
2. if (billBusiness.CreateBillDispense(bill)>0) 改成2楼说的
2. if (billBusiness.CreateBillDispense(bill)>0) 改成2楼说的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个和 CreateBillDispense 的返回值有关系,要看你的CreateBillDispense在使用存储过程的时候,是否使用了 RETURN_VALUE 的参数。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
billBusiness.CreateBillDispense(bill) 这个方法是不是int类型的?改成bool看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询