以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  二进制列是否可以控制并发编辑?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=116357)

--  作者:ycwk
--  发布时间:2018/3/23 11:23:00
--  二进制列是否可以控制并发编辑?
我用sqlserver2008 建立了一个image二进制列, 如果张三打开了某文件正在编辑,李四是否可以同时打开编辑?
--  作者:有点甜
--  发布时间:2018/3/23 12:14:00
--  

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

 

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

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

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

 

参考

 

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

 

 


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

 

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

 

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


--  作者:ycwk
--  发布时间: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编辑过]

--  作者:有点甜
--  发布时间:2018/3/23 16:52:00
--  

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

 

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