Foxtable(狐表)用户栏目专家坐堂 → 独占编辑


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

主题:独占编辑

帅哥哟,离线,有人找我吗?
ycwk
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1218 积分:8445 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2018/1/29 17:55:00 [只看该作者]

我试了下,   ftp://172.16.5.89/182004.txt  替换上面的   d:\test.doc     这样打开文档是不行的,因为foxtable好像将ftp上的文档缓存到本地了,如何检测呢?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/29 17:58:00 [只看该作者]

打开文件是你控制的,如果某人正在编辑,那就不要让其下载和打开呗。


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


加好友 发短信
等级:六尾狐 帖子:1218 积分:8445 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2018/1/29 18:10:00 [只看该作者]

我是要检测附件列中的文件是否被打开呀,  你用vars("ls").add("文档1",system.Diagnostics.Process.Start("D:\foxtable\Development\CaseStudy\RemoteFiles\协作文档.docx"))   代码  不是直接帮用户打开182004.txt了吗?    

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2018/1/29 18:15:18编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/29 18:20:00 [只看该作者]

编写beforeOpenFile事件,控制打开的文档,路径自己合成。

 

http://www.foxtable.com/webhelp/scr/2637.htm

 

vars("ls").add("xxx",system.Diagnostics.Process.Start("D:\foxtable\Development\CaseStudy\RemoteFiles\协作文档.docx"))


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


加好友 发短信
等级:六尾狐 帖子:1218 积分:8445 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2018/1/30 8:57:00 [只看该作者]

问题一:
我要独占编辑的文档放在FTP服务器上,  请问路径是要写FTP的,还是RemoteFiles文件夹的?


问题二:
我在BeforeOpenFiles 事件里面写如下代码,但是我点击文件管理器里的文件打开时,会打开两份文档。
vars("ls") = new Dictionary(of String, object)
vars("ls").add("xxx",system.Diagnostics.Process.Start("D:\foxtable\Development\CaseStudy\RemoteFiles\182004.txt"))
[此贴子已经被作者于2018/1/30 9:05:54编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/30 9:31:00 [只看该作者]

1、beforeOpenFile事件,或者在你要打开word文档的代码那里,要处理成这样:先判断xx文件是否被占用(查找表),如果没有占用,就合成ftp路径下载文件,然后打开文件,同时把文件标记为占用(赋值给表)。

 

2、beforeOpenFiles事件,要加上 e.cancel = true 这样的代码,才能防止重复打开。


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


加好友 发短信
等级:六尾狐 帖子:1218 积分:8445 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2018/1/30 9:37:00 [只看该作者]

怪事,由于我的文档是放在FTP上面,故附件列存放的是   //协作文档.docx   但是通过  str_path.Trim 或Trimstart(“//”)   都无法去掉前面的//  ,咋回事?

If e.DataCol.Name = "附件" Then
    Dim Proc As New Process '定义一个新的Process
    Dim str_path As String = e.FileName
    'Proc.File =  "D:\foxtable\Development\CaseStudy\RemoteFiles\" & str_path.SubString(e.FileName,2)   '指定要打开的文件
    msgbox(str_path)
    str_path.Trim("/")
    msgbox(str_path)
end if

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


加好友 发短信
等级:六尾狐 帖子:1218 积分:8445 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2018/1/30 10:37:00 [只看该作者]

脑袋想破了,现在倒是可以检测出谁在编辑,但没法检测文档关闭。请老师帮忙改改代码可以吗?
If e.DataRow("编辑者") = User.Name Then '如果编辑者是当前用户
    Return
End If

Dim cmd As New SQLCommand
Dim exp As String  = "编辑者 Is Null And [_Identify] = " & e.DataRow("_Identify")
cmd.CommandText = "U pdate {员工} Set 编辑者 = '" & User.Name & "' Where " & exp
If cmd.ExecuteNonQuery = 1 Then
    e.DataRow("编辑者") = User.Name
Else
    cmd.CommandText = " S el ect 编辑者 From {员工} Where [_Identify] = " & e.DataRow("_Identify")
    Dim nm As String = cmd.ExecuteScalar
    If nm > "" Then
        MessageBox.show(nm & "正在编辑此行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Else
        MessageBox.show("此行可能已经被删除,无法编辑!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    End If
    e.Cancel = True '取消编辑
End If

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


加好友 发短信
等级:六尾狐 帖子:1218 积分:8445 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2018/1/30 10:42:00 [只看该作者]

 感觉不能用下面的代码打开文档,因为文件放在ftp上面,狐表的文件管理器是把ftp上的文件缓存到本地后在本地打开,我写的代码肯定没有办法做到的,所以如果我把路径指向FTP ,则文件只能下载文件但不能自动打开;如果指向本地,本地还没有下载之前又没有,还请指教怎么办?
vars("ls") = new Dictionary(of String, object)
vars("ls").add("xxx",system.Diagnostics.Process.Start("D:\foxtable\Development\CaseStudy\RemoteFiles\182004.txt"))

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/30 10:43:00 [只看该作者]

检测文件是否关闭,需要用计时器的。参考代码

 

打开程序

 

vars("ls") = new Dictionary(of String, object)
vars("ls").add("文档1",system.Diagnostics.Process.Start("d:\test.doc"))
vars("ls").add("文档2",system.Diagnostics.Process.Start("d:\test.doc"))
vars("ls").add("文档3",system.Diagnostics.Process.Start("d:\test.doc"))


 

 

检测文档3(或者其他文件)是否关闭

 

try
    vars("ls")("文档3").ExitTime
    msgbox("还在打开")
catch ex As exception
    msgbox("xxx已经被关闭")
End try


 回到顶部
总数 70 上一页 1 2 3 4 5 6 7 下一页