功能背景,我们在使用C#调用Bartender模板打印标签的时候,有两种方式。
方式一:在代码内手动设置好字段值,然后调用打印方法即可。
btFormat.SubStrings["交货单号"].Value = dtSNinfo.Rows[i]["交货单号"].ToString();
btFormat.SubStrings["客户PN"].Value = dtSNinfo.Rows[i]["客户PN"].ToString();
btFormat.SubStrings["客户PO"].Value = dtSNinfo.Rows[i]["客户PO"].ToString();
此方法简单快捷,不需要连接数据库,只需要编辑好模板即可。但是对于标签上字段数量比较多的情况下,打印比较缓慢,同时,真的标签频繁变更的情况,可维护性也比较差。另外一个问题是,此方法只适用于打印标签数量较少,频率较低的情况,因为如果电脑性能比较差,可能出现两张标签连续出标间隔时间过长的现象。
方式二:标签绑定数据库,C#只需要操作数据库,打印的时候即可打印数据库指定的所有的数据。
此方法优点是可维护性比较好,只需要设置好数据库里面的数据,针对标签频繁变更的情况,无需修改C#代码也能实现打印,同时打印的速度非常快。
缺点是需要连接数据库的配置比较麻烦,如果是使用Oracle,或者其他的一下少见的数据库,可能支持行不好。
我们在使用方法二打印的时候,前期是每次打印完成后都清空数据库的数据行,保证每次只打印需要的数据,后续面临一个问题,就是多个用户需要公用数据库的表,来实现并发打印的功能,如果每次都删除数据,可能造成删除错误的情况,针对此情况,可以在C#调用打印的时候动态的设定对应的Sql,筛选出需要的数据。
可以在打印前调用下面的代码指定Sql来实现只打印需要的数据
btFormat.DatabaseConnection[0].SQLStatement=sql