proc.prg

来自「山泉的早期工资管理VB程序.可以一看,不错的」· PRG 代码 · 共 563 行

PRG
563
字号
FUNCTION  GetNewID
* 作用:产生新的编号
* 参数:表名
* 要求:产生的新的编号比现有最大的编号大1
PARAMETERS cAlias
SELECT (cAlias)

IF RECCOUNT(cAlias)>0 && 如果已经有记录
	n=1
	SCAN
		n=MAX(n,VAL(编号))
	ENDSCAN
ELSE
	n=0
ENDIF
RETURN SUBSTR(ALLTRIM(STR(n+10000001)),2)
*RETURN SUBSTR(ALLTRIM(STR(RECCOUNT(cAlias)+10000001)),2)




FUNCTION GetNewUid
* 作用:产品新的主键
cNewUID=SYS(3)
RETURN cNewUID
ENDFUNC



PROCEDURE OpenData
* 作用:打开数据库及表
SET DELETED ON


IF NOT DBUSED('maejsb')
	OPEN DATABASE \maejsb\data\maejsb.dbc
ENDIF

SET DATABASE TO maejsb
* 入库单
* 主表
IF NOT USED('入库')
	USE 入库 IN 0 NODATA
ENDIF
SELECT 入库
INDEX ON 编号 TAG 编号 descending
INDEX ON 日期 TAG 日期 descending
INDEX ON 发票号 TAG 发票号
INDEX ON 支票号 TAG 支票号
INDEX ON 供货单位 TAG 供货单位
SET ORDER TO 

CURSORSETPROP("Buffering" ,3,'入库')

* 细节
IF NOT USED('入库1')
	USE 入库1 IN 0 NODATA
ENDIF
SELECT 入库1
CURSORSETPROP("Buffering" ,5,'入库1')

* 职工
IF NOT USED('职工')
	USE 职工 IN 0
ENDIF

* 供货单位
IF NOT USED('供货')
	USE 供货 IN 0
ENDIF

* 类别
IF NOT USED('类别')
	USE 类别 IN 0
ENDIF

* 计量单位
IF NOT USED('计量单位')
	USE 计量单位 IN 0
ENDIF


IF NOT USED('科室')
	USE 科室 IN 0
ENDIF

IF NOT USED('领料1')
	USE 领料1 IN 0 NODATA
ENDIF

SELECT 领料1

CURSORSETPROP("Buffering" ,5,'领料1')

IF NOT USED('领料')
	USE 领料 IN 0 NODATA
ENDIF

SELECT 领料
INDEX ON 编号 TAG 编号 descending
INDEX ON 日期 TAG 日期 descending
INDEX ON 科室 TAG 科室

CURSORSETPROP("Buffering" ,3,'领料')
cDisplayValue='%%'
SET ORDER TO 
IF NOT USED('产品')
	USE 产品 IN 0 
	*NODATA
ENDIF

***************************************
IF NOT USED('代码维护')
	USE 代码维护 IN 0 NODATA
ENDIF
SELECT 代码维护
INDEX ON 名称 TAG 名称
INDEX ON 代码 TAG 代码

CURSORSETPROP("Buffering" ,5,'代码维护')

IF NOT USED('代码类型')
	USE 代码类型 IN 0 
ENDIF



***************************************
IF NOT USED('供货单位')
	USE 供货单位 IN 0 SHARED
ENDIF
SELECT 供货单位
INDEX ON 名称 TAG 名称
INDEX ON 联系人 TAG 联系人
INDEX ON 电话 TAG 电话
INDEX ON 开户行 TAG 开户行
INDEX ON 帐号 TAG 帐号
INDEX ON 地址 TAG 地址
SET ORDER TO 

CURSORSETPROP("Buffering" ,5,'供货单位')

***************************************
IF NOT USED('供货商')
	USE 供货商 IN 0 SHARED
ENDIF
SELECT 供货商
INDEX ON 名称 TAG 名称
INDEX ON 联系人 TAG 联系人
INDEX ON 电话 TAG 电话
INDEX ON 开户行 TAG 开户行
INDEX ON 帐号 TAG 帐号
INDEX ON 地址 TAG 地址
SET ORDER TO 

CURSORSETPROP("Buffering" ,5,'供货商')


***************************************
IF NOT USED('计量')
	USE 计量 IN 0 NODATA
