【C#】代码解析--打印数据集

系列文章

【C#】编号生成器(定义单号规则、固定字符、流水号、业务单号)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129129787

【C#】日期范围生成器(开始日期、结束日期)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129040663

【C#】组件化开发,调用dll组件方法
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129492112

【C#】数据实体类使用
本文链接:https://blog.csdn.net/youcheng_ge/article/details/128816638

【C#】单据审批流方案
本文链接:https://blog.csdn.net/youcheng_ge/article/details/128972545

【C#】条码管理操作手册
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126589496

【C#】IIS平台下,WebAPI发布及异常处理
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126539836

【C#】代码模板生成工具
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126890673

【C#】MySQL数据库导入工具(批量Excel插入)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126427323

【C#】简单二维码制作和打印工具
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126884228

【C#】最全单据打印(打印模板、条形码&二维码、字体样式、项目源码)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129415723

【C#】Windows服务(Service)安装及启停方案
本文链接:https://blog.csdn.net/youcheng_ge/article/details/124053794

【C#】穿透Session隔离,服务调用外部程序(无窗体界面解决)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/124053033

【C#】任务计划实现,使用Quartz类
本文链接:https://blog.csdn.net/youcheng_ge/article/details/123667723

【C#】源码解析正则表达式
本文链接:https://blog.csdn.net/youcheng_ge/article/details/118337074

【C#】软件版本和文件MD5记录(XML操作)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/112513871

【C#】测试网络是否连通
本文链接:https://blog.csdn.net/youcheng_ge/article/details/110137288

【C#】根据名称获取编码(Dictionary获取key方法)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129816701

【C#】数据建模,你是使用DataTable还是List?
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129792726

【C#】GridControl控件和数据集双向绑定
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129423755

【C#】GridControl动态更换DataSource,数据查询异常处理
本文链接:https://blog.csdn.net/youcheng_ge/article/details/130305424

【C#】GridControl日期字段显示时分秒
本文链接:https://blog.csdn.net/youcheng_ge/article/details/130718303

【C#】GridControl增加选择列(不用二次点击)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/130763713

【C#】数据库检查工具(可跨库访问)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/97172329



更新日志

版本更新日期更新说明
V1.02015-03-20首次发布代码解析–打印数据集
V2.02015-04-02打印数据集管理变更内容,见第5章,变更说明

前言

我能抽象出整个世界,但是我不能抽象你。 想让你成为私有常量,这样外部函数就无法访问你。 又想让你成为全局常量,这样在我的整个生命周期都可以调用你。 可惜世上没有这样的常量,我也无法定义你,因为你在我心中是那么的具体。

哈喽大家好,本专栏为【项目实战】专栏,有别于【底层库】专栏,我们可以发现增加 了『问题描述』、『项目展示』章节,十分符合项目开发流程,让读者更加清楚项目解决的问题、以及产品能够达到的效果。本专栏收纳项目开发过程的解决方案,是我项目开发相对成熟、可靠方法的提炼,我将这些问题的解决思路梳理,撰写本文分享给大家,大家遇到类似问题,可按本文方案处理。

本专栏会持续更新,不断完善,专栏文章关联性较弱(文章之间依赖性较弱,没有阅读顺序)。大家有任何问题,可以私信我。如果您对本专栏感兴趣,欢迎关注吧,我将带你用最简洁的代码,实现复杂的功能。

·提示:本专栏为项目实战篇,未接触项目开发的同学可能理解困难,不推荐阅读。
3A0N000001


一、问题描述

抓取MainController.cs代码中“打印”相关的数据,获取打印参数值,用于一致性对比。

二、解决方案

自动下载CVS代码;
工程目录下找到MainController.cs文件,加载进内存;
以“PrintCall.Print”关键字,快速定位到代码行(一整条语句行,分号结束);
反向读取代码行,找到打印方法名;
截取打印类型变量名、打印数据集变量名、打印数据表变量名;
全文扫描代码行,获取其所对应的 打印类型、打印数据集名、打印数据表名;
根据打印数据集名,在工程目录下找到对应的*.dsxml文件;
解析*.dsxml文件,获取其中的打印字段数据。

三、软件开发(源码)

3.1 下载CVS代码

