添加新订单 存储过程
主要是用到number号自动生成功能,
我知道错问题是出在number上,就是不知道在哪里出错?
(存储过程应该没问题的!)---插入客户订单
CREATE PROCEDURE A_insert
(
@Adate varchar(50),
@Ath nvarchar(1000),
@Awhy nvarchar(1000),
@Asl varchar(50),
@Amon varchar(50),
@Aqia varchar(50),
@Atel varchar(50),
@Acw varchar(50),
@Aunum varchar(50),
@Ausern varchar(50),
@Ausere varchar(50),
@Ags varchar(50),
@Adq varchar(50),
@Abm varchar(50),
@Azw varchar(50),
@Azwd varchar(50),
@Afj varchar(50),
@Atd varchar(50),
@Add Datetime,
@Adm char(20),
@Amail varchar(50)
)
ASSET NOCOUNT ON --这一个部分还可单独提取到一个存储过程中通过传入“单据标识号”和“单据表名”为参数---找帐套字头号
DECLARE @IH char(1)
SELECT @IH ='A'--编号年月部分
DECLARE @YM char(6)
SET @YM = CONVERT(char(6),GETDATE(),12)
--单据字头
DECLARE @DJHH char(8)
SET @DJHH = @IH + @YM
--找编号的基值(方法:用当天的编号到排序取最大的一个。如当前最大编号为0001那么它的基值为1,这样就能得出下个编号为0002)
DECLARE @MNO INT --当天最大的单据号(数值)
SET @MNO = 1
select TOP 1 @MNO = CONVERT(int,RIGHT(number,4))+1 from A where left(number,8) = @DJHH order by number desc
DECLARE @Anumber char(20) --扩充成4位十进制编号(最大可显示9999)
IF @MNO < 9999
IF @MNO < 999
IF @MNO < 99
IF @MNO < 9
SET @Anumber = @DJHH + '000' + CONVERT(char(1),@MNO)
ELSE
SET @Anumber = @DJHH + '00' + CONVERT(char(2),@MNO)
ELSE
SET @Anumber = @DJHH + '0' + CONVERT(char(3),@MNO)
ELSE
SET @Anumber = @DJHH + CONVERT(char(4),@MNO)
ELSE
SET @Anumber = @DJHH + '9999'
----(可提取的部分结束)------------------------------------
INSERT INTO A
(number,A_date,A_th,A_why,A_sl,A_mon,A_qia,A_tel,A_cw,A_unum,A_usern,A_usere,A_gs,A_dq,A_bm,A_zw,A_zwd,A_fj,A_td,A_dd,A_dm,A_mail)
VALUES
(@Anumber,@Adate,@Ath,@Awhy,@Asl,@Amon,@Aqia,@Atel,@Acw,@Aunum,@Ausern,@Ausere,@Ags,@Adq,@Abm,@Azw,@Azwd,@Afj,@Atd,@Add,@Adm,@Amail)
RETURN
GO
DAL层引用/// <summary>
/// 新增表单申请书
/// </summary>
/// <param name="A"></param>
/// <returns></returns>
public int Add_A(AModel Aorder)
{
SQLHelper sqlh = new SQLHelper();
SqlParameter[] PalamList ={
//sqlh.CreateInParam("@id",SqlDbType.Int,4,Aorder.Id),
//sqlh.CreateInParam("@xid", SqlDbType.Int,4,Aorder.Xid),
sqlh.CreateInParam("@Anumber",SqlDbType.Char,20,Aorder.Number),
sqlh.CreateInParam("@Adate",SqlDbType.VarChar,50,Aorder.A_date),
sqlh.CreateInParam("@Ath",SqlDbType.NVarChar,1000,Aorder.A_th),
sqlh.CreateInParam("@Awhy",SqlDbType.NVarChar,1000,Aorder.A_why),
sqlh.CreateInParam("@Asl",SqlDbType.VarChar,50,Aorder.A_sl),
sqlh.CreateInParam("@Amon",SqlDbType.VarChar,500,Aorder.A_mon),
sqlh.CreateInParam("@Aqia",SqlDbType.VarChar,50,Aorder.A_qia),
sqlh.CreateInParam("@Atel",SqlDbType.VarChar,50,Aorder.A_tel),
sqlh.CreateInParam("@Acw",SqlDbType.VarChar,50,Aorder.A_cw),
sqlh.CreateInParam("@Aunum",SqlDbType.VarChar,50,Aorder.A_unum),
sqlh.CreateInParam("@Ausern",SqlDbType.VarChar,50,Aorder.A_usern),
sqlh.CreateInParam("@Ausere",SqlDbType.VarChar,50,Aorder.A_usere),
sqlh.CreateInParam("@Ags",SqlDbType.VarChar,50,Aorder.A_gs),
sqlh.CreateInParam("@Adq",SqlDbType.VarChar,50,Aorder.A_dq),
sqlh.CreateInParam("@Abm",SqlDbType.VarChar,50,Aorder.A_bm),
sqlh.CreateInParam("@Azw",SqlDbType.VarChar,50,Aorder.A_zw),
sqlh.CreateInParam("@Azwd",SqlDbType.VarChar,50,Aorder.A_zwd),
sqlh.CreateInParam("@Afj",SqlDbType.VarChar,50,Aorder.A_fj),
sqlh.CreateInParam("@Atd",SqlDbType.VarChar,50,Aorder.A_td),
sqlh.CreateInParam("@Add",SqlDbType.DateTime,8,Aorder.A_dd),
sqlh.CreateInParam("@Adm",SqlDbType.Char,20,Aorder.A_dm),
sqlh.CreateInParam("@Amail",SqlDbType.VarChar,50,Aorder.A_mail)
};
try
{
return (sqlh.RunProc("A_insert", PalamList));
}
catch (Exception ex)
{
SystemError.CreateErrorLog(ex.Message);
throw new Exception(ex.Message, ex);
}
}
WEB层代码:protected void Button2_Click(object sender, EventArgs e)
{
if (this.txtbox_why.Text == "")
{
Response.Write("<script>alert('事由不能为空!');</script>");
}
else if (this.txtbox_th.Text == "")
{
Response.Write("<script>alert('申请事项不能为空!');</script>");
}
else
{
AModel Amodel = new AModel();
Amodel.A_date = this.YYSimpleCalendar1.Text;
//Amodel.Number = "A" + Common.StrHelper.GetRamCode();//本来这是另外一种方法,我现在是直接在存储过程里得到number号!!
Amodel.A_th = this.txtbox_th.Text.Trim();
Amodel.A_why = this.txtbox_why.Text.Trim();
Amodel.A_sl = this.txtbox_sl.Text.Trim();
Amodel.A_mon = this.txtbox_fy.Text.Trim();
Amodel.A_qia = this.txtbox_qia.Text.Trim();
Amodel.A_cw = this.txtbox_cw.Text.Trim();
Amodel.A_tel = this.txtbox_tel.Text.Trim();
Amodel.A_unum = this.txtbox_gh.Text.Trim();
Amodel.A_usern = this.txtbox_usern.Text.Trim();
Amodel.A_usere = this.txtbox_usere.Text.Trim();
Amodel.A_gs = this.txtbox_gs.Text.Trim();
Amodel.A_dq = this.txt_dq.Text.Trim();
Amodel.A_bm = this.txtbox_bm.Text.Trim();
Amodel.A_zw = this.txtbox_zw.Text.Trim();
Amodel.A_zwd = this.txtbox_zwd.Text;
Amodel.A_fj = this.txtbox_tel.Text.Trim();
Amodel.A_td = this.lab_A_td.Text.Trim();
Amodel.A_dd = DateTime.Now;
Amodel.A_dm = "";
Amodel.A_mail = this.Hidden_mail.Value;
ABLL abll = new ABLL();
if (abll.Add_A(Amodel) > 0)
{
Response.Write("<script>alert('添加成功!');location.href='Get_User2.aspx';</script>");
}
else
{
Response.Write("<script>alert('添加失败!');location.href='Get_User2.aspx';</script>");
}
}
}
主要是用到number号自动生成功能,
我知道错问题是出在number上,就是不知道在哪里出错?
(存储过程应该没问题的!)---插入客户订单
CREATE PROCEDURE A_insert
(
@Adate varchar(50),
@Ath nvarchar(1000),
@Awhy nvarchar(1000),
@Asl varchar(50),
@Amon varchar(50),
@Aqia varchar(50),
@Atel varchar(50),
@Acw varchar(50),
@Aunum varchar(50),
@Ausern varchar(50),
@Ausere varchar(50),
@Ags varchar(50),
@Adq varchar(50),
@Abm varchar(50),
@Azw varchar(50),
@Azwd varchar(50),
@Afj varchar(50),
@Atd varchar(50),
@Add Datetime,
@Adm char(20),
@Amail varchar(50)
)
ASSET NOCOUNT ON --这一个部分还可单独提取到一个存储过程中通过传入“单据标识号”和“单据表名”为参数---找帐套字头号
DECLARE @IH char(1)
SELECT @IH ='A'--编号年月部分
DECLARE @YM char(6)
SET @YM = CONVERT(char(6),GETDATE(),12)
--单据字头
DECLARE @DJHH char(8)
SET @DJHH = @IH + @YM
--找编号的基值(方法:用当天的编号到排序取最大的一个。如当前最大编号为0001那么它的基值为1,这样就能得出下个编号为0002)
DECLARE @MNO INT --当天最大的单据号(数值)
SET @MNO = 1
select TOP 1 @MNO = CONVERT(int,RIGHT(number,4))+1 from A where left(number,8) = @DJHH order by number desc
DECLARE @Anumber char(20) --扩充成4位十进制编号(最大可显示9999)
IF @MNO < 9999
IF @MNO < 999
IF @MNO < 99
IF @MNO < 9
SET @Anumber = @DJHH + '000' + CONVERT(char(1),@MNO)
ELSE
SET @Anumber = @DJHH + '00' + CONVERT(char(2),@MNO)
ELSE
SET @Anumber = @DJHH + '0' + CONVERT(char(3),@MNO)
ELSE
SET @Anumber = @DJHH + CONVERT(char(4),@MNO)
ELSE
SET @Anumber = @DJHH + '9999'
----(可提取的部分结束)------------------------------------
INSERT INTO A
(number,A_date,A_th,A_why,A_sl,A_mon,A_qia,A_tel,A_cw,A_unum,A_usern,A_usere,A_gs,A_dq,A_bm,A_zw,A_zwd,A_fj,A_td,A_dd,A_dm,A_mail)
VALUES
(@Anumber,@Adate,@Ath,@Awhy,@Asl,@Amon,@Aqia,@Atel,@Acw,@Aunum,@Ausern,@Ausere,@Ags,@Adq,@Abm,@Azw,@Azwd,@Afj,@Atd,@Add,@Adm,@Amail)
RETURN
GO
DAL层引用/// <summary>
/// 新增表单申请书
/// </summary>
/// <param name="A"></param>
/// <returns></returns>
public int Add_A(AModel Aorder)
{
SQLHelper sqlh = new SQLHelper();
SqlParameter[] PalamList ={
//sqlh.CreateInParam("@id",SqlDbType.Int,4,Aorder.Id),
//sqlh.CreateInParam("@xid", SqlDbType.Int,4,Aorder.Xid),
sqlh.CreateInParam("@Anumber",SqlDbType.Char,20,Aorder.Number),
sqlh.CreateInParam("@Adate",SqlDbType.VarChar,50,Aorder.A_date),
sqlh.CreateInParam("@Ath",SqlDbType.NVarChar,1000,Aorder.A_th),
sqlh.CreateInParam("@Awhy",SqlDbType.NVarChar,1000,Aorder.A_why),
sqlh.CreateInParam("@Asl",SqlDbType.VarChar,50,Aorder.A_sl),
sqlh.CreateInParam("@Amon",SqlDbType.VarChar,500,Aorder.A_mon),
sqlh.CreateInParam("@Aqia",SqlDbType.VarChar,50,Aorder.A_qia),
sqlh.CreateInParam("@Atel",SqlDbType.VarChar,50,Aorder.A_tel),
sqlh.CreateInParam("@Acw",SqlDbType.VarChar,50,Aorder.A_cw),
sqlh.CreateInParam("@Aunum",SqlDbType.VarChar,50,Aorder.A_unum),
sqlh.CreateInParam("@Ausern",SqlDbType.VarChar,50,Aorder.A_usern),
sqlh.CreateInParam("@Ausere",SqlDbType.VarChar,50,Aorder.A_usere),
sqlh.CreateInParam("@Ags",SqlDbType.VarChar,50,Aorder.A_gs),
sqlh.CreateInParam("@Adq",SqlDbType.VarChar,50,Aorder.A_dq),
sqlh.CreateInParam("@Abm",SqlDbType.VarChar,50,Aorder.A_bm),
sqlh.CreateInParam("@Azw",SqlDbType.VarChar,50,Aorder.A_zw),
sqlh.CreateInParam("@Azwd",SqlDbType.VarChar,50,Aorder.A_zwd),
sqlh.CreateInParam("@Afj",SqlDbType.VarChar,50,Aorder.A_fj),
sqlh.CreateInParam("@Atd",SqlDbType.VarChar,50,Aorder.A_td),
sqlh.CreateInParam("@Add",SqlDbType.DateTime,8,Aorder.A_dd),
sqlh.CreateInParam("@Adm",SqlDbType.Char,20,Aorder.A_dm),
sqlh.CreateInParam("@Amail",SqlDbType.VarChar,50,Aorder.A_mail)
};
try
{
return (sqlh.RunProc("A_insert", PalamList));
}
catch (Exception ex)
{
SystemError.CreateErrorLog(ex.Message);
throw new Exception(ex.Message, ex);
}
}
WEB层代码:protected void Button2_Click(object sender, EventArgs e)
{
if (this.txtbox_why.Text == "")
{
Response.Write("<script>alert('事由不能为空!');</script>");
}
else if (this.txtbox_th.Text == "")
{
Response.Write("<script>alert('申请事项不能为空!');</script>");
}
else
{
AModel Amodel = new AModel();
Amodel.A_date = this.YYSimpleCalendar1.Text;
//Amodel.Number = "A" + Common.StrHelper.GetRamCode();//本来这是另外一种方法,我现在是直接在存储过程里得到number号!!
Amodel.A_th = this.txtbox_th.Text.Trim();
Amodel.A_why = this.txtbox_why.Text.Trim();
Amodel.A_sl = this.txtbox_sl.Text.Trim();
Amodel.A_mon = this.txtbox_fy.Text.Trim();
Amodel.A_qia = this.txtbox_qia.Text.Trim();
Amodel.A_cw = this.txtbox_cw.Text.Trim();
Amodel.A_tel = this.txtbox_tel.Text.Trim();
Amodel.A_unum = this.txtbox_gh.Text.Trim();
Amodel.A_usern = this.txtbox_usern.Text.Trim();
Amodel.A_usere = this.txtbox_usere.Text.Trim();
Amodel.A_gs = this.txtbox_gs.Text.Trim();
Amodel.A_dq = this.txt_dq.Text.Trim();
Amodel.A_bm = this.txtbox_bm.Text.Trim();
Amodel.A_zw = this.txtbox_zw.Text.Trim();
Amodel.A_zwd = this.txtbox_zwd.Text;
Amodel.A_fj = this.txtbox_tel.Text.Trim();
Amodel.A_td = this.lab_A_td.Text.Trim();
Amodel.A_dd = DateTime.Now;
Amodel.A_dm = "";
Amodel.A_mail = this.Hidden_mail.Value;
ABLL abll = new ABLL();
if (abll.Add_A(Amodel) > 0)
{
Response.Write("<script>alert('添加成功!');location.href='Get_User2.aspx';</script>");
}
else
{
Response.Write("<script>alert('添加失败!');location.href='Get_User2.aspx';</script>");
}
}
}
多传了一个参数
//sqlh.CreateInParam("@Anumber",SqlDbType.Char,20,Aorder.Number),
但是number号没取到值为null,
“添加失败!”
IF @MNO < 9999
IF @MNO < 999
IF @MNO < 99
IF @MNO < 9
SET @Anumber = @DJHH + '000' + CONVERT(char(1),@MNO)
ELSE
SET @Anumber = @DJHH + '00' + CONVERT(char(2),@MNO)
ELSE
SET @Anumber = @DJHH + '0' + CONVERT(char(3),@MNO)
ELSE
SET @Anumber = @DJHH + CONVERT(char(4),@MNO)
ELSE
SET @Anumber = @DJHH + '9999'
那就把这段代码改一下
--扩充成4位十进制编号(最大可显示9999)
IF @MNO < 9999
IF @MNO < 999
IF @MNO < 99
IF @MNO < 9
SET @Anumber = @DJHH + '000' + CONVERT(char(1),@MNO)
ELSE
SET @Anumber = @DJHH + '00' + CONVERT(char(2),@MNO)
ELSE
SET @Anumber = @DJHH + '0' + CONVERT(char(3),@MNO)
ELSE
SET @Anumber = @DJHH + CONVERT(char(4),@MNO)
ELSE
SET @Anumber = @DJHH + '9999' 那就把这段代码改一下
========================================================
好像跟我原来的没变,怎么改?
我以前也用过这个存储过程的,没问题的!
只不过是没用3层架构的方式写!