[V12功能解说] 如何以编程方式防止打印一个报表?
[b]* 本文由赛捷软件(上海)有限公司翻译完成,未经授权不得转载。如需转载,请先联系相应版块的版主取得授权。[/b]在Sage X3中,我们可能会碰到这样的情况,需要防止打印一个报表,而我们可以通过代码实现这点。
遵循的步骤:
要想防止打印报表,我需要为该报表创建一个特定的程序脚本,并在文件中放入以下代码。
[attach]6291[/attach]
脚本编辑器
原理是当你将GOK设为0时,报表就不会打印了。当然,你必须在“If”后面的省略号处加上适当的条件。例如,假设你从发货功能(GESSDH)中打印一份报表,而你只想在发货得到审核的情况下打印报表,那么就需要添加特定的条件来防止报表打印。
水晶报表在打印单据前会调用这项操作。警告!如果在报表字典中指定了初始化程序,那么这项操作就是强制的。它不是由指令Gosub调用的,而是由Call指令调用的。两个参数被传递给它,NBPAR(参数的数量)和PARENTIATE(参数网格)。
它还用于其他功能,这些功能将在以下几点中进行解释:
如前所述,当GOK变量值设置为0时,可用于防止报表打印。
更新X3表(例如:打印标识等)
构建一张工作表,以便数据可以更容易被 水晶报表 使用。
它也可以当作一个录入点使用。这是为X3的早期版本开发的。
录入点IMPRIME是为X3初期的版本之一创建的。必须在选择打印机之前调用它,如果变量GPE不等于0,就可以禁止录入打印机。
参数是存储在变量PARAMETRE中的,索引为1到NBPAR。每个值都是一个字符串,形式为 "parameter=value",没有任何其他分隔符。
在这个层级上,可以使用报表参数,这些参数存储在PARAMETRE(1.NBPAR)网格中,其中NBPAR是参数的数量 。一个参数在这个网格中的表达形式是:parameter name = parameter value(参数名称=参数值)。
还有一个DEFIMP录入点,通过输入IMPRIMANTE变量,如果打印机名称是必填的,则它可以用来返回打印机名称(目标代码)。
即使在标准设置后找不到打印机,系统也会在用于确定默认打印机(目标代码)的子程序结束时调用这个录入点。
这个子程序是由AIMDEF操作调用的,通常是为了在打印报表前初始化打印机。
还有其他的录入点(例如ALIMETAT)也用于同样的报表打印程序。所以在上面的文章中已经解释过了,这个录入点和其他子程序一起有各种用途,用于打印报表和X3中的其他功能。
页:
[1]