分类目录功能模型设计

博客围绕分类目录功能展开,介绍其用于基础资料单表数据输入。涵盖功能模型设计,如设置项目内容、用SQL表达式表示编辑条件等;分类目录定义窗口的必要操作,像复制功能、设计数据字典等;还包括后台接口设计和前端设计,以实现低代码和通用处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分类目录功能是指需要进行分级编码的单表数据的输入功能,主要用于基础资料,如客户目录、部门目录、存货目录、会计科目等。

一、功能模型设计内容

·按窗口内容设置好项目内容。
·字段列表中要包括所编辑数据集中的所有字段,不管是否在其他项目中出现。编码字段、上级字段和本级字段应排列在前。
·目录字段列表是指在目录树中显示的字段。除编码和名称字段外可在目录树中直接编辑
·编辑条件用SQL条件表达式表示(不含WHERE字样)。其中条件变量用大括号({})括上。确定后在载入条件栏中可以看到相关条目会自动生成,在此输入默认值。这样在使用时,用户初次打开功能窗口时是按默认条件载入数据,再次按载入按钮时,会弹出条件输入窗口,重置条件后载入。
·唯一字段。输入时可限制在当前载入范围内不允许重复。
·目录字段列表。树形目录使用的字段列表。未列出的将不在目录树中显示。编码字段为第一个显示字段,上级和本级字段不需要在目录树中显示。其他字段根据用户需要。
·级次字段。便于自动填写目录级次,以便在特定需要时使用。
·启用字段。启用标记字段。标记后不能编辑。
·参考条件字段。输入参考时作为关联条件的字段。
·查询条件。查询条件表达式。包含载入条件变量。用于载入数据时可选择载入表中的部分数据,避免一次载入的数据量过大。
·更新字段列表。启用后仍可更新字段列表。
·是否复制。添加时是否复制当前记录内容。
·提交提示。提交时应给予操作者的提示,如重新登录等。
·可以设置多个打印模板,在实际打印时选择。

二、分类目录定义窗口的必要操作

·复制功能定义。功能定义可复制,操作时输入目标功能编号即可。目标功能编号可不在本类功能中(不推荐)。
·删除功能面板。删除当前功能的输入表单设计面板。表单输入面板可在设计器中运行时进行设计(右键菜单)并保存,当项目内容发生变化时应在此删除。
·数据字典。设计数据字典是指设计功能所用数据表的字典。系统数据字典是指系统功能使用的数据字典。功能数据字典是指当前功能所用数据表的字典。数据字典的任务是确定项目输入输出时的标题、控件、格式等事项。
·计算公式。可以像单据一样设计计算公式,用于计算字段值或完成记录验证。

三、分类目录的后台接口设计

1、载入条件初始

载入数据时,初始化载入条件。设计器中输入的值为公共默认值。以后每个用户(操作员)保存自己的载入条件。需要一个后台程序。
本例使用mssql。

--初始化载入条件示例代码 SQL SERVER 
ALTER PROCEDURE [dbo].[X9_ZRTJCS]
   (@GNBH VARCHAR(20),	--功能编号
	@YHMC VARCHAR(20))	--用户名称
AS
BEGIN TRY
	SET NOCOUNT ON;
	DECLARE @DYID INT,@GNMC NVARCHAR(20),@TJXH INT,@TJMC VARCHAR(20),@TJJG VARCHAR(80),@RXKZ VARCHAR(10),@TJSM NVARCHAR(100),
		@TJEDIT VARCHAR(100);
	DECLARE Zrtj_cursor CURSOR LOCAL FOR
		SELECT GNMC,TJXH,TJMC,TJJG,RXKZ,TJSM,TJEDIT FROM X9_GN_0ZRTJ
			WHERE GNBH=@GNBH AND YHMC='';
	OPEN Zrtj_cursor;
	FETCH FROM Zrtj_cursor
		INTO @GNMC,@TJXH,@TJMC,@TJJG,@RXKZ,@TJSM,@TJEDIT;
	WHILE @@FETCH_STATUS=0
	BEGIN
		IF NOT EXISTS(SELECT * FROM X9_GN_0ZRTJ WHERE GNBH=@GNBH AND TJMC=@TJMC AND TJSM=@TJSM AND YHMC=@YHMC)
			BEGIN
				SELECT @RXKZ=CASE WHEN @RXKZ='1' THEN '1' ELSE '0' END ; 
				EXEC DBO.X9_DJMID  'X9_GN_0ZRTJ','DYID',1,@DJMID=@DYID OUTPUT;
				INSERT INTO X9_GN_0ZRTJ (DYID,GNBH,GNMC,TJXH,TJMC,TJJG,RXKZ,TJSM,YHMC,TJEDIT) 
						VALUES(@DYID,@GNBH,@GNMC,@TJXH,@TJMC,@TJJG,@RXKZ,@TJSM,@YHMC,@TJEDIT)
			END
		FETCH NEXT FROM Zrtj_cursor
		INTO @GNMC,@TJXH,@TJMC,@TJJG,@RXKZ,@TJSM,@TJEDIT;
	END
	CLOSE Zrtj_cursor;
	DEALLOCATE Zrtj_cursor	
	END TRY
BEGIN CATCH
	DECLARE @ErrorMessage NVARCHAR(4000);
	DECLARE @ErrorSeverity INT;
	DECLARE @ErrorState INT;
	SELECT 
		@ErrorMessage =ERROR_MESSAGE(),
		@ErrorSeverity = ERROR_SEVERITY(),
		@ErrorState = ERROR_STATE();
	RAISERROR (@ErrorMessage, -- Message text.
			   @ErrorSeverity, -- Severity.
			   @ErrorState ); -- State.