使用CMD命令,调用CVS程序开始下载服务器代码。

		/// <summary>
		/// CVS下载
		/// </summary>
		/// <param name="a_CVSExePath"></param>
		/// <param name="a_CVSCmd"></param>
		/// <param name="a_WorkDir"></param>
		/// <param name="a_strMsgError"></param>
		/// <returns></returns>
		public bool CVSCodeDown(string a_CVSExePath,string a_CVSCmd,string a_WorkDir,out string a_strMsgError)
		{
			try
			{
				ProcessStartInfo info = new ProcessStartInfo();
				{
					info.FileName = a_CVSExePath;//CVS程序路径
					info.Arguments = a_CVSCmd;//指令1
					info.CreateNoWindow = true;
					info.WorkingDirectory = a_WorkDir;//工作路径
					info.ErrorDialog = true;
					info.WindowStyle = ProcessWindowStyle.Normal;
					info.UseShellExecute = false;
					info.RedirectStandardError = true;
				}
				
				using (Process p = Process.Start(info))
				{
					p.ErrorDataReceived += new DataReceivedEventHandler(this.p_ErrorDataReceived);
					a_strMsgError="下载超时";
					return p.WaitForExit(180000);
				}
			}
			catch(Exception ex)
			{
				a_strMsgError = ex.Message;
				this.p_ErrorDataReceived(null,null);
				return false;
			}
		}
		

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 定位代码行数

找到“PrintCall.Print”所在代码行
在这里插入图片描述

3.3 根据定位行,获取整个打印方法

在这里插入图片描述

3.4 获取打印类型、数据集、数据表

在这里插入图片描述

3.5 获取 数据集字段

在这里插入图片描述

3.6 截取打印参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.7 项目下查找文件

本方法已经封装进我的底层库

在这里插入图片描述

3.8 删除文件夹目录

本方法已经封装进我的底层库

在这里插入图片描述

3.9 从开始字符串、结束字符串,截取中间字符串

本方法已经封装进我的底层库

在这里插入图片描述

3.10 读取XML文件

在这里插入图片描述
在这里插入图片描述

四、项目展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、资源链接

5.1 变更内容

1、任务单功能,右键 文件提取工具新-对于组件和功能导入到组件库的代码去掉。
2、后台数据刷入,根据【CVS代码目录管理】,把组件库(wsbase923)里的组件列表的CVS代码,刷进去。
3、根据组件库的 项目类型、组件号和CVS路径,把 组件对应的 打印信息增加到组件库里。

5.2 逻辑方案:

1、获取打印方法
组件库(wsbase923)–>CVS路径–>下载代码–>读取MainController文件–>
按行读取文件–>找到匹配关键字“PrintCall.Print”所在位置–>反向读取到“void”、“(object sender)”–>截取打印方法名–>将所有方法名保存到列表m_ListPrintMethod中。
​​在这里插入图片描述

2、打印类型功能参数
打印方法名–>“{}”内部读取–>找到匹配关键字“PrintCall.Print”,所在的起始位置,到“;”为止。
第二个参数为 打印类型变量print_type,
第三个参数为 打印数据集变量dataset,
第四个参数 打印数据集dataset_field。
找“print_type”出现的行,匹配到关键字“GetFunPar”,此时GetFunPar的值即为打印类型功能参数。
在这里插入图片描述

3、打印数据集功能参数
找“dataset”出现的行–>找匹配关键字“GetFunPar”–>GetFunPar里面的值+功能标识–>获取到功能参数值。
功能参数的表

select param_no from WBF_sys_fun_args where fun_guid='F201206_SaleOrder_Input'
 and fun_no='F201206' and param_no='cds_master'

4、数据集字段
找“dataset_field”出现的行,找匹配关键字“GetFunPar”,此时GetFunPar的值即为打印数据集功能参数。

5、打印表字段
打印类型、打印数据集功能参数–>取数获取 字段名称、字段备注、数据类型、字段长度。

Select field_name,field_note,data_type,field_size
From wssys_print_type_field  Where print_type_no = 'account_voucher_qry'    
and dataset_name = 'cds_detail'  

6、数据集字段
找“dataset_field”出现的行–>“Entity”字样的,获取它的名称–>去当前目录DataSet文件夹中寻找“.dsxml”文件–>解析xml文件–>获取 字段、标题、数据类型、字段备注。
在这里插入图片描述

7、存入组件库中
以上获取到的数据存进,组件库中,方便其后的比较操作。

select * from T_client_assembly_print_method
select * from T_client_assembly_print_dataset
select * from T_client_assembly_print_dataset_field
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花北城

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值