《[精选]SD-ERP开发平台业务处理类教材》由会员分享,可在线阅读,更多相关《[精选]SD-ERP开发平台业务处理类教材(42页珍藏版)》请在金锄头文库上搜索。
1、SD-ERP开发平台 业务处理类教程,主要讨论项目,中间层的数据流 三个标准基类的介绍 业务类与数据库通信方式 业务类的设计和实现,主要讨论项目,中间层的数据流 三个标准基类的介绍 业务类与数据库通信方式 业务类的设计和实现,中间层的数据流,结构体系图,代理服务,数据库,简单业务类,复杂单据类,接口,sdClassMgr.dll,sdMidBase.dll,sdServerBase.dll,Dcom服务器,中间层的信息流,基于TCPIP的消息传递 DCOM接口与前台进行数据交换,中间层的数据流,客户,数据库,数据集,非绑定的数据传输方式,当前对象,中间层,主要讨论项目,中间层的数据流 三个标准
2、基类的介绍 业务类与数据库通信方式 业务类的设计和实现,三个标准基类的介绍,标准类TsdStandard 单据头TsdHead 单据明细TsdDetail,三个标准基类的介绍,Item,Item,Item,P,Head,Head,Head,P1,Item,Item,p2,Item,Item,D2,标准类,单据类,Item,Item,三个标准类相同属性,Index索引 Key关键字值 Bof置头标志 Eof置尾标志 Count记录数 CurRecNo当前记录号 BookMark书签 FieldCount字段数,Found查找返回标志 FieldNameint index字段名 DataTypei
3、nt index数据类型 ADOConnection ADO数据连接接口; DllApplication Tapplication对象,三个标准类相同属性,QueryString查询主语句 FilterString过滤条件 CurStatus 记录状态 DataComm 数据和安全事务通信接口,三个标准类不同的属性 单据头比较丰富,CurItemStatus 明细行的状态 ItemFieldCount 明细行的字段数 ItemFieldNameint Index 明细中序号为Index的字段名称 ItemDataTypeint Index明细中序号为Index的字段的数据类型,三个标准类共有的
4、方法,Void AddNew() Void Insert(int Index) Void Edit() Void Cancel() Void MoveFirst() Void MoveLast() Void MoveNext() Void MovePrious(),三个标准类共有的方法,Void MoveBy(int Length) Bool LocateByIndex(int Index) Bool LocateByKey(AnsiString Key) Bool FindKey(AnsiString Key) Void AddRecord(void *Record,AnsiString K
5、ey) Void InSertRecord(void *Record,AnsiString Key,int Index),三个标准类共有的方法,Void DeleteRecord(AnsiString Key) Void RemoveRecord(int Index) Void ChangeRecord(void *Record,AnsiString NewKey,AnsiString OldKey) Void *Records(int Index) Void *RecordByKey(AnsiString Key),三个标准类共有的方法,Virtual void ClearRecord()
6、Virtual Void *Assign(void *p) Virtual AnsiString GetFieldValue(EnumType euFieldName) Virtual Void SetFieldValue(EnumType euFieldName,AnsiString Value),euFieldname是定义在sdEnumtype.h头文件里表示不同字段序号的枚举变量;,三个标准类共有的方法,Void InitGlobalVar(AnsiString CompanyCode,AnsiString UserCode,AnsiString FMonth, AnsiString
7、IMonth,AnsiString PMonth,AnsiString SMonth,AnsiString MMonth, AnsiString CMonth,AnsiString MMonth,AnsiString HMonth, AnsiString CurrencyCode,AnsiString TaxCode,AnsiString CurDate,AnsiString SysDate);初始化一些系统参数,财务月份,当前时间,系统时间;,三个标准类共有的方法,Virtual void Update(); Virtual void Delete(); Virtual bool Find(
8、AnsiString WhereStr); Virtual void Execute(AnsiString Param); Virtual void BackupValue(); Virtual void RestoreValue();,三个标准类共有的方法,TsdStandard(TDataComm *DC) TsdHead(TDataComm *DC) TsdDetail(TDataComm *DC) TsdStandard() TsdHead() TsdDetail(),单据头所具有的方法,void FreeItem(); virtual void RestoreItem(); virt
9、ual void NewDetail(); virtual void DeleteDetail(); virtual void AddItem(); virtual void InsertItem(); virtual void EditItem(); virtual void DeleteItem();,单据头所具有的方法,virtual void RemoveItem(); virtual void ClearItem(); virtual void CancelItem(); virtual void AddToObject(); virtual bool LocateItemByInd
10、ex(int Index); virtual bool LocateItemByKey(AnsiString Key);,单据头所具有的方法,virtual void Check(int IsCheck); virtual void BatchCheck(int IsCheck); virtual void Close(int IsClose); virtual void BatchClose(int IsClose); virtual void Revoke(int IsRevoke); virtual void BatchRevoke(int IsRevoke); virtual void
11、 Tally(int IsTally); virtual void BatchTally(int IsTally);,主要讨论项目,中间层的数据流 三个标准基类的介绍 业务类与数据库通信方式 业务类的设计和实现,业务类与数据库通信方式,TDataComm数据通信封装类 ADO数据连接,使用OLE DB最简单的方法,业务类与数据库通信方式,封装的消息传递,类的功能作用,数据通信的桥梁作用 业务规则的检验师,数据通信的桥梁作用,负责与数据库的通信,向数据库发送SQL查询 负责创建数据集,被动地把记录传送到客户端 负责把客户端的数据传送到数据库,向数据库调用存储过程 起到数据光标的作用,业务规则的检
12、验师,根据前台要求,获取符合要求的数据 前台传回来的数据进行业务规则校验 数据类型的验证,合法性验证 数据安全的保证,ADO数据连接,充分利用微软ADO技术 ,OLE 自动化接口 OLE DB封装了ODBC的功能 代码中用try和catch来捕获ADO错误 避开BDE的不方便,前台通过DCOM接口进行数据交换,应用服务器接受客户端的请求 分配组件对象给客户端 使客户端与应用程序取得联系 前台所需求的数据通过调用组件对象接口函数获取 前台要更新到数据库的纪录也通过组件对象调用接口函数与数据库打交道,基于TCPIP的消息传递,进行多方通信,应用服务器,代理服务器,客户端,业务类的设计和实现,明确处
13、理对象,选择继承类 理解数据表字段意义,发布类的访问属性 实现虚拟函数功能 对数据的校验和业务功能的处理实现 注意的问题,明确处理对象,选择继承类,简单基础资料,独立表应选用标准类,如客户资料管理、销售员资料等 复杂单据,需要主从表共同完成的业务就选用单据类,如订单、发货单等 确定单头,则继承单据头基类,如订单单头 明细表类,则继承于明细基类,如订单明细,理解数据表字段意义,发布类的访问属性,根据表结构和一些业务知识,确定属性的转换数据类型和读写类型 数据类型的转换,一般地有Varchar-AnsiString, decimal-double, tinyint-int, Datatime-An
14、siString 等 只读属性 _property DataType FieldName=read=m_FieldName 可读写属性_property DataType FieldName=read=m_FieldName,write=m_FieldName 增加类的私有字段,m_FieldName,b_FieldName(备份),对数据的校验和业务功能的处理实现,完成属性的赋值 实现前台-后台 调用SetFieldValue(enumType sdFieldName,AnsiString Value) 注意数据类型转换 类内部调用 SetFieldName(DataType Value)对
15、数据和业务的校验 完成属性的取值 实现后台-前台 调用AnsiString GetFieldValue(enumType sdFieldName),实现虚拟函数功能,Void BackupValue()备份数据 实现b_FieldName=m_FieldName Void RestorValue()恢复数据 实现m_FieldName=b_FieldName Void Query()实现 数据表-数据集的转化 Void BatchLetValue()对类私有字段赋值 实现m_FieldName= m_Query-FieldByName“FieldName”,实现虚拟函数功能,Void Empt
16、yValue()清空字段的值 Void Update() 更新数据表 增加记录,调用存储过程TableName_Insert 修改记录,调用存储过程TableName_Update Void Delete()删除记录,调用存储过程TableName_Delete,实现虚拟函数功能,Void AssignValue() 数据集-对象 Void Assign(void *Record) Void Execute(AnsiString Param),实现虚拟函数功能,Void Check(int IsCheck)审核单据 调用存储过程TableName_Check Void Close(int IsClose)结清单据 调用存储过程TableName_Close Void Revoke(int IsRevoke)取消单据 调用存储过程TableName_Revoke,实现虚拟函数功能,两种构造函数的实现和使用 折构函数的实现,注意的问题,必须始终在代码中用try和catch来捕获ADO错误,否则ADO错误会使你的应用程序崩溃。当ADO发生运行时错误时(如数据库不存在),OLE DB数据提供者