END CATCH;

2、载入前存储过程

用于载入数据前处理相关数据。(代码略)。

3、提交后存储过程

ALTER PROCEDURE [dbo].[X9_TJ_1FLML] 
   (@DQYH  NVARCHAR(10),	--用户名称
    @GNNAME  NVARCHAR(30),	--功能名称
	@TBNAME  NVARCHAR(30),	--数据表名
	@BMSTR NVARCHAR(MAX))	--提交的主键字符串,使用 @BMSTR LIKE '%(' + CHDH + ')%' 表达式做为条件;
AS
	--分类目录 提交后主要处理底层明细和计算助记码
	BEGIN TRY
		IF @GNNAME='账套用户角色维护' OR @GNNAME='账套用户设置' OR @GNNAME='功能列表定义'
			BEGIN
				--select * from x9_gn
				--删除多余行
				DELETE X9_GNYHQX WHERE (YHJS NOT IN (SELECT YHJS FROM X9_GNYHJS ));
				DELETE X9_GNYHQX WHERE (GNBH NOT IN (SELECT GNBH FROM X9_GN WHERE JC=2 AND SFQY=0)) ;
				DELETE X9_GNYHQX WHERE (SSMK NOT IN (SELECT MKMC FROM X9_GN_GNMK WHERE SFYY=1));
				--DELETE X9_GNYHQX WHERE YHJS='系统管理员';
				--增加缺少行
				DECLARE @MAXID INT;
				SELECT @MAXID =1+MAX(QXID) FROM X9_GNYHQX ;
				IF @MAXID IS NULL 
					SET @MAXID=1;
				WITH YH (YHJS) AS 	(SELECT DISTINCT YHJS FROM X9_GNYHJS where YHJS<>'系统管理员')
				INSERT INTO X9_GNYHQX (QXID,YHJS,GNBH,GNMC,GNLY,GNLB,SSMK,JZZD,SFSQ,Xzbj,Xzdy,Xzck,Xzwj,Xzdc,XZQX,SFYC)
					SELECT @MAXID+(ROW_NUMBER() OVER(ORDER BY YH.YHJS, GN.GNBH)),
						YH.YHJS, GN.GNBH, GN.GNMC, GN.GNLY, GN.GNLB, GN.SSMK,'' AS JZZD, 
						0 AS SFSQ,1 AS XZBJ,1 AS XZDY,1 AS XZCK,
						1 AS XZWJ,1 AS XZDC ,'111111' AS XZQX,GN.SFYC
						FROM YH CROSS JOIN X9_GN GN
						WHERE GN.JC=2 AND SFQY=0 
							AND GN.SSMK IN (SELECT MKMC FROM X9_GN_GNMK WHERE SFYY=1) 
							AND (YH.YHJS+GN.GNBH) NOT IN(SELECT YHJS+GNBH FROM X9_GNYHQX);
				UPDATE  QX SET GNMC = GN.GNMC, GNLY = GN.GNLY, SSMK = GN.SSMK, GNLB = GN.GNLB, SFYC = GN.SFYC
					FROM X9_GNYHQX AS QX INNER JOIN X9_GN AS GN ON QX.GNBH = GN.GNBH;
			SELECT '用户权限初始检查已经完成';
			END 
			--SELECT DISTINCT YHJS,'' AS SJBH, ROW_NUMBER() OVER(ORDER BY YHJS) AS YHBH FROM X9_GNYH
			--UPDATE X9_GNYHQX SET SFSQ =1;
			--select * from X9_GNYHQX 		
	IF @GNNAME='客户目录'
			BEGIN
				EXEC X9_REZJM @TBNAME;
				EXEC X9_DCMX @TBNAME;
				UPDATE MLWL SET ZKL=0 WHERE ZKL<0 OR ZKL>100;
				SELECT '客户目录提交后处理已完成';
				RETURN
			END
	IF @GNNAME='供应商目录'
			BEGIN
				EXEC X9_REZJM @TBNAME;
				EXEC X9_DCMX @TBNAME;
				SELECT '供应商目录提交后处理已完成';
				RETURN
			END 
		IF @GNNAME='部门目录'
			BEGIN
				EXEC X9_REZJM @TBNAME;
				EXEC X9_DCMX @TBNAME;
				SELECT '部门目录提交后处理已完成'
				RETURN
			END  
		IF @GNNAME='会计科目'
			BEGIN
				EXEC X9_REZJM @TBNAME;
				EXEC X9_DCMX @TBNAME;
				SELECT '会计科目提交后处理已完成'
				RETURN
			END  
		IF @GNNAME='数据字典'
			BEGIN
				SELECT '数据字典提交后处理已完成'
				RETURN
			END 
	END TRY
	BEGIN CATCH
		DECLARE @ErrorMessage NVARCHAR(4000),@ErrorSeverity int,@ErrorState INT;
		SELECT 	@ErrorMessage = ERROR_MESSAGE(),@ErrorSeverity = ERROR_SEVERITY(),@ErrorState = ERROR_STATE();
		RAISERROR (@ErrorMessage,  @ErrorSeverity,  @ErrorState ); 
	END CATCH; 

4、打印数据提供程序。

用于打印时可以需要打印当前载入数据以外的其他数据。

四、前端设计

前端设计即可根据上述设计,建立固定的程序执行不数据(分类目录)的处理。以实现低代码和通用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值