ERP日记.docx
- 文档编号:9849797
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:47
- 大小:2MB
ERP日记.docx
《ERP日记.docx》由会员分享,可在线阅读,更多相关《ERP日记.docx(47页珍藏版)》请在冰点文库上搜索。
ERP日记
12月26日:
开场白。
新世纪ERP系统是一套大部份功能都仿照用友U8.1系列ERP系统开发的,采用VB语言+SQL2000数据库,我们一个锑矿企业使用该系统的存货核算部分一年多时间,数据库由原来的空数据库30M变成250M,其间也出现过一些小的bug,但都通过修改代码得到纠正,所以这套系统及数据库架构应该也算相对笔较成熟了。
现在我们打算将这套系统改成net2005+SQL2005系统,一方面必须要适应目前的B/S要求,另一方通过改造系统,掌握原系统的技术要领,从而提高在实际应用时的应变能力。
希望可以用3-5个月的时间将系统升级成B/S架构,之后投入实际使用,并根据实际应用加以改进。
首先我们升级数据库,将原来SQL2000空的数据库附加导入SQL2005系统。
原SQL2000数据库370个数据表导入SQL2005成功后出现以下界面:
现在我们先来打开新世纪ERP系统的总控台代码,系统的登陆界面如下:
使用过net做网页的人都知道,这样的一个界面并不是很难做到:
这是Default.aspx首页总控台页面,上面是本单位ERP系统logo母页版。
主体页面加上背景,再加上链接按钮,即可以做成下面的样子。
在XX中打入“办公图标”可以找到上面的图片,上面的是128×128图标,也可以找64×64的图标,之后用photoshop加上说明文字,在default.aspx网站首页中加入图片按钮imagebutton,然后在在图片按钮的imgurl属性中加入图标文件的位置即可以将图标显示出来做成以上的样子。
首页界面做出来以后,我们开始按顺序将上面的模块做出来,首先是系统管理。
新世纪ERP系统的系统管理界面如下:
新建账套的实现就是复制一套空的数据库文件,然后填上要新建的帐套的信息即可。
我们已经有了空数据库文件,只需要在SQL2005中将空数据库文件附加上去就得了,所以我们是手工做这部分工作,没有用新建套帐的功能。
我们在附加空数据库之后只需要手工更工帐套信息即可使用帐套,或者设计一个界面来设置帐套信息。
如果是系统自己使用新建及设置账套都可以手工更改数据信息表即可,如果是做一个商业化系统或者想方便使用,那就需要专门设计一个新建帐套和更改帐套信息的界面了。
原系统中帐套参数设置的界面如下:
确定按钮的代码如下:
PrivateSubCommand1_Click(IndexAsInteger)
DimSsqlAsString
DimiAsInteger
DimaDo_DateAsNewRecordset
OnErrorGoToerror_exit
IfIndex=1ThenUnloadMe:
ExitSub
Ssql="updateHDSystem_DataBasessetCoName='"&Trim(Text1(0).Text)&"',"_
&"Address='"&Trim(Text1
(1).Text)&"',Phone='"&Trim(Text1
(2).Text)&"',qsqj="&Val(Text3.Text)_
&"WHEREDataBasesName='"&Trim(Text1(0).Tag)&"'"
Conn_System.ExecuteSsql
Conn_System.Execute"delete"&Trim(Text1(0).Tag)&".dbo.Gy_kjrlb"
aDo_Date.Open"select*from"&Trim(Text1(0).Tag)&".dbo.Gy_kjrlb",Conn_System,adOpenStatic,adLockBatchOptimistic
WithaDo_Date
Fori=1To12
.AddNew
!
KjYear=Trim(Text2.Text)
!
Period=FlexGrid.TextMatrix(i,0)
!
qsrq=FlexGrid.TextMatrix(i,1)
Ifi<12Then!
zzrq=DateAdd("d",-1,FlexGrid.TextMatrix(i+1,1))
Else
!
zzrq=DateAdd("d",-1,DateAdd("m",1,FlexGrid.TextMatrix(i,1)))
EndIf
IfVal(FlexGrid.TextMatrix(i,0)) ! cwzzjzbz=1: ! Xsjzbz=1 ! Gdzcjzbz=1: ! Kfjzbz=1 ! chhsjzbz=1: ! PMjzbz=1 ! CgJzbz=1: ! CaskJzbz=1 EndIf IfVal(FlexGrid.TextMatrix(i,0))=Val(Text3.Text)Then ! beginflag=1 EndIf .Update Next .UpdateBatchadAffectAllChapters .Close SetaDo_Date=Nothing EndWith Conn_System.Execute"update"&Text1(0).Tag&".dbo.Gy_AccInformationsetitemValue="&DJ_Text.Text&"wheresystemcode='Cwzz'anditemcode='cwdjxsws'" Conn_System.Execute"update"&Text1(0).Tag&".dbo.Gy_AccInformationsetitemValue="&JE_Text.Text&"wheresystemcode='Cwzz'anditemcode='cwjexsws'" Conn_System.Execute"update"&Text1(0).Tag&".dbo.Gy_AccInformationsetitemValue="&SL_Text.Text&"wheresystemcode='Cwzz'anditemcode='cwslxsws'" UnloadMe ExitSub error_exit: MsgBoxErr.Description,16 EndSub 以上代码中红色字样为数据表名称,兰色字样为相应字段名称。 由此可以看出按下帐套属性设置界面的“确定“按钮后更新了HDSystem_DataBases、Gy_kjrlb、Gy_AccInformation三个表的信息。 查看新世纪ERP系统的相关开发文档,了解三个表的结构: 1.1.1.1数据库HDSystem_DataBases 字段编码 字段名称 字段说明 数据类型 主键 外键 DataBasesName 数据库名 Nvarchar(18) Y Number 编号 Nvarchar(8) CountingRoomName 帐套名 Nvarchar(20) NewDate 创建时间 datetime BackupDate 备份时间 datetime RestoreDate 恢复时间 datetime ServerName 数据服务器名 Varchar(30) DatabaseType 数据库类型 Varchar(30) Ynuse 是否启用 Char (1) CoName 公司名 Nvarchar(50) Address 地址 Nvarchar(50) Phone 电话 Nvarchar(30) Qsqj 启用期间 int 1.1.2会计日历Gy_Kjrlb 字段编码 字段说明 字段属性 Kjyear 会计年度 Int Period 会计期间 Int Qsrq 起始日期 Datatime Zzrq 终止日期 Datatiem BeginFlag 帐套启用会计期间标识 Bit CwzzJzbz 财务总帐结帐标识 Bit … 其他系统结帐标识 用系统编码+Jzbz来标识 Bit 1.1.3系统帐套信息Gy_AccInformation 字段编码 字段说明 字段属性 SystemCode 系统编码 C,10,NN ItemCode 项目索引编码 C,30 ItemName 项目名称 NVC,20 DataType 数据类型 0.字符型1.整型2.数值型3.日期型 Smallint ItemValue 用户设置值 C,30 ItemDefault 系统缺省值 C,30 代码大概的功能意思是: 1、按照录入的文字更改表HDSystem_DataBases的公司名、地址、电话和帐套的启用日期信息。 2、设置会计日历表Gy_kjrlb中的相关信息。 如果我们将帐套启用日期设置成2009年1月份,经过这段代码之后数据表的字段变化如下: Beginflag为true表示这套帐已经从2009年1月份开始启用了,而其它包括总帐系统、销售系统、固定资产系统、库存系统等模块还未开始启用。 3、输入及系统帐套信息在Gy_AccInformation中记录,分别为帐套中的数量、单价、金额的小数位数: 下面我们就是.net中实现以上的功能。 会计日历表我们手工改动SQL2005数据库就得了,只需要改动一下所需要相应年份就得了。 然后我们就开一个网页专门用于设置更改表HDSystem_DataBases的公司名、地址、电话和帐套的启用日期信息,及Gy_AccInformation表帐套中的数量、单价、金额的小数位数。 首先设计一下系统管理网页xtgl.aspx的功能菜单。 在网上关于网页菜单的样板琳琅满目,我们可以根据自己的爱好选择菜单之后加以修改之后利用。 在系统管理中要现实更改帐套信息、增加用户及设置用户权限功能,菜单如下: 菜单页面是放在左面的母页版中,系统管理要设计帐套信息、小数位数、用户管理及用户权限四个页面,这四个页面都是使用同一个菜单母页版。 首先来设计帐套信息页面,因为这是第一个菜单项目,所以帐套信息页面就是系统管理的主界面xtgl.aspx。 先放入一个SqlDataSource1控件绑定好数据表HDSystem_DataBases: 然后在一进入页面的时候运下以下代码可以显示原来的帐套信息: protectedvoidPage_Load(objectsender,EventArgse) {DataSourceSelectArgumentsds=newDataSourceSelectArguments(); DataViewdv=(DataView)this.SqlDataSource1.Select(ds); Label1.Text=Convert.ToString(dv[0][9]); Label2.Text=Convert.ToString(dv[0][10]); Label3.Text=Convert.ToString(dv[0][11]); } Label1、label2、label3分别取数据表的第9、10、11列取出名称、地址、电话值显示以上的界面。 当按下“保存信息”的按钮时。 执行以下代码: protectedvoidButton1_Click(objectsender,EventArgse) { SqlConnectionmyconn=newSqlConnection("datasource=localhost;userid=sa;pwd=;database=master"); SqlCommandmycmd=newSqlCommand("updateHDSystem_DataBasessetCoName='"+TextBox1.Text+"',Address='"+TextBox2.Text+"',Phone='"+TextBox3.Text+"'",myconn); myconn.Open(); mycmd.ExecuteNonQuery(); myconn.Close(); SqlDataSource1.DataBind(); DataSourceSelectArgumentsds1=newDataSourceSelectArguments(); DataViewdv1=(DataView)this.SqlDataSource1.Select(ds1); Label4.Text=Convert.ToString(dv1[0][9]); Label5.Text=Convert.ToString(dv1[0][10]); Label6.Text=Convert.ToString(dv1[0][11]); } 可以得到以下的运行样子: 设置财务系统小数点位数的界面也同上类拟,所以我们可以将xtgl.aspx复制一个网页xswx.aspx进行相关修改即可: 我们先来看一下系统帐套信息表Gy_AccInformation的详细数据: 我们的第一个任务,就是要取得数据表中需要更改的单价、金额和数量的小数点的位数,也就是数据表中红线的三条数据的Itemvalue的值。 我们可以用三个SqlDataSource控件分别通过相应筛选分别绑定三条记录,筛选条件就是systemcode=cwzzanditemcode=cwdjxsws等。 筛选记录出来之后分别取其第5列数据Itemvalue的值显示出来即可。 所以打开页面xswx.aspx的启动代码如下即可显示出要修改的小数位数: protectedvoidPage_Load(objectsender,EventArgse) {DataSourceSelectArgumentsds=newDataSourceSelectArguments(); DataViewdv=(DataView)this.SqlDataSource1.Select(ds); Label1.Text=Convert.ToString(dv[0][4]); DataSourceSelectArgumentsds2=newDataSourceSelectArguments(); DataViewdv2=(DataView)this.SqlDataSource2.Select(ds2); Label2.Text=Convert.ToString(dv2[0][4]); DataSourceSelectArgumentsds3=newDataSourceSelectArguments(); DataViewdv3=(DataView)this.SqlDataSource3.Select(ds3); Label3.Text=Convert.ToString(dv3[0][4]);} 然后“保存信息”的代码要分别更新三条记录的Itemvalue的值: protectedvoidButton1_Click(objectsender,EventArgse) {SqlConnectionmyconn=newSqlConnection("datasource=localhost;userid=sa;pwd=;database=newerp"); SqlCommandmycmd=newSqlCommand("updateGy_AccInformationsetItemValue='"+TextBox1.Text+"'wheresystemcode='Cwzz'anditemcode='cwdjxsws'",myconn); myconn.Open(); mycmd.ExecuteNonQuery(); myconn.Close();将单价位数更新到数据表 SqlDataSource1.DataBind(); DataSourceSelectArgumentsds1=newDataSourceSelectArguments(); DataViewdv1=(DataView)this.SqlDataSource1.Select(ds1); Label4.Text=Convert.ToString(dv1[0][4]);将更新后的单价位数显示出来 SqlConnectionmyconn1=newSqlConnection("datasource=localhost;userid=sa;pwd=;database=newerp"); SqlCommandmycmd1=newSqlCommand("updateGy_AccInformationsetItemValue='"+TextBox2.Text+"'wheresystemcode='Cwzz'anditemcode='cwjexsws'",myconn1); myconn1.Open(); mycmd1.ExecuteNonQuery(); myconn1.Close();将金额位数更新到数据表 SqlDataSource2.DataBind(); DataSourceSelectArgumentsds4=newDataSourceSelectArguments(); DataViewdv4=(DataView)this.SqlDataSource2.Select(ds4); Label5.Text=Convert.ToString(dv4[0][4]);将更新后的金额位数显示出来 SqlConnectionmyconn2=newSqlConnection("datasource=localhost;userid=sa;pwd=;database=newerp"); SqlCommandmycmd2=newSqlCommand("updateGy_AccInformationsetItemValue='"+TextBox3.Text+"'wheresystemcode='Cwzz'anditemcode='cwslxsws'",myconn2); myconn2.Open(); mycmd2.ExecuteNonQuery(); myconn2.Close();将数量位数更新到数据表 SqlDataSource3.DataBind(); DataSourceSelectArgumentsds5=newDataSourceSelectArguments(); DataViewdv5=(DataView)this.SqlDataSource3.Select(ds5); Label6.Text=Convert.ToString(dv5[0][4]);将更新后的数量位数显示出来 } 按下“保存信息”的运行结果为: 12月27日用户管理 先看一下新世纪ERP系统的用户管理运作原理。 先看用户管理的界面: 打开这个窗体一启动时的代码: PrivateSubForm_Activate() OnErrorGoToerror_exit IfRequery_TF=TrueThenRequery_TF=False: ExitSub DimaDo_GroupAsNewRecordset DimaDo_UserAsNewRecordset SetaDo_Group=Conn_System.Execute("select*from"&ListView1.Tag&".dbo.System_UserGroup") ListView2.ListItems.Clear WithaDo_Group DoWhileNot.EOF Setmitem=ListView2.ListItems.Add() mitem.Text=! GroupName mitem.SmallIcon="G" mitem.Icon="G" mitem.SubItems (1)=! Explain mitem.Key=! GroupName .MoveNext Loop .Close SetaDo_Group=Nothing EndWith '------------------ SetaDo_User=Conn_System.Execute("select*from"&ListView1.Tag&".dbo.Gy_CzyglORDERBYczymc") ListView1.ListItems.Clear WithaDo_User DoWhileNot.EOF Setmitem=ListView1.ListItems.Add() mitem.Text=! czymc mitem.SmallIcon="U" mitem.Icon="U" mitem.SubItems (1)=""&! Explain mitem.Key="T"&Trim(! czybm) .MoveNext Loop .Close SetaDo_Group=Nothing EndWith ExitSub error_exit: MsgBoxErr.Description,16 UnloadMe EndSub 以上代码的大概意思就是在上面列表中导入数据表.Gy_Czygl的czymc操作员名称, 以及在下面的列表中导入数据表System_UserGroup的GroupName组名称。 用户管理的操作菜单如下: 我们先来看一下新增用户的运作,按下新增用户选项,界面如下: 新增用户的代码: IfMe.Tag="U"OrMe.Tag="UE"Then DimUser_idAsString IfTrim(Text1(0).Text)=""ThenMsgBox"用户名不能为空! ",16: Text1(0).SetFocus: ExitSub IfTrim(Text1 (1).
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ERP 日记