询问者
严重bug,请朋友帮忙看下(磨了我一天了。没弄出来,郁闷)

问题
-
页面错误信息(对象关闭时,不允许操作)
我asp页面调用存储过程。
该存储过程有2个功能。add与update
为什么我调用该存储过程,执行update没有问题。执行add页面显示(对象关闭时,不允许操作)
我直接在数据库里面执行存储过程测试,add与update没有问题。
到了页面测试,更新没有问题,新增就出问题了。我页面新增与更新调用的是同一个function processData()在网上找了好多这错误信息原因,都说是存储过程问题,我也按照他们方法设置set nocount on也不行。
请大家帮忙看下。下面我贴下代码。朋友看了别嫌多哈。
1、存储过程--=====================================================================================
ALTER PROCEDURE prc_processWBCssData
@wb_guid UNIQUEIDENTIFIER,
@wb_mach_no varchar(50),
@wb_match varchar(50),
@wb_maker varchar(50),
@wb_maker_why varchar(50),
@wb_part_no varchar(50),
@wb_lot_no varchar(50),
@wb_memory INT=0,
@wb_lead_f varchar(50),
@wb_loop_height varchar(50)='',
@wb_capillary varchar(50)='',
@wb_spec_btime varchar(50)='',
@wb_spec_bpower varchar(50)='',
@wb_spec_bforce varchar(50)='',
@wb_spec_temp varchar(50)='',
@wb_real_btime varchar(50)='',
@wb_real_bpower varchar(50)='',
@wb_real_bforce varchar(50)='',
@wb_real_temp varchar(50)='',
@wb_wire_size varchar(50)='',
@wb_wire_type varchar(50)='',
@wb_vi_qty varchar(50)='',
@wb_vi_name varchar(50)='',
@wb_mk_qty varchar(50)='',
@wb_mk_name varchar(50)='',
@wb_card_spec varchar(50)='',
@wb_bond_spec varchar(50)='',
@wb_is_qfp INT=0,
@wb_remark varchar(1000)='',
@wb_qa_ispass INT=0,
@wb_qa_time varchar(50)='',
@wb_qa_power varchar(50)='',
@wb_qa_force varchar(50)='',
@wb_qa_temp varchar(50)='',
@wb_ws_ispass INT=0,
@wb_ws_data varchar(50)='',
@wb_strip_ispass INT=0,
@wb_strip_data varchar(50)='',
@wb_wb_ispass INT=0,
@wb_wb_data varchar(50)='',
@wb_bpt_ispass INT=0,
@wb_bpt_data1 varchar(50)='',
@wb_bpt_data2 varchar(50)='',
@wb_bpt_data3 varchar(50)='',
@wb_bpt_data4 varchar(50)='',
@wb_bpt_data5 varchar(50)='',
@wb_bpt_data6 varchar(50)='',
@wb_bst_ispass INT=0,
@wb_bst_data1 varchar(50)='',
@wb_bst_data2 varchar(50)='',
@wb_bst_data3 varchar(50)='',
@wb_bst_data4 varchar(50)='',
@wb_bst_data5 varchar(50)='',
@wb_bst_data6 varchar(50)='',
@wb_bh_ispass INT=0,
@wb_bh_data1 varchar(50)='',
@wb_bh_data2 varchar(50)='',
@wb_lh_ispass INT=0,
@wb_lh_data1 varchar(50)='',
@wb_lh_data2 varchar(50)='',
@wb_bs_ispass INT=0,
@wb_bs_data1 varchar(50)='',
@wb_bs_data2 varchar(50)='',
@wb_qfp_ispass INT=0,
@wb_qfp_data varchar(50)='',
@wb_check_ispass INT=0,
@wb_check_user varchar(50),
--@wb_uporAdd VARCHAR(50),
@wb_step_code varchar(50)='A070'
AS
SET NOCOUNT ON
DECLARE @counts INT,@status INT,@wb_status INT
SET @counts=0 --初始化行数
SET @wb_status=0
DECLARE @flag INT
SET @flag=-2
IF EXISTS (SELECT * FROM WB_MASTER wm WHERE wm.wb_lot_no=@wb_lot_no AND wm.wb_step_code=@wb_step_code)
BEGIN
SET NOCOUNT ON
SELECT @counts =MAX(wm.wb_check_count) FROM WB_MASTER wm WHERE wm.wb_lot_no=@wb_lot_no AND wm.wb_step_code=@wb_step_code
--获取最后一条记录数的状态
SELECT @status=wm.wb_status
FROM WB_MASTER wm WHERE wm.wb_lot_no=@wb_lot_no AND wm.wb_step_code=@wb_step_code AND wm.wb_check_count=@counts
IF @status=1 --已经审核通过
SET @flag=2
ELSE IF @status=-1 --审核未通过 Add
SET @flag=0
ELSE IF @status=0 --未审核 update
SET @flag=1
END
ELSE --?W/B CSS表内无记录
BEGIN
IF EXISTS (SELECT * FROM WM_TABLE wt WHERE wt.wm_lot_no=@wb_lot_no AND wt.wm_step=@wb_step_code)
SET @flag=0 --存在记录,新增记录
ELSE
SET @flag=-1 --在wm_table内无此记录
END
IF @flag=-1
BEGIN
RAISERROR ('无此lot_no记录',16,1) --Error
RETURN
END
IF @flag=2
BEGIN
RAISERROR('已经审核通过,不可再次操作',16,1)
RETURN
END
ELSE IF @flag=0 --Add --新增的时候需要判断是否未通过,未通过有checkcount数量,需要记录。如果是第一次新增,直接checkcount=1
BEGIN
SET NOCOUNT ON
SET @counts=@counts+1
--SET @wb_check_count=@counts
--IF @wb_uporAdd='regist'
IF EXISTS (SELECT * FROM WB_MASTER wm WHERE wm.wb_lot_no=@wb_lot_no
AND wm.wb_match=@wb_match AND wm.wb_status=1)
begin
RAISERROR('此lot_no已经通过审核,无法再次操作!',16,1)
RETURN
END
INSERT INTO WB_MASTER(wb_mach_no,wb_match,wb_maker,wb_maker_why,wb_part_no,wb_lot_no,wb_act_date,
wb_memory,wb_lead_f,wb_loop_height,wb_capillary,wb_spec_btime,wb_spec_bpower,wb_spec_bforce,wb_spec_temp,
wb_real_btime,wb_real_bpower,wb_real_bforce,wb_real_temp,wb_wire_size,wb_wire_type,wb_vi_qty,wb_vi_name,
wb_mk_qty,wb_mk_name,wb_card_spec,wb_bond_spec,wb_is_qfp,wb_status,wb_check_count,wb_modfiy,wb_step_code)
VALUES(@wb_mach_no,@wb_match,@wb_maker,@wb_maker_why,@wb_part_no,@wb_lot_no,convert(VARCHAR,getdate(),120),@wb_memory,@wb_lead_f,
@wb_loop_height,@wb_capillary,@wb_spec_btime,@wb_spec_bpower,@wb_spec_bforce,@wb_spec_temp,@wb_real_btime,
@wb_real_bpower,@wb_real_bforce,@wb_real_temp,@wb_wire_size,@wb_wire_type,@wb_vi_qty,@wb_vi_name,@wb_mk_qty,
@wb_mk_name,@wb_card_spec,@wb_bond_spec,@wb_is_qfp,0,@counts,convert(VARCHAR,getdate(),120),@wb_step_code)
--SET NOCOUNT OFF
END
ELSE IF @flag=1 --Update --??
BEGIN
SET NOCOUNT ON
IF @wb_check_ispass=0
SET @wb_status=-1
IF @wb_check_ispass=1
SET @wb_status=1
--IF @wb_uporAdd='modify'
UPDATE WB_MASTER SET wb_remark = @wb_remark,wb_qa_ispass = @wb_qa_ispass,wb_qa_time = @wb_qa_time,
wb_qa_power = @wb_qa_power,wb_qa_force = @wb_qa_force,wb_qa_temp = @wb_qa_temp, wb_ws_ispass = @wb_ws_ispass,
wb_ws_data = @wb_ws_data,wb_strip_ispass = @wb_strip_ispass,wb_strip_data = @wb_strip_data,
wb_wb_ispass = @wb_wb_ispass,wb_wb_data = @wb_wb_data,wb_bpt_ispass = @wb_bpt_ispass,
wb_bpt_data1 = @wb_bpt_data1,wb_bpt_data2 = @wb_bpt_data2,wb_bpt_data3 = @wb_bpt_data3,
wb_bpt_data4 = @wb_bpt_data4,wb_bpt_data5 = @wb_bpt_data5,wb_bpt_data6 = @wb_bpt_data6,
wb_bst_ispass = @wb_bst_ispass,wb_bst_data1 = @wb_bst_data1,wb_bst_data2 = @wb_bst_data2,
wb_bst_data3 = @wb_bst_data3,wb_bst_data4 = @wb_bst_data4,wb_bst_data5 = @wb_bst_data5,
wb_bst_data6 = @wb_bst_data6,wb_bh_ispass = @wb_bh_ispass,wb_bh_data1 = @wb_bh_data1,
wb_bh_data2 = @wb_bh_data2,wb_lh_ispass = @wb_lh_ispass,wb_lh_data1 = @wb_lh_data1,
wb_lh_data2 = @wb_lh_data2,wb_bs_ispass = @wb_bs_ispass,wb_bs_data1 = @wb_bs_data1,
wb_bs_data2 = @wb_bs_data2,wb_qfp_ispass = @wb_qfp_ispass,wb_qfp_data = @wb_qfp_data,
wb_status = @wb_status,wb_check_ispass = @wb_check_ispass,wb_check_date = convert(VARCHAR,getdate(),120),
wb_check_user = @wb_check_user,wb_modfiy = convert(VARCHAR,getdate(),120),wb_step_code = @wb_step_code
WHERE wb_guid=@wb_guid
END
GO2、调用COM+--==================================================================
Public Function F_B0320_07(formArry, errmsg)
On Error GoTo ErrRtn'这里面省略了很多参数,不写了
conn.Open strconn
With conn
.BeginTrans
sql = ""
sql = sql & " prc_processWBCssDataAdd '" & wb_mach_no & "','" & wb_match & "','" & wb_maker & "','" & wb_maker_why & "','"
sql = sql & wb_part_no & "','" & wb_lot_no & "'," & wb_memory & ",'" & wb_lead_f & "','" & wb_loop_height & "','"
sql = sql & wb_capillary & "','" & wb_spec_btime & "','" & wb_spec_bpower & "','" & wb_spec_bforce & "','"
sql = sql & wb_spec_temp & "','" & wb_real_btime & "','" & wb_real_bpower & "','" & wb_real_bforce & "','"
sql = sql & wb_real_temp & "','" & wb_wire_size & "','" & wb_wire_type & "','" & wb_vi_qty & "','" & wb_vi_name & "','"
sql = sql & wb_mk_qty & "','" & wb_mk_name & "','" & wb_card_spec & "','" & wb_bond_spec & "'," & wb_is_qfp & ""
.Execute (sql)
End With
conn.CommitTrans
conn.Close
F_B0320_07 = True
Exit Function
ErrRtn:
' rs.Close
conn.RollbackTrans
conn.Close
errmsg = errmsg & Err.Description
F_B0320_07 = False
Exit Function
End Function3、页面调用的function processData() --更新于新增调用的都是这个processData() 更新没有问题,新增有错误信息,所以我怀疑存储过程有问题
Function processData()
dim formArry(70)
formArry(0) = Document.all.txt_guid.valueset com_obj_temp = ads.CreateObject("P_MB0320.C_B0320_00",strAdd)
temp = com_obj_temp.F_B0320_07(formArry,errmsg)
'ProgressBar1.style.display = "none"
if temp =true then
SubErrMsg("2502")
form1.reset()
else
msgbox errmsg
end if
'ProgressBar1.style.display = "none"
'set com_obj_temp = nothing
End Function--===========================在线等,急啊。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
- 已移动 Sheng Jiang 蒋晟Moderator 2010年7月13日 16:17 (发件人:Visual Basic)
全部回复
-
页面错误信息(对象关闭时,不允许操作)
我asp页面调用存储过程。
该存储过程有2个功能。add与update
为什么我调用该存储过程,执行update没有问题。执行add页面显示(对象关闭时,不允许操作)
我直接在数据库里面执行存储过程测试,add与update没有问题。
到了页面测试,更新没有问题,新增就出问题了。我页面新增与更新调用的是同一个function processData()在网上找了好多这错误信息原因,都说是存储过程问题,我也按照他们方法设置set nocount on也不行。
请大家帮忙看下。下面我贴下代码。朋友看了别嫌多哈。
1、存储过程 --=====================================================================================
ALTER PROCEDURE prc_processWBCssData
@wb_guid UNIQUEIDENTIFIER,
@wb_mach_no varchar(50),
@wb_match varchar(50),
@wb_maker varchar(50),
@wb_maker_why varchar(50),
@wb_part_no varchar(50),
@wb_lot_no varchar(50),
@wb_memory INT=0,
@wb_lead_f varchar(50),
@wb_loop_height varchar(50)='',
@wb_capillary varchar(50)='',
@wb_spec_btime varchar(50)='',
@wb_spec_bpower varchar(50)='',
@wb_spec_bforce varchar(50)='',
@wb_spec_temp varchar(50)='',
@wb_real_btime varchar(50)='',
@wb_real_bpower varchar(50)='',
@wb_real_bforce varchar(50)='',
@wb_real_temp varchar(50)='',
@wb_wire_size varchar(50)='',
@wb_wire_type varchar(50)='',
@wb_vi_qty varchar(50)='',
@wb_vi_name varchar(50)='',
@wb_mk_qty varchar(50)='',
@wb_mk_name varchar(50)='',
@wb_card_spec varchar(50)='',
@wb_bond_spec varchar(50)='',
@wb_is_qfp INT=0,
@wb_remark varchar(1000)='',
@wb_qa_ispass INT=0,
@wb_qa_time varchar(50)='',
@wb_qa_power varchar(50)='',
@wb_qa_force varchar(50)='',
@wb_qa_temp varchar(50)='',
@wb_ws_ispass INT=0,
@wb_ws_data varchar(50)='',
@wb_strip_ispass INT=0,
@wb_strip_data varchar(50)='',
@wb_wb_ispass INT=0,
@wb_wb_data varchar(50)='',
@wb_bpt_ispass INT=0,
@wb_bpt_data1 varchar(50)='',
@wb_bpt_data2 varchar(50)='',
@wb_bpt_data3 varchar(50)='',
@wb_bpt_data4 varchar(50)='',
@wb_bpt_data5 varchar(50)='',
@wb_bpt_data6 varchar(50)='',
@wb_bst_ispass INT=0,
@wb_bst_data1 varchar(50)='',
@wb_bst_data2 varchar(50)='',
@wb_bst_data3 varchar(50)='',
@wb_bst_data4 varchar(50)='',
@wb_bst_data5 varchar(50)='',
@wb_bst_data6 varchar(50)='',
@wb_bh_ispass INT=0,
@wb_bh_data1 varchar(50)='',
@wb_bh_data2 varchar(50)='',
@wb_lh_ispass INT=0,
@wb_lh_data1 varchar(50)='',
@wb_lh_data2 varchar(50)='',
@wb_bs_ispass INT=0,
@wb_bs_data1 varchar(50)='',
@wb_bs_data2 varchar(50)='',
@wb_qfp_ispass INT=0,
@wb_qfp_data varchar(50)='',
@wb_check_ispass INT=0,
@wb_check_user varchar(50),
--@wb_uporAdd VARCHAR(50),
@wb_step_code varchar(50)='A070'
AS
SET NOCOUNT ON
DECLARE @counts INT,@status INT,@wb_status INT
SET @counts=0 --初始化行数
SET @wb_status=0
DECLARE @flag INT
SET @flag=-2
IF EXISTS (SELECT * FROM WB_MASTER wm WHERE wm.wb_lot_no=@wb_lot_no AND wm.wb_step_code=@wb_step_code)
BEGIN
SET NOCOUNT ON
SELECT @counts =MAX(wm.wb_check_count) FROM WB_MASTER wm WHERE wm.wb_lot_no=@wb_lot_no AND wm.wb_step_code=@wb_step_code
--获取最后一条记录数的状态
SELECT @status=wm.wb_status
FROM WB_MASTER wm WHERE wm.wb_lot_no=@wb_lot_no AND wm.wb_step_code=@wb_step_code AND wm.wb_check_count=@counts
IF @status=1 --已经审核通过
SET @flag=2
ELSE IF @status=-1 --审核未通过 Add
SET @flag=0
ELSE IF @status=0 --未审核 update
SET @flag=1
END
ELSE --?W/B CSS表内无记录
BEGIN
IF EXISTS (SELECT * FROM WM_TABLE wt WHERE wt.wm_lot_no=@wb_lot_no AND wt.wm_step=@wb_step_code)
SET @flag=0 --存在记录,新增记录
ELSE
SET @flag=-1 --在wm_table内无此记录
END
IF @flag=-1
BEGIN
RAISERROR ('无此lot_no记录',16,1) --Error
RETURN
END
IF @flag=2
BEGIN
RAISERROR('已经审核通过,不可再次操作',16,1)
RETURN
END
ELSE IF @flag=0 --Add --新增的时候需要判断是否未通过,未通过有checkcount数量,需要记录。如果是第一次新增,直接checkcount=1
BEGIN
SET NOCOUNT ON
SET @counts=@counts+1
--SET @wb_check_count=@counts
--IF @wb_uporAdd='regist'
IF EXISTS (SELECT * FROM WB_MASTER wm WHERE wm.wb_lot_no=@wb_lot_no
AND wm.wb_match=@wb_match AND wm.wb_status=1)
begin
RAISERROR('此lot_no已经通过审核,无法再次操作!',16,1)
RETURN
END
INSERT INTO WB_MASTER(wb_mach_no,wb_match,wb_maker,wb_maker_why,wb_part_no,wb_lot_no,wb_act_date,
wb_memory,wb_lead_f,wb_loop_height,wb_capillary,wb_spec_btime,wb_spec_bpower,wb_spec_bforce,wb_spec_temp,
wb_real_btime,wb_real_bpower,wb_real_bforce,wb_real_temp,wb_wire_size,wb_wire_type,wb_vi_qty,wb_vi_name,
wb_mk_qty,wb_mk_name,wb_card_spec,wb_bond_spec,wb_is_qfp,wb_status,wb_check_count,wb_modfiy,wb_step_code)
VALUES(@wb_mach_no,@wb_match,@wb_maker,@wb_maker_why,@wb_part_no,@wb_lot_no,convert(VARCHAR,getdate(),120),@wb_memory,@wb_lead_f,
@wb_loop_height,@wb_capillary,@wb_spec_btime,@wb_spec_bpower,@wb_spec_bforce,@wb_spec_temp,@wb_real_btime,
@wb_real_bpower,@wb_real_bforce,@wb_real_temp,@wb_wire_size,@wb_wire_type,@wb_vi_qty,@wb_vi_name,@wb_mk_qty,
@wb_mk_name,@wb_card_spec,@wb_bond_spec,@wb_is_qfp,0,@counts,convert(VARCHAR,getdate(),120),@wb_step_code)
--SET NOCOUNT OFF
END
ELSE IF @flag=1 --Update --??
BEGIN
SET NOCOUNT ON
IF @wb_check_ispass=0
SET @wb_status=-1
IF @wb_check_ispass=1
SET @wb_status=1
--IF @wb_uporAdd='modify'
UPDATE WB_MASTER SET wb_remark = @wb_remark,wb_qa_ispass = @wb_qa_ispass,wb_qa_time = @wb_qa_time,
wb_qa_power = @wb_qa_power,wb_qa_force = @wb_qa_force,wb_qa_temp = @wb_qa_temp, wb_ws_ispass = @wb_ws_ispass,
wb_ws_data = @wb_ws_data,wb_strip_ispass = @wb_strip_ispass,wb_strip_data = @wb_strip_data,
wb_wb_ispass = @wb_wb_ispass,wb_wb_data = @wb_wb_data,wb_bpt_ispass = @wb_bpt_ispass,
wb_bpt_data1 = @wb_bpt_data1,wb_bpt_data2 = @wb_bpt_data2,wb_bpt_data3 = @wb_bpt_data3,
wb_bpt_data4 = @wb_bpt_data4,wb_bpt_data5 = @wb_bpt_data5,wb_bpt_data6 = @wb_bpt_data6,
wb_bst_ispass = @wb_bst_ispass,wb_bst_data1 = @wb_bst_data1,wb_bst_data2 = @wb_bst_data2,
wb_bst_data3 = @wb_bst_data3,wb_bst_data4 = @wb_bst_data4,wb_bst_data5 = @wb_bst_data5,
wb_bst_data6 = @wb_bst_data6,wb_bh_ispass = @wb_bh_ispass,wb_bh_data1 = @wb_bh_data1,
wb_bh_data2 = @wb_bh_data2,wb_lh_ispass = @wb_lh_ispass,wb_lh_data1 = @wb_lh_data1,
wb_lh_data2 = @wb_lh_data2,wb_bs_ispass = @wb_bs_ispass,wb_bs_data1 = @wb_bs_data1,
wb_bs_data2 = @wb_bs_data2,wb_qfp_ispass = @wb_qfp_ispass,wb_qfp_data = @wb_qfp_data,
wb_status = @wb_status,wb_check_ispass = @wb_check_ispass,wb_check_date = convert(VARCHAR,getdate(),120),
wb_check_user = @wb_check_user,wb_modfiy = convert(VARCHAR,getdate(),120),wb_step_code = @wb_step_code
WHERE wb_guid=@wb_guid
END
GO2、调用 COM+--==================================================================
Public Function F_B0320_07(formArry, errmsg)
On Error GoTo ErrRtn'这里面省略了很多参数,不写了
conn.Open strconn
With conn
.BeginTrans
sql = ""
sql = sql & " prc_processWBCssDataAdd '" & wb_mach_no & "','" & wb_match & "','" & wb_maker & "','" & wb_maker_why & "','"
sql = sql & wb_part_no & "','" & wb_lot_no & "'," & wb_memory & ",'" & wb_lead_f & "','" & wb_loop_height & "','"
sql = sql & wb_capillary & "','" & wb_spec_btime & "','" & wb_spec_bpower & "','" & wb_spec_bforce & "','"
sql = sql & wb_spec_temp & "','" & wb_real_btime & "','" & wb_real_bpower & "','" & wb_real_bforce & "','"
sql = sql & wb_real_temp & "','" & wb_wire_size & "','" & wb_wire_type & "','" & wb_vi_qty & "','" & wb_vi_name & "','"
sql = sql & wb_mk_qty & "','" & wb_mk_name & "','" & wb_card_spec & "','" & wb_bond_spec & "'," & wb_is_qfp & ""
.Execute (sql)
End With
conn.CommitTrans
conn.Close
F_B0320_07 = True
Exit Function
ErrRtn:
' rs.Close
conn.RollbackTrans
conn.Close
errmsg = errmsg & Err.Description
F_B0320_07 = False
Exit Function
End Function3、页面调用的function processData() --更新于新增调用的都是这个processData() 更新没有问题,新增有错误信息,所以我怀疑存储过程有问题
Function processData()
dim formArry(70)
formArry(0) = Document.all.txt_guid.valueset com_obj_temp = ads.CreateObject("P_MB0320.C_B0320_00",strAdd)
temp = com_obj_temp.F_B0320_07(formArry,errmsg)
'ProgressBar1.style.display = "none"
if temp =true then
SubErrMsg("2502")
form1.reset()
else
msgbox errmsg
end if
'ProgressBar1.style.display = "none"
'set com_obj_temp = nothing
End Function--===========================在线等,急啊。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
- 已合并 Sheng Jiang 蒋晟Moderator 2010年7月13日 16:18
-
联系ads.CreateObject(P_MB0320.C_B0320_00)这个方法的作者以解决这个问题。
The following is signature, not part of post
Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
Visual C++ MVP