Foxtable(狐表)用户栏目专家坐堂 → [求助]在项目中打开新项目


  共有2919人关注过本帖树形打印复制链接

主题:[求助]在项目中打开新项目

帅哥,在线噢!
有点蓝
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/4 22:54:00 [只看该作者]

帮助以execl为例,并不是说只能打开execl!麻烦测过再说行不行
[此贴子已经被作者于2020/2/4 22:54:21编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  22楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2191 积分:18001 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2020/2/5 21:47:00 [只看该作者]

蓝版,初步确定是用两个项目来解决这个问题。
假定公司项目为A,分店项目为B

拆分成多个项目设计,这里面介绍了在A项目打开B项目的方法,但这时候会关闭掉A项目,再打开B项目,显然与AB两个项目同时打开的目标不匹配。

但是可以使用另一个方法,在A项目中打开B项目。
If ShowAppWindow("B项目.FoxEx",1) = False Then
    Dim Proc As New Process
    
Proc.File = "B项目的安装路径\B项目.FoxEx"
    
Proc.Start
End If

问题是这样一来,就得在B项目中再输入用户名和密码。如果要看多个分店的话,输多了,显然体验就会比较差了。----当然,按照前面的说法,同时打开多个分店的场景并不多

是否可以结合Proc.Start和拆分成多个项目设计,实现同时打开A项目和B项目、又不需要重复输入用户名密码的目标呢?



 回到顶部
帅哥,在线噢!
有点蓝
  23楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/6 11:23:00 [只看该作者]

这个没有办法。

如果不需要登录,可以考虑使用默认用户,这样就不会弹出登录界面了。但是就不够安全了

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  24楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2191 积分:18001 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2020/2/6 15:34:00 [只看该作者]

默认用户?这个如何设计?不知道下面这个想法是否可以?或者有其它的方式?能给个思路不?

所说的不安全,是有什么考虑?

在数据库中设一个表,在公司项目中,把当前用户ID、机器ID、要打开的分店ID存到一个表X中,然后在公司项目A中打开分店项目B,分店项目B打开项目的时候,先去检查表X中是否有当前机器ID的数据,如果有,就用当前用户ID身份登录,然后加载分店ID的数据?
分店项目打开以后,再去表X中把当前用户ID、机器ID、分店ID都匹配的这一条数据删除,这样就不会导致下次选择了其它分店,还是去加载这个分店的数据了

昨天考虑了一下,总感觉有点不妥

先打开B项目,加载空数据,然后用
Dim fl As String = ".\分店项目.Table"
Syscmd.Project.Open(fl,"用户ID","分店ID")

这样是不是相当于分店项目打开了两次?
[此贴子已经被作者于2020/2/6 15:41:30编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  25楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/6 15:53:00 [只看该作者]

默认用户参考:http://www.foxtable.com/webhelp/topics/1796.htm。不安全指不需要登录,也就是任何人都可以进入系统使用。

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  26楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2191 积分:18001 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2020/2/14 10:45:00 [只看该作者]

蓝版,我试了一下从A项目打开B项目,为什么会在打开B项目之后先报错,然后B项目还是打开了。
B项目报错信息:此行已从表中移除并且没有任何数据。BeginEdit() 将允许在此行中创建新数据

这是个啥问题?B项目本来是个空项目而已,几乎任何数据都没有。是不是B项目也必须使用外部数据源?


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:从另一个项目打开报错.zip

[此贴子已经被作者于2020/2/14 10:45:27编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  27楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/14 11:05:00 [只看该作者]

打开项目的代码放到afteropenproject事件

登录按钮
'''
Dim U As WinForm.TextBox = e.Form.Controls("TextBox1")
Dim W As WinForm.TextBox = e.Form.Controls("TextBox2")

Dim dr As DataRow = DataTables("TbUser").SQLFind("(C = '" &  U.value & "' or T = '" & U.value & "') and PW = '" & W.value & "'")
If dr Is Nothing Then
    W.Value = ""
    W.Select
Else
    CurUserID = dr("ID")
    e.Form.Close
    vars("pw") = dr("PW")
End If

afteropenproject事件
Forms("Login").Open
If  CurUserID > "" 
    Syscmd.Project.Open(".\CS.foxdb",CurUserID,vars("pw"))
End If

 回到顶部
总数 27 上一页 1 2 3