以文本方式查看主题 - 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下载完文件修改完以后,再上传回去囖。 |