您好,欢迎访问三七文档
Presentedby:EricZheng,TechnologyConsulterBICSoftware技术培训TechnicalTraining培训提纲•Epicor二次开发通用工具及功能介绍•.net数据库编程–数据库编程常用对象介绍–数据库编程实例讲解–练习•.net水晶报表编程–水晶报表编程常用对象介绍–水晶报应用实例讲解水晶报表•1、水晶报表的安装,设计。•2、BAQ报表设计者的使用;如何修改系统自带报表。•3、客户化调用水晶报表、.NET程序调用水晶报表。客户化、.NET编程•1、客户化界面功能介绍。•2、客户化里使用VB.NET如何操作数据库、调用水晶报表、调用外挂程序以及系统自定义表开发方法等。•3、.NET编程操作数据库;调用水晶报表等。•4、外挂程序与系统结合的常用作法。•EPICOR系统有大量专业水晶报表供使用,并提供了水晶报表的开发环境,有专项功能与之衔接(BAQ报表设计者)。•对于水晶报表的使用,有以下几点。一、水晶报表•①、ODBC为数据源连接。操作步骤:新建报表→标准报表创建向导→创建新连接→ODBC一、水晶报表数据源•点击ODBC节点后出现如下图所示,选择建立好的ODBC数据源。点击NEXT。•输入用户ID,密码,点击Finish。•进入数据库专家界面,如下图。点击添加命令。•出现输入SQL语句界面,输入SQL语句,点击确定。回到数据库专家界面,点击OK,至此完成数据源的设置。•下图为设置好数据源后的水晶报表设计界面。•将字段插入水晶报表中,点击预览可看到报表效果。•②、Ado.net(xml)为数据源。Epicor系统中BAQ报表设计者使用的就是此种方式。首先生成XML文件,再建立水晶报表以之作为数据源。操作步骤:新建报表→标准报表创建向导→创建新连接→ADO.NET(XML)。•双击进入如下界面,输入XML文件路径。点击完成→标准报表创建向导→选中如下右图所示a,选至右边选定的表一栏。点击完成结束数据源设置。•下图为设置好数据源后的水晶报表设计界面。•插入字段到报表,点击预览可看到报表效果。•①、插入汇总、节专家、组专家、选择专家等等的使用。•组专家。如下图,进入组专家后,选取要以之分组的字段到右边栏位。选项设置属性。确定后按所选字段分组,右图为分组效果。二、水晶报表公式,程序应用分组项•节专家使用。节专家界面的设置可以对报表进行灵活的控制。•插入汇总。插入汇总项可进行数据求和、求平均、最大、最小值等功能。•②、公式字段、参数字段使用•公式字段。•水晶报表公式编辑可使用Basic语法和Crystal语法。•如下图,建立公式字段“数量和”,编辑写入公式,保存后退出公式编辑器。公式编辑框•使用“数量和”字段。得到如下结果。数量和=加工数量+不合格数量•程序里添加1个FORM窗体。•拖入水晶报表控件。如下图所示。三、程序调用水晶报表水晶报表控件•编写水晶报表使用函数,有2种方式传入数据源。•①、传入SQL语句。•SubPrintView(ByValserverAsString,ByValPortAsString,ByValpathAsString,ByValsqlAsString)•DimconstrAsString•DimdatabaseAsString=mfgsys•DimusernameAsString=sysprogress•DimpasswordAsString=sysprogress•constr=Driver={ProgressOpenEdge10.1Cdriver};DB=&_•database&;UID=&username&;PWD=&password&;HOST=&server&;PORT=&Port•DimrptdocAsNewCrystalDecisions.CrystalReports.Engine.ReportDocument•Try•rptdoc.Load(path)•rptdoc.SetDataSource(Query(sql,constr))•Me.CrystalReportViewer1.ReportSource=rptdoc•Me.CrystalReportViewer1.RefreshReport()•Me.Show()•CatchexAsException•MessageBox.Show(ex.Message,Error)•EndTry•EndSub•传入参数为服务器名/IP、端口号、水晶报表路径、SQL语句。•其中也使用到open(constr),query(sql,constr)函数。•②、传入dt(DATATABLE)。•PublicSubPrintViewXML(ByValpathAsString,ByValdtAsDataTable)•DimrptdocAsNewCrystalDecisions.CrystalReports.Engine.ReportDocument•Try•rptdoc.Load(path)•rptdoc.SetDataSource(dt)•Me.CrystalReportViewer1.ReportSource=rptdoc•Me.CrystalReportViewer1.RefreshReport()•Me.Show()•CatchexAsException•MessageBox.Show(ex.Message,Error)•EndTry•EndSub•传入参数为水晶报表路径、dt。•以此方式可灵活使用水晶报表,传入的dt可在程序中自由构建数据。•程序中调用这个FORM的2个函数,传入相应参数,即可预览、打印水晶报表。系统的客户化中通过调用外挂程序也可实现水晶报表的打印。•Epicor的客户化平台,可在系统原有基础上编写程序实现功能。开发环境有VB.NET和C#两种。•通过客户化,可以实现自定义表开发、调用外挂程序、水晶报表、数据操作等功能。二、客户化•进入客户化。•①、向导页签是设置事件类型的功能.规则向导可设置在不同条件下数据的规则。1、客户化界面介绍•②、窗体事件向导可添加各种事件.在窗体上有相应改变的情况下触发。•例:AfterFieldChange事件,在字段值发生改变时出发。•③、表单向导可新增一个新的Tab页.•④、事件向导,所有自定义控件的方法事件。•一般使用的是VB.NET开发环境。因此,数据操作与.net中类似。•主要包括以下3个函数。①、打开数据库连接:Open(byvalconstrasstring);②、返回1个DataTable:FunctionQuery(ByValsqlAsString)AsData.DataTable;③、执行插入、删除、更新动作:SubExcuteSql(ByValsqlAsString);•(详细内容在外挂程序使用中有说明。)2、数据操作。•Epicor系统有用户自定义数据表供使用者开发。•①、进入系统菜单维护→新建菜单项→输入菜单ID,名称。点击程序…→选取要开发的自定义表dll.•例如我们要用UD107表进行客户化(表单UD107对应的自定义表为UD107和UD107A)。如图选择对应的Epicor.Mfg.UI.UD107Entry.dll文件后。点击保存,重新登录系统可看到刚添加的自定义表菜单项。3、自定义表开发。•②、开发人员模式进入刚新建的菜单。•弹出客户化选择框(若已有客户化则会显示在Customizations节点中),点击确定进入界面。右键弹出菜单项,选择客户化进入客户化模式。•③、进入客户化环境后,可对其进行开发设计。包括属性设置、程序编写等等。•下图提示为:文本框如何绑定到数据表字段。点此可设置文本框所绑定的数据表字段•④、完成客户化后,保存。•保存后可到菜单维护发布完成的客户化。如图所示:此处可选择已完成的客户化。•如何在客户化中调用外挂程序。•①、如图所示,外挂程序完成后,进入MyProject。应用程序类型选择为类库,点击生成按钮,编译成dll文件。4、调用外挂•②、将生成的dll文件放到Epicor安装目录的client目录下。•③、如图,点击工具栏→半成品参考管理器。•④、选中customAssemblies→添加自定义参考。•⑤、选取要调用的dll文件,如右图所示,点击确定。⑥、至此外挂程序已被引用到客户化中。测试引用。添加1个epiButton1,在epiButton1的click事件中写入以下代码PrivateSubepiButton1_Click(ByValsenderAsObject,ByValargsAsSystem.EventArgs)'**PlaceEventHandlingCodeHere**Dimfrmasneworderback.form1Dimstrasstringstr=frm.GridValue_back(“Driver={ProgressOpenEdge10.1CDriver};DB=mfgsys;UID=sysprogress;PWD=sysprogress;HOST=daniel;PORT=9080”,“echom”)‘GridValue_back()为外挂程序中的函数msgbox(str)EndSub⑦、更新代码,测试通过后,保存客户化代码。关闭界面重新进入客户化,选择刚刚保存的客户化进入。点击epiButton1进行测试。⑧、如下图所示,调用出frm.form1窗体。至此完成客户化调用外挂程序。•①、获取当前公司company,服务器host,端口号port。•Dimsasstring=OTrans.Session.AppServer•company=OTrans.Session.CompanyID•host=Mid(s,InStrRev(s,//)+2,InStrRev(s,:)-InStrRev(s,//)-2)•port=Strings.Right(s,Len(s)-InStrRev(s,:))•port=Mid(port,1,2)+CStr(Int(Mid(port,3,1))+5)+CStr(Int(Mid(port,4,1))-1)•②、调用系统功能。•oTrans.Undo()‘撤销•oTrans.update()‘保存•oTrans.Refresh()‘刷新界面•ProcessCaller.LaunchForm(Otrans,“UD_GDQL”)‘调用系统菜单项。“UD_GDQL”为菜单ID。•。。。。。•③、根据条件弹出选择框,并返回DataSet•FunctionSearchShowToDS(ByValstrAtapterNameasstring,ByValstrWhereClauseasstring,ByRefdsSearchAsDataSet)•DimrecSelectedAsBoolean•Try•dsSearch=Epicor.Mfg.UI.FormFunctions.SearchFunctions.listLookup(otrans,strAtapterName,recSelected,True,strWhereClause)•CatchexAsException•MessageBox.Show(ex.Message.ToString)•EndTry•ReturnrecSelected•EndFunction5、系统函数方法使用。•④、视图取值,赋值。•DimRcvHeadAsEpiDataView=CType(oTrans.EpiDataViews(RcvHead),EpiDataView)•‘定义RcvHead为视图oTrans.EpiDataViews(RcvHead)。•IfRcvHead.row0thenExitSub•‘如果视图无值,退出程序。•PackSlip=RcvHead.dataview(RcvHead.row)(“PackSlip”).Tostring•‘取视图RcvHead里PackSlip字段的值。EpiDataView.ro
本文标题:实用技术培训
链接地址:https://www.777doc.com/doc-2499738 .html