GS历史数据结转功能说明.doc
文本预览下载声明
历史数据结转功能说明
需求,参考《GS5.0需求规格说明书-库存存货部分》中的历史数据结转部分。
简要说明,就是从系统性能方面考虑,将原有的库存、存货等模块的账本、单据信息导入到历史数据表中,提高当前数据库模块运行的效率。
开发环境:Windows XP 、Visual Studio 2005 WinForm 、 Visual c# 、SqlServer数据库(2000、2005)
SMO 是一种 Microsoft? .NET Framework 对象库,可管理一个或多个数据库服务器。使用 SQL Server 2005 引入的新功能,支持 SQL Server 2000 数据库Microsoft.SqlServer.Smo.dll 核心SMO类(如数据库、服务器、备份和恢复、sql、存储过程执行等)
Microsoft.SqlServer.ConnectionInfo.dll 有助于管理与 SQL Server 对象之间连接的类库VarBalAccount)
特殊库存往来账(ConsignDebtAccount)
数据表:
入库通知单(GRReqBills、GRReqBillItems)
移库申请单(GMReqBillsInit、GMReqBillItemsInit)
移库通知单(GMReqBills、GMReqBillItems)
采购申请单(PRBills、PRBillItems)
发货申请单(GIReqBills、GIReqBillItems)
库存盘点表(CheckBills、CheckBillItems)
差异计算单(VarComBill、VarComBillItem)
批次表(Batches)
可用库存量表(EstQuantity)
区分移动类型
库存入库单(所有的入库单据,库存、存货都记账)
库存出库单(所有的出库单据,库存、存货都记账)
库存移动单(公司间、组织间的所有移库单据)
货位移动单(GoodsMovement,MoveTypeID=333)
物料移动单(GoodsMovement,MoveTypeID = 403、421)
金额调整单(GoodsMovemnt,MoveTypeID like ‘9%’)
【导出】:根据选择条件,将对应条件的数据导出到历史数据表中
【导入】:根据选择条件,将对应条件的历史数据表中的数据恢复到工作表中。
【关闭】:退出当前功能页面。
【创建历史数据表】:对应创建所有历史表,减少导入、导出操作,且能同时建立对应的聚集索引。
【数据备份】:只备份选择的数据表的工作表和对应的历史数据表。
【备份数据删除】:在进行导出、导入操作都提示成功后,将备份的数据表删除,减少数据库空间,当然这可以不删除,以验证数据。
【数据还原】:在进行导出、导入、bcp导出、bcp导入过程中,出现错误,执行该步骤,将选择操作的表的工作表、历史数据表全部还原,如果在还原过程中出现错误,那么可以重新执行数据恢复。
【BCP 导出】:采用bcp工具的导出
【BCP 导入】:采用BCP工具的导入
其他说明:
历史数据表:工作表+HistoryBackup
导出:利用数据库工具BCP来实现的。
账本:
数据表:
区分移动类型:
导入:利用数据库工具BCP实现
利用bcp工具批量处理的时候,对于杀毒软件可能会有不安全操作提示。
备份表名格式:工作表名或者历史数据表名+年月日+”9999”
需要考虑问题:
滚动条:考虑加上个什么样的滚动条处理,本来想通过ProgressBar实现,但是在database对象中事件不太好处理。
关联表是否需要导出,以及导出的时机。
存货过程简单说明:
导出(导入原理同导出)数据大概经历了以下几个实现过程。
在存储过程中建立历史数据表、中间表,建立对应的索引,将数据表中的数据先导入到中间表,然后在从中间表将数据导入到历史数据表中,如果成功,那么将数据表中的对应数据删除。
在第一步的基础上,不在采用中间表,直接在数据库中根据工作表的主键建立临时表,将满足条件的数据的主键字段值保存到临时表中,然后通过临时表关联将数据导入到历史数据表中,在根据临时表关联删除工作数据表中的对应数据。
在第二步的基础上考虑,将历史数据库表等外围的工作,完全可以单独拿出来,减少导入导出的性能开销,同时在程序中启用线程。但是效果仍旧不理想。
在前面的基础上考虑到,基于数据的处理这样,性能太差。所以现在选用BCP工具,先根据条件将满足条件的数据导入到一个txt文件中,然后在读取txt文件导入历史数据表中,成功后,在根据对应条件删除工作表中的记录。只有在具有分录的单据表处理的时候,将单据ID放入了临时表进行处理。
导入是导出的逆向操作。
开始的时候,所有的备份都在一个存储过程中实现的,后来考虑安全、性能问题,拆分
显示全部