拆分成多个项目设计
前面的介绍的方法,是将所有功能模块集成在一个项目中,多个设计人员对同一个项目进行开发。
我们也可以将一个大型系统拆分成多个项目开发,例如销售系统、采购系统、财务系统、工资系统、人事系统、仓管系统、生产系统等等,但所有的系统都共用一个数据库,然后在每个项目加上切换到其它项目的按钮,采用下面介绍的方法打开其他项目。
我们可以通过下面的代码打开项目文件:
Syscmd.Project.Open(File, Args1, Args2, Args3....)
File: 要打开的项目文件名称,含路径。
Args1, Args2, Args3:可选,传递给要打开项目的的参数,个数不限。
系统变量OpenFileArgs是一个集合,目标项目被打开后,可以通过此集合获得传递过来的参数。
示例
以CaseStudy目录下的项目文件“自定义用户管理.Table”为例,参考:自定义用户管理。
该项目文件原AfterOpenProject事件代码为:
Forms(
"用户登录").Open()如果我们将AfterOpenProject事件代码改为:
If
OpenFileargs.Count
= 2 Then
'如果传递了两个参数
Dim
UserName As
String = openFileargs(0)
'获得第一个参数,也就是用户名
Dim
cmd As
New SQLCommand
Dim dt
As DataTable
Dim dr
As DataRow
cmd.ConnectionName
= "User"
If
UserName = ""
Then
Messagebox.show("请选择用户!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
Return
End If
cmd.CommandText
= "Select * From {Users} Where [Name] = '"
& UserName
& "'"
dt = cmd.ExecuteReader
dr = dt.DataRows(0)
If dr("Password")
= OpenFileArgs(1)
Then
'如果密码等于第二个参数
_UserName = OpenFileargs(0)
_UserGroup = dr("Group")
Return
'直接返回,不出现登录窗口
End
If
End
If
Forms("用户登录").Open()
那么我们就可以在其他项目中通过下面的下面的代码直接打开此项目:
Dim
fl
As
String =
"C:\foxtable\商业版\CaseStudy\自定义用户管理.Table"
Syscmd.Project.Open(fl,"吴晓","888")
传递过去的用户名为“吴晓”,密码为“888”,如果用户名和密码正确,将直接进入系统,否则出现登陆窗口。
这样每个项目都是独立的,开发的时候容易驾驭,而实际使用的时候,这些项目看起来又是一个整体(共用数据库和用户信息),能相互无缝切换。
但是采用这种方式不能采用系统内置的用户管理,必须自定义用户管理,代码的重用也不如集成在一个项目开发好。
重要提示:
已经发布的项目,也可以采用上述方法打开。
发布后的项目文件位于Publish目录下的Project子目录下,文件名和原项目文件相同,后缀名为:FoxEx