关于多帐套问题!做过库存(进销存)管理的朋友进来.......(200)

  • 主题发起人 主题发起人 HHSH
  • 开始时间 开始时间
H

HHSH

Unregistered / Unconfirmed
GUEST, unregistred user!
现在有一套库存管理系统,总公司有几个下属厂子要用,要求各有一套数据,各厂子只能操作和查询自己的数据,不能看到别的厂的数据.总公司可以查询所有厂子的数据并进行汇总.某些信息是公用的,例如供应商信息.我原来已经设计了一套只面向一个单位使用的系统,现在面临修改.有两套方案(1)还是只用一个数据库,在原来的表中,都加上"使用单位"信息,以便各单位只能操作自己的数据.这样,数据库结构和程序都要做较大修改(2)用多个数据库,实现多帐套:即为每个使用单位创建一个数据库,让使用者只能连接上自己的数据库.这样,原来的库结构和程序都不用修改,只加上多帐套功能即可请问哪种方案方便呢?我想采用(2),但不知多数据库操作是否方便?象完成公共信息修改和数据汇总之类的?请做过类似应用的朋友帮助!
 
根据经验,建议采用以下最优最经济方案: 1.各原表加区分字段(分厂标识),老程序独立使用不应该成问题. 2.如果(多半可能)各子厂相隔较远,不在同一局域网内,势必各厂只能独立一套数据库使用.(老程序可直接使用) 3.总库汇总及共用信息维护同步,需额外程序单独处理.
 
xj_jq:你说的不错.我同意.现在我也倾向于用你的方案了.我没用过多数据库的方案,不知道编程上是否复杂.现在看来我的应用,还是用一个数据库方便.
 
第二种方法比较好一个帐套一个数据库,公共信息也可以单独一个数据库,用来记录帐套、基础设定、帐户信息等等~~
 
关注[8D][8D][:D][:D]
 
用DE410的方案,即一个账套用一个数据库,各数据库之间建立DBLINK(ORACLE建立这种很简单),然后集团通过这种DBLINK查询及新增修改数据.
 
第一种方案对原来的数据库结构及程序修改较大,几乎所有地方都要加入多帐套的处理.但主程序不用变.公共信息的处理不用变第二种方案我没写过相关的代码,不知道开发上是否比改原来的程序还麻烦呢.
 
如果使用第二种方案,就要看你使用什么数据库了,如果SqlServer的话,很烦。Oracle据说比较方便。其实如果远程连接数据库问题不大的话(Sqlserver没问题),我倾向使用第一种方案,这样汇总查询最方便
 
我以前所在厂也是有这样的情况.是加厂别标识,共用的不加.但是我们两厂很近在同一局域网内.
 
我的解决方案:1.首先要有一个帐套模板数据库.(此模板是一个空的数据库备份,你可以用脚本产生一个数据库然后生成该备份)2.在主数据库里(既然有帐套数据库,就有一个主数据库),建一个表,用以存放新建帐套数据库文件的路径,即你新建的帐套数据库的文件要存放在哪里.为了省事,你的帐套模板也放在该目录下.3.程序里面加一个新建帐套的功能,以下是关键代码://取得模板存放路径 sDBPath := GetUpdatePath('DBPATH'); if sDBPath[Length(sDBPath)] <> '/' then sDBPath := sDBPath + '/';//创建新的帐套数据库 sSql := 'USE master ' + 'RESTORE FILELISTONLY FROM DISK = ''' + sDBPath + 'DBModel.bak'' ' //DBModel.bak即为帐套模板 + 'RESTORE DATABASE ' + LegNum_edt.Text + ' FROM DISK = ''' + sDBPath + 'DBModel.bak'' '//LegNum_edt.Text 为新建数据库的名称 + 'WITH MOVE ''DBModel_Data'' TO ''' + sDBPath + '' + LegNum_edt.Text + '_Data.mdf'',' //新建数据库的数据文件 + 'MOVE ''DBModel_Log'' TO ''' + sDBPath + '' + LegNum_edt.Text + '_Log.ldf'''; //新建数据库的日志文件//执行SQL语句 iRet := MID_SERVER.ExecSingleSQL(sSql, sError);
 
我觉得还是用第一种方案比较好,容易实现,代码修改也不难,即方便公用数据的同步,也方便总公司对数据进行汇总。
 
后退
顶部