系统采用按不同的企业的不同会计年份来划分数据库,即:某企业的某年度数据为一个数据库
如果一个企业 跨会计年份使用本系统,就需要多个按年份划分的数据库。年度终了,企业需要执行 结转到下年的功能,系统会自动创建下一年的数据库,并进行必要的数据初始化。
如果使用的是 ACCESS 类型的数据库,数据库的文件名称规则是: 企业名称.年份.LAPUTADB
ACCESS是文件型数据库,数据文件默认存放在 用户的 MyDocument 目录。
如果是使用 SQL Server. 系统会先创建一个 【系统数据库】,用于保存所有在SQL Server 里面的其他真正的帐套数据的信息。
系统数据库的名称通过 Config.asp 文件 里面的 Application(DBType & "DBPrefix") 来指定,默认为 SaaSDB
帐套数据库都会 按照 系统数据库名称_ID 来命名(ID 是系统数据库里面的accinfo 表 里面的ID字段的值) , 即数据名称为:
系统数据库名称_oID(如果oID为零则为ID)_年份(accyear) ,例:SaaS4DB_3_2010
系统数据库里面只有一个表:
- CREATE TABLE [accinfo] (
- [ID] integer identity(1,1) not null CONSTRAINT [PK_accinfo_ID] PRIMARY KEY,
- [UserID] varchar(50) not NULL,
- [accname] varchar(250) null,
- [accyear] INTEGER not null,
- [oID] integer not null default 0
- );
这个表会在 sys/listdb_sqlserver.asp 中 当用户第一次访问本系统的时候自动创建
ID : 序号
UserID : 属于那个用户的,即 数据库的创建人和管理者,用户登陆后,依赖这个字段列出他属下的企业帐套
accname : 帐套的企业名称
accyear : 帐套的会计年份
oID : 关联ID,当结转下年的时候,系统会自动填入该帐套的上一次的ID,实现两条记录有关联关系。
2010-12-16 为集团版增加数据库的隐藏功能,在accinfo 表中增加一个字段:
if not exists (select * from syscolumns where id=object_id('accinfo') and name= 'uids') ALTER table [accinfo] Add [uids] varchar(MAX) null;
隐藏帐套的通过用户在设置权限 中 添加 用户ID到 这个表来实现。
注意:在结转下年的时候也必须添加相应的用户ID到本表的相应记录