ENDIF
SELECT 计量
INDEX ON 编号 TAG 编号
INDEX ON 仪器名称 TAG 仪器名称
INDEX ON 型号规格 TAG 型号规格
INDEX ON 日期 TAG 日期
INDEX ON 数量 TAG 数量
INDEX ON 单位 TAG 单位
INDEX ON 单价 TAG 单价
INDEX ON 科室 TAG 科室
INDEX ON 金额 TAG 金额
INDEX ON 检定单位 TAG 检定单位


CURSORSETPROP("Buffering" ,5,'计量')


IF NOT USED('检定单位')
	USE 检定单位 IN 0
ENDIF

***********************************************
IF NOT USED('维修单位')
	USE 维修单位 IN 0
ENDIF

IF NOT USED('维修')
	USE 维修 IN 0 NODATA
ENDIF
SELECT 维修
INDEX ON 编号 TAG 编号
INDEX ON 仪器名称 TAG 仪器名称
INDEX ON 型号规格 TAG 型号规格
INDEX ON 金额 TAG 金额
INDEX ON 维修单位 TAG 维修单位
INDEX ON 日期 TAG 日期
INDEX ON 科室 TAG 科室

INDEX ON 项目工期 TAG 项目工期

CURSORSETPROP("Buffering" ,5,'维修')


IF NOT USED('产品1')
	USE 产品1 IN 0 NODATA
ENDIF
SELECT 产品1

IF NOT USED('config')
	USE config IN 0 
ENDIF
SELECT config
PUBLIC gd开始日期,gd截止日期

gd开始日期=config.开始日期
gd截止日期=config.截止日期

* 打印"物资验收入库单"用
IF NOT USED('打印入库单')
	USE 打印入库单 IN 0 NODATA
ENDIF

c领料单号=''
* 打印"物资验收入库单"用
IF NOT USED('打印领料单')
	USE 打印领料单 IN 0 NODATA
ENDIF

*SET DATABASE TO MAEJSB

IF NOT USED('right')
	USE right IN 0
ENDIF
SELECT right
*INDEX ON operator TAG operator

IF NOT USED('operator')
	USE operator IN 0
ENDIF
SELECT operator
*INDEX ON operator TAG operator


IF NOT USED('function')
	USE function IN 0
ENDIF

ENDPROC

* 查找权限
* 调用程序:
* 1.
* 2.
* 3.

PROCEDURE FindRight
LPARAMETERS cOperator,cRight

LOCAL cOldAlias
cOldAlias=ALIAS()

SELECT RIGHT &&切换至当前工作
SELECT *;
 FROM maejsb!right;
 WHERE Right.operator = ?cOperator;
   AND Right.function = ?cRight ;
   INTO CURSOR view_right
   
glIsSee=view_right.IsSee
glIsAdd=view_right.IsAdd
glIsEdit=view_right.IsEdit
glIsDel=view_right.IsDel
glIsPrint=view_right.IsPrint

IF glIsAdd
	glIsSee=.T.
	glIsEdit=.T.
ENDIF
IF	glIsSee=.F.
	glISAdd=.F.
	glIsEdit=.F.
	glIsDel=.F.
ENDIF

* 关闭临时表	
USE IN view_right
* 恢复环境
IF NOT EMPTY(cOldAlias)
	SELECT &cOldAlias
ENDIF

RETURN


* 作用:压缩文件
* 参数:cFilePath 表示某公司某年数据的路径
* 调用:n=ZipFile(cFilePath)

FUNCTION ZipFile
PARAMETERS cSourceFile,cTargetFile

*LOCAL cFilePath as String,n as Integer 

*注册的外部 Windows 32 位动态链接库(.DLLS)
DECLARE Integer ZipFiles IN "ziptoolkit.dll"  as zip String,String,integer,String
*参数1:被压缩文件列表。用全路径表示文件;支持通佩符;多个文件用分号分割;参数长度不超过255个字符
*参数2:压缩后文件名称。
*参数3:压缩级别。取值 1-9,取值越大,压缩比率越高,处理越慢。
*参数4:压缩口令。空白字符串表示不设口令。

n=Zip(cSourceFile,cTargetFile,9,"600423")
* 从内存中清除所有用 DECLARE-DLL 注册的外部 Windows 32 位动态链接库(.DLLS)。
clear dlls "zip"

RETURN n
ENDFUNC



*解压缩文件

*函数声明:DECLARE Integer UnZipFile IN "ziptoolkit.dll" String,String,String
*返回值:0>=0成功解压缩文件的数量;-1失败
*参数1:被解压缩文件
*参数2:释放路径
*参数3:解压缩口令。空白字符串表示不设口令。

*例如:
*DECLARE Integer UnZipFile IN "ziptoolkit.dll" as unzip String,String,String
*?unzip("F:\zip\test.zip","F:\zip\t1t\","")
*clear dlls "unzip"

FUNCTION UnZipFile
PARAMETERS cSourceFile,cTargetFile

DECLARE Integer UnZipFile IN "ziptoolkit.dll" as unzip String,String,String
n=unzip(cSourceFile,cTargetFile,"600423")
clear dlls "unzip"
RETURN n
ENDFUNC


* 关闭数据库及表
PROCEDURE CloseData
* 备份前先关闭数据文件
SET DATABASE TO maejsb && 设置数据库"account"为当前数据库

CLOSE DATABASES && 关闭数据库


IF USED("config")
	USE IN config
ENDIF

IF USED("function")
	USE IN function
ENDIF

IF USED("operator")
	USE IN operator
ENDIF

IF USED("right")
	USE IN right
ENDIF

IF USED("代码")
	USE IN 代码
ENDIF

IF USED("供应商")
	USE IN 供应商
ENDIF

IF USED("计量费用")
	USE IN 计量费用
ENDIF

IF USED("领料单")
	USE IN 领料单
ENDIF

IF USED("领料单1")
	USE IN 领料单1
ENDIF


IF USED("入库单")
	USE IN 入库单
ENDIF

IF USED("入库单1")
	USE IN 入库单1
ENDIF

IF USED("维修费用")
	USE IN 维修费用
ENDIF

IF USED("仪器设备")
	USE IN 仪器设备
ENDIF

IF USED("综合月报表")
	USE IN 综合月报表
ENDIF

* 关闭视图
IF USED("v1")
	USE IN v1
ENDIF


IF USED("v2")
	USE IN v2
ENDIF

IF USED("v3")
	USE IN v3
ENDIF


IF USED("v4")
	USE IN v4
ENDIF

IF USED("view1")
	USE IN view1
ENDIF

IF USED("材料采购表")
	USE IN 材料采购表
ENDIF

IF USED("材料月报")
	USE IN 材料月报
ENDIF

IF USED("采购表1")
	USE IN 采购表1
ENDIF

IF USED("产品")
	USE IN 产品
ENDIF

IF USED("产品1")
	USE IN 产品1
ENDIF

IF USED("产品编号")
	USE IN 产品编号
ENDIF

IF USED("打印领料单")
	USE IN 打印领料单
ENDIF

IF USED("打印入库单")
	USE IN 打印入库单
ENDIF


IF USED("代码类型")
	USE IN 代码类型
ENDIF

IF USED("代码维护")
	USE IN 代码维护
ENDIF

IF USED("供货")
	USE IN 供货
ENDIF

IF USED("供货单位")
	USE IN 供货单位
ENDIF

IF USED("供货商")
	USE IN 供货商
ENDIF

IF USED("计量")
	USE IN 计量
ENDIF

IF USED("计量单位")
	USE IN 计量单位
ENDIF

IF USED("计量月报")
	USE IN 计量月报
ENDIF

IF USED("检定单位")
	USE IN 检定单位
ENDIF

IF USED("科室")
	USE IN 科室
ENDIF

IF USED("领料")
	USE IN 领料
ENDIF

IF USED("领料1")
	USE IN 领料1
ENDIF


IF USED("入库")
	USE IN 入库
ENDIF

IF USED("入库1")
	USE IN 入库1
ENDIF

IF USED("维修")
	USE IN 维修
ENDIF

IF USED("维修报表")
	USE IN 维修报表
ENDIF

IF USED("维修单位")
	USE IN 维修单位
ENDIF

IF USED("维修月报")
	USE IN 维修月报
ENDIF

IF USED("仪器采购表")
	USE IN 仪器采购表
ENDIF

IF USED("仪器设备月报")
	USE IN 仪器设备月报
ENDIF

IF USED("仪器设备月报0")
	USE IN 仪器设备月报0
ENDIF

IF USED("员工")
	USE IN 员工
ENDIF

IF USED("职工")
	USE IN 职工
ENDIF

IF USED("综合报表")
	USE IN 综合报表
ENDIF

RETURN

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?