Foxtable(狐表)用户栏目专家坐堂 → 二进制列是否可以控制并发编辑?


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

主题:二进制列是否可以控制并发编辑?

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


加好友 发短信
等级:六尾狐 帖子:1234 积分:8607 威望:0 精华:0 注册:2016/2/2 21:52:00
二进制列是否可以控制并发编辑?  发帖心情 Post By:2018/3/23 11:23:00 [只看该作者]

我用sqlserver2008 建立了一个image二进制列, 如果张三打开了某文件正在编辑,李四是否可以同时打开编辑?

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


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

回复1楼,同样可以打开编辑。

 

从数据库读取数据,就相当于拷贝一份文件,各自分离的。

[此贴子已经被作者于2018/3/23 12:14:29编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1234 积分:8607 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2018/3/23 14:34:00 [只看该作者]

但是我发现打开后,修改了文件,但是再打开的时候 修改丢失了。   是没有保存的原因吗?要怎样保存? 

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


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

以下是引用ycwk在2018/3/23 14:34:00的发言:
但是我发现打开后,修改了文件,但是再打开的时候 修改丢失了。   是没有保存的原因吗?要怎样保存? 

 

参考

 

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

 

 


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


加好友 发短信
等级:六尾狐 帖子:1234 积分:8607 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2018/3/23 15:34:00 [只看该作者]

你的意思是把本地的文件再存一份到二进制列中吗?   可是我如果直接打开二进制列的文件的话,本地备份在哪里呀?

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


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

以下是引用ycwk在2018/3/23 15:34:00的发言:
你的意思是把本地的文件再存一份到二进制列中吗?   可是我如果直接打开二进制列的文件的话,本地备份在哪里呀?

 

1、你如何写代码代开二进制文件列的?

 

2、如果你是先保存在本地,再打开,那么你修改后,文件就在本地,最后再插入即可。


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


加好友 发短信
等级:六尾狐 帖子:1234 积分:8607 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2018/3/23 16:35:00 [只看该作者]

打开文件的代码如下:
Dim cmd As New SQLCommand
cmd.C
'cmd.CommandText = "S elect 编辑者 From {文件协作表} Where [_Identify] = " & e.DataRow("_Identify")
cmd.CommandText = "S elect 编辑者 From {文件协作表} Where [_Identify] = " & CurrentTable.Current("_Identify")
Dim nm As String = cmd.ExecuteScalar


If nm>"" And  CurrentTable.Current("编辑者") = User.Name Then '如果编辑者不为空 且 编辑者是当前用户,则退出此事件 

     e.Cancel=True 
     Return

Else If nm > "" And CurrentTable.Current("编辑者")<>User.Name  Then     '如果查询的编辑者字段不为空,且编辑者字段不是当前用户
        
      MessageBox.show(nm & "正在编辑此行,你不能同时编辑!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
     ' e.Cancel=True    '禁止文件管理器打开附件

Else If nm = "" And CurrentTable.Current.DataRow.RowState<> DataRowState.Added     '如果等于当前编辑者的记录没有查询到 且 当前行不是新增行,则把当前编辑者插入进去
 
     Dim exp As String  = "编辑者 Is Null And [_Identify] = " & CurrentTable.Current("_Identify")
     cmd.C
     cmd.CommandText = "U pdate {文件协作表} Set 编辑者 = '" & User.Name & "' Where " & exp


     If cmd.ExecuteNonQuery = 1 Then   '如果在数据库中字段成功写入编辑者
        CurrentTable.Current("编辑者") = User.Name     '在显示的表中也改一下

        Dim str_path=ProjectPath & CurrentTable.Current("附件")
        'msgbox(str_path)
        If FileSys.FileExists(str_path) Then '如果本地文件已经存在
            FileSys.DeleteFile(str_path) '则删除之
        End If   

        Network.DownloadFile("ftp://administrator:Admin****@172.16.5.5/各表附件/文件协作表/" & CurrentTable.Current("附件"),str_path )
        Dim Proc As New Process '定义一个新的Process
        Proc.File = str_path  '指定要打开的文件
        proc.WaitForClose = True '等到关闭进程才能进行后续操作
        Proc.Start() '打开文件
     End If

End If

Forms("win_打开文件协作窗口").Close     '点击按钮后关闭容纳这个按钮的窗口,防止老是显示在界面上,体验不差
[此贴子已经被作者于2018/3/23 16:35:39编辑过]

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


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

1、你是通过ftp下载文件后打开的,和你说的image二进制列没有一点关系。

 

2、你ftp下载完文件修改完以后,再上传回去囖。


 回到顶部