Long Row
String Is_OrderNO
uo_buildorderno uo_1
Is_OrderNO=uo_1.uo_buildorderno()//此处是调用一个自定义对象(存储过程调用)生成一个订单编号
Row=dw_2.InsertRow(0)
dw_2.Object.Orderno[Row]=Is_OrderNO
//存储过程,此过程没有错误,贴出来参考而已。
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE BuildOrderNO
@OrderNO VarChar(12) OUTPUT
AS
--生成生产编号
DECLARE @MAXOrderNO VarChar(12)
DECLARE @StartOrderNO VarChar(5)
DECLARE @EndOrderNO VarChar(5)
DECLARE @EndOrderNOID Integer
SET @StartOrderNO=CONVERT(VarChar(4),GETDATE(),12)
SELECT @MAXOrderNO=MAX(OrderNO)
FROM SalesOrder
WHERE OrderNO LIKE @StartOrderNO+'%'
IF @MAXOrderNO IS NULL
BEGIN
SET @[email protected]+'001'
RETURN 0
END
SET @EndOrderNO=RIGHT(@MAXOrderNO,3)
SET @EndOrderNOID=CONVERT(Integer,@EndOrderNO)
SET @[email protected]+1
SET @EndOrderNO=CONVERT(VarChar(5),@EndOrderNOID)
SET @EndOrderNO=SPACE(3-LEN(@EndOrderNO))[email protected]
SET @EndOrderNO=REPLACE(@EndOrderNO,SPACE(1),'0')
SET @[email protected][email protected]
RETURN 0
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
我现在想将我调用存储过程自动生成的订单编号插入到后台数据库表OrderNO中,我怎么在PB中使用Insert插入不了呢?
我想直接在pb中插入到后台数据库表中,而不是利用存储插入,那个我会。
------解决方案--------------------
楼主的描述有些不清楚的地方:
1、我现在想将我调用存储过程自动生成的订单编号插入到后台数据库表OrderNO中,我怎么在PB中使用Insert插入不了呢?
你指的插入不了是什么意思,按你上面的代码,如果你定义的那个对象的函数是返回这个存储过程的返回值的话,对数据窗口进行update再commit后应该就有记录了呀,你指的insert插入不了是指哪?
2、我想直接在pb中插入到后台数据库表中,而不是利用存储插入,那个我会。
你的存储过程只是生成一个编号,什么时候实现了插入呢,如果你不想用存储过程的话根据存储过程定义的编号规则把代码直接写到pb里就可以呀
string ls_pre,ls_id,ls_maxid
Long Row
long ll_id
ls_pre = string(today(),'yymm')
SELECT MAX(OrderNO) into :ls_maxid
FROM SalesOrder
WHERE OrderNO LIKE :ls_pre+'%' ;
if IsNull(ls_maxid) then ls_maxid=''
ll_id = long(right(ls_maxid,3))
ll_id++
ls_id = ls_pre + string(ll_id,'000')
Row=dw_2.InsertRow(0)
dw_2.Object.Orderno[Row]=ls_id
------解决方案--------------------
呵呵,是数据窗口对象的update属性没设置好,
rows->update properties菜单里面的
------解决方案--------------------
提示信息的意思是数据窗口没有更新容器,
在出现的窗口中选择Allow update
并选择更新的表及更新字段,关键字等,
保存后就可以了~~