简单的审核操作,调用存储过程的方法如下:
long ll_row
string ls_message, ls_mtrl_no
if dw_main.rowcount() < 1 then return
SetPointer(HourGlass!)
sqlca.autocommit = True
DECLARE lp_diaobo PROCEDURE FOR proc_mm_create_pur_req_new_db ;
execute lp_diaobo;
close lp_diaobo;
sqlca.autocommit = False
SetPointer(Arrow!)
if sqlca.sqlcode = -1 then
ls_message = sqlca.sqlerrtext
messagebox('操作提示', '审核失败! 错误信息为:' + ls_message, stopsign!)
else
messagebox('操作提示', '审核成功!')
dw_main.retrieve()
end if
其中 sybase存储过程定义如下:
create proc proc_mm_create_pur_req_new_db
as
declare @dept_no char(10), @mtrl_no char(8), @req_amount decimal(18, 4),
@req_unit char(12), @req_type char(12), @req_date smalldatetime,
@ware_no char(10), @supp_no char(10), @order_no integer,
@sheet_no integer, @order_amount decimal(18, 4), @order_type char(20),
@arrive_date smalldatetime, @mtrl_cycle decimal(8, 2),
@ware_dist char(12), @real_stock decimal(18, 4), @li_item integer,
@real_trans decimal(18, 4), @ldt_today smalldatetime,
@adt_plan_date smalldatetime, @ls_order_status char(3),
@ls_res_dept char(10), @ls_dept_r3 char(4), @ls_local varchar(12)
select @ldt_today = convert(smalldatetime,convert(char(10), getdate(), 102))
update supp_mtrl_pur_assign_d
set res_dept_r3 = loca_no
from dept_to_r3
where supp_mtrl_pur_assign_d.res_dept = dept_to_r3.dept_no and
fun_type = '工厂' and
( res_dept_r3 = '' or res_dept_r3 = null )
declare lcu_pr_info cursor for
SELECT supp_mtrl_pur_assign_m.dept_no,
supp_mtrl_pur_assign_m.mtrl_no,
supp_mtrl_pur_assign_m.plan_date,
supp_mtrl_pur_assign_d.req_date,
supp_mtrl_pur_assign_d.assign_qty,
supp_mtrl_pur_assign_m.unit_no_l,
supp_mtrl_pur_assign_m.dispo,
supp_mtrl_pur_assign_m.stock_qty,
supp_mtrl_pur_assign_m.trans_qty,
supp_mtrl_pur_assign_d.res_dept,
supp_mtrl_pur_assign_d.res_dept_r3,
supp_mtrl_pur_assign_d.item_no
FROM supp_mtrl_pur_assign_d,
supp_mtrl_pur_assign_m
WHERE ( supp_mtrl_pur_assign_d.dept_no = supp_mtrl_pur_assign_m.dept_no ) and
( supp_mtrl_pur_assign_d.dept_no_r3 = supp_mtrl_pur_assign_m.dept_no_r3 ) and
( supp_mtrl_pur_assign_m.mtrl_no = supp_mtrl_pur_assign_d.mtrl_no ) and
( supp_mtrl_pur_assign_d.plan_date = supp_mtrl_pur_assign_m.plan_date ) and
( supp_mtrl_pur_assign_m.status = '调拨' ) AND
( supp_mtrl_pur_assign_d.res_dept <> '' or
supp_mtrl_pur_assign_d.res_dept = null ) and
( supp_mtrl_pur_assign_d.assign_qty > 0 ) and
substring(supp_mtrl_pur_assign_m.dept_no_r3, 1, 1) <> '2'
order by supp_mtrl_pur_assign_m.dept_no,
supp_mtrl_pur_assign_m.mtrl_no
open lcu_pr_info
fetch lcu_pr_info into @dept_no, @mtrl_no, @adt_plan_date,
@arrive_date, @req_amount, @req_unit, @req_type,
@real_stock, @real_trans, @ls_res_dept, @ls_dept_r3,
@li_item
while @@sqlstatus != 2
begin
if @@sqlstatus = 1
begin
raiserror 30001 "从服务器中取数据失败!"
return
end
select @ls_local = department.isnative
from department
where department.departmentid = @dept_no
if @ls_local <> '本地' or @ls_local = null
begin
SELECT @ware_no = higerdepartment.departmentid
FROM higerdepartment, materialascription a
where a.typename = higerdepartment.departmentid and
higerdepartment.ranktype = '行政' and
higerdepartment.ancientrankid = 20 and
a.classname = '仓库镒史掷? AND
higerdepartment.ancientid = @dept_no and
a.materialid = @mtrl_no and
a.rank = 1
if substring(@ls_dept_r3, 1, 1) = '2'
select @ls_order_status = '2'
else
select @ls_order_status = '8'
select @supp_no = @ls_res_dept
exec proc_getserialnumber 'supp_mtrl_purclist', @dept_no, @sheet_no out
select @ware_dist = rtrim(@ware_no) + '-1'
insert supp_mtrl_purclist
( dept_no, purc_sheet_no, ware_cc, supp_no,
mtrl_no, order_amount, unit_no, the_order_date,
plan_stat, plan_amount, the_price, purc_type,
arrive_date, ware_no, m_unit, c_rrencyname,
plan_type, real_stock, real_trans
)
values ( @dept_no, @sheet_no, @ware_no, @supp_no,
@mtrl_no, @order_amount, @req_unit, @adt_plan_date,
@ls_order_status, @req_amount, 0, @order_type,
@arrive_date, @ware_dist, '元', '人民币',
'月旬', @real_stock, @real_trans
)
update supp_mtrl_pur_assign_d
set sheet_no = @sheet_no
where supp_mtrl_pur_assign_d.dept_no = @dept_no and
supp_mtrl_pur_assign_d.mtrl_no = @mtrl_no and
supp_mtrl_pur_assign_d.plan_date = @adt_plan_date and
supp_mtrl_pur_assign_d.item_no = @li_item
insert supp_mtrl_pur_r3
( dept_no, mtrl_no, order_no, order_date,
mrp_ctrl, req_amount, req_plan, stock_amount,
trans_amount, stock_anq, mtrl_cycle, req_unit,
req_dept, req_type, req_status, item_no,
on_amount, conf_amount, staff_no, staff_name
)
select supp_mtrl_pur_assign_m.dept_no,
supp_mtrl_pur_assign_m.mtrl_no,
supp_mtrl_pur_assign_d.sheet_no,
supp_mtrl_pur_assign_m.plan_date,
supp_mtrl_pur_assign_m.mrp_ctrl,
supp_mtrl_pur_assign_m.req_all + supp_mtrl_pur_assign_m.sec_qty
- supp_mtrl_pur_assign_m.stock_qty - supp_mtrl_pur_assign_m.trans_qty,
supp_mtrl_pur_assign_m.req_all,
supp_mtrl_pur_assign_m.stock_qty,
supp_mtrl_pur_assign_m.trans_qty,
supp_mtrl_pur_assign_m.sec_qty,
supp_mtrl_pur_assign_m.mtrl_cycle,
supp_mtrl_pur_assign_m.unit_no_l,
supp_mtrl_pur_assign_m.dept_no_r3,
supp_mtrl_pur_assign_m.dispo,
'完成', 1,
supp_mtrl_pur_assign_d.req_qty,
supp_mtrl_pur_assign_d.req_qty,
supp_mtrl_pur_assign_m.staff_no,
supp_mtrl_pur_assign_m.staff_name
FROM supp_mtrl_pur_assign_d,
supp_mtrl_pur_assign_m
WHERE ( supp_mtrl_pur_assign_d.dept_no = supp_mtrl_pur_assign_m.dept_no ) and
( supp_mtrl_pur_assign_d.dept_no_r3 = supp_mtrl_pur_assign_m.dept_no_r3 ) and
( supp_mtrl_pur_assign_m.mtrl_no = supp_mtrl_pur_assign_d.mtrl_no ) and
( supp_mtrl_pur_assign_d.plan_date = supp_mtrl_pur_assign_m.plan_date ) and
supp_mtrl_pur_assign_d.dept_no = @dept_no and
supp_mtrl_pur_assign_d.mtrl_no = @mtrl_no and
supp_mtrl_pur_assign_d.plan_date = @adt_plan_date and
supp_mtrl_pur_assign_d.item_no = @li_item
end
fetch lcu_pr_info into @dept_no, @mtrl_no, @adt_plan_date,
@arrive_date, @req_amount, @req_unit, @req_type,
@real_stock, @real_trans, @ls_res_dept, @ls_dept_r3,
@li_item
end
close lcu_pr_info
deallocate cursor lcu_pr_info
update supp_mtrl_pur_assign_m
set status = '完成'
from supp_mtrl_pur_assign_d
where supp_mtrl_pur_assign_d.dept_no = supp_mtrl_pur_assign_m.dept_no and
supp_mtrl_pur_assign_d.dept_no_r3 = supp_mtrl_pur_assign_m.dept_no_r3 and
supp_mtrl_pur_assign_m.mtrl_no = supp_mtrl_pur_assign_d.mtrl_no and
supp_mtrl_pur_assign_d.plan_date = supp_mtrl_pur_assign_m.plan_date and
supp_mtrl_pur_assign_d.res_dept <> '' and
supp_mtrl_pur_assign_m.status = '调拨'
select @ldt_today
-----------------------------------------带参数的存储过程调用----------------------------------------
DECLARE erp_efficiency PROCEDURE FOR
erp_efficiency('','','')
EXECUTE erp_efficiency
分享到:
相关推荐
5. **外部数据库支持**:在某些情况下,列名和其他界面元素可能存储在数据库中,而不是硬编码在程序中。通过查询数据库获取对应的列名,可以根据用户的语言设置返回相应语言的列名。 6. **第三方库或框架**:有些...
总之,在PowerBuilder中播放声音文件是一个相对简单的过程,主要涉及引入和配置ActiveX控件,以及编写相应的PBScript代码。通过灵活运用这些技术,开发者可以在PowerBuilder应用中轻松集成音频功能,提升应用的互动...
本压缩包文件“pb使用技巧总结(普通下载).chm”显然是一个PowerBuilder的使用技巧集合,旨在帮助用户提升在PB开发过程中的效率和技能水平。下面将详细探讨一些可能包含在其中的关键知识点。 1. **窗口对象的使用**...
在学习过程中,参考书目是关键。这些书籍可能涵盖了PowerBuilder的基础概念,如窗口、菜单、控件的创建与管理,DataWindow的使用方法,以及高级主题,如网络应用开发、性能优化和错误处理。它们可能还会包括实际案例...
6. **脚本语言PBScript**:PowerBuilder使用PBScript作为其内置脚本语言,学习其语法、控制结构、函数和变量,以便在对象事件中编写逻辑代码。 7. **数据库连接与数据源**:掌握建立数据库连接的方法,包括ODBC和...
3. **脚本语言**:PB使用PBL(PowerBuilder Library)格式存储源代码,其中包含了基于ECMAScript的PBScript语言。开发者可以通过编写PBScript来实现动态报表的各种逻辑。 4. **数据绑定**:动态报表需要灵活地绑定...
数据窗口支持多种数据源,如SQL SELECT语句、存储过程、ODBC数据源等,并且具有丰富的显示样式,如表格、网格、图表等。 **3. PBScript** PBScript是PowerBuilder的内嵌脚本语言,类似于Visual Basic,用于控制对象...
- SQL语法:基础的SQL查询语句,如SELECT、INSERT、UPDATE和DELETE,以及更复杂的JOIN、子查询和存储过程。 3. **对象和事件驱动编程** - 用户界面(UI)组件:包括窗口(Window)、菜单(Menu)、按钮(Button)...
- `_SETUP.DLL、_INST32I.EX_`:安装过程中使用的动态链接库文件和安装引擎组件。 - `SETUP.EXE`:安装程序主文件,负责整个PowerBuilder 7.0.1的安装流程。 在使用这个老版本的PowerBuilder时,需要注意的是它可能...
4. **代码实现**:导出过程通常涉及编写 PBScript 或者.NET 事件代码。代码会创建一个 Excel 应用实例,打开或创建一个新的工作簿,然后遍历 DataWindow 的每一行和每一列,将数据写入相应的 Excel 单元格。 5. **...
3. **存储过程调用**:PB支持调用Oracle 12c中的存储过程和函数,实现数据库端的业务逻辑。 4. **事务管理**:PB提供了事务控制,如BEGIN TRANSACTION、COMMIT和ROLLBACK,以确保数据的一致性。 四、高级特性 1. ...
业务逻辑处理方面,教程会涉及到如何定义和调用函数、存储过程,以及如何使用脚本语言PBScript编写复杂的业务规则。PBScript与Visual Basic语法相似,易于学习和理解,通过它,开发者可以实现动态的业务逻辑。 数据...
3. **脚本语言PBLua(PBScript)**:PowerBuilder使用的是其专有的PBLua脚本语言,这将涉及到变量、常量、运算符、流程控制语句(如If-Then-Else、For-Next、While-Wend等)、函数和过程的使用,以及错误处理机制。...
DataWindow是基于数据集的,数据集可以是SQL查询结果、存储过程返回的结果或者直接的数据结构。开发者可以通过设计DataWindow来定义数据的布局、格式以及用户交互方式。DataWindow支持两种基本类型:Report和Grid。...
在PowerBuilder中,编程主要使用PBL(PowerBuilder Library)对象库和PBScript语言。PBScript是基于ECMAScript的一个变种,使得开发者可以编写业务逻辑和控制流。此外,PowerBuilder还支持.NET和Java的集成,允许...
在PowerBuilder中,源代码通常以.PB或.PBD扩展名存储,但这里可能是遵循了C语言的命名约定,暗示了项目可能包含用C语言编写的底层组件或接口。 为了更深入地理解这个项目,我们需要对这些源代码文件进行详细分析,...
数据窗支持多种数据源,包括SQL Select语句、存储过程、甚至XML,且可以自定义布局和行为,极大地提高了开发效率。 2. **C/S结构和B/S模式**:PowerBuilder既可以用于传统的Client/Server(C/S)架构,也可以作为...
开发过程中,可能涉及到数据模型设计、事务处理、触发器、存储过程等数据库技术,以及错误处理、界面交互设计等软件工程实践。通过这个项目,学习者可以深入理解如何将高级应用程序开发工具与数据库管理系统相结合,...
在学习这个系统的过程中,初学者还可以了解以下知识点: 1. **对象导向编程**:PowerBuilder使用PBL(PowerBuilder Library)库来管理对象,理解类、对象、继承、封装和多态性等概念对于深入学习PB至关重要。 2. **...
5. **数据库交互**:优化数据库连接,使用存储过程,处理大数据量的方法。 6. **调试与测试**:高效调试技巧,单元测试和集成测试的实施。 7. **错误处理与日志记录**:如何优雅地处理异常,建立有效的日志系统。 8....