以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  示助:如何在文件管理器中增加加文件后删除源文件  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=47449)

--  作者:shixia
--  发布时间:2014/3/10 16:58:00
--  示助:如何在文件管理器中增加加文件后删除源文件

1、在文件管理器中增加文件后,源文件夹中文件自动复制到指定目录后,源文件如果再保留容易造成混淆,我想增加文件后就当时删除源文件夹中文件,只保留一份文件,这段代码该在那个事件中写

2、文件管理器中添加文件夹后,文件管理器中显示的路径还是源文件夹的路径,没有自动复制到指定的目录下,如何能自动复制


--  作者:Bin
--  发布时间:2014/3/10 17:05:00
--  
BeforeAttachFile中处理即可

e参数属性:

DataTable: 触发事件的DataTale
DataRow: 触发事件的DataRow
DataCol: 触发事件的DataCol
SourceFolder: 要添加文件的来源目录
FileName: 要添加文件的名称,你可以根据需要改名。
SubFolder: 指定存放文件的子目录
Cancel: 逻辑型,是否取消此次添加。


可以利用 e.SourceFolder 获得原始路径



2.你是在属性中设置为自动复制?


--  作者:shixia
--  发布时间:2014/3/10 17:20:00
--  

1、我在 BeforeAttachFile 事件中写以下代码:

 Dim sm As String = e.SourceFolder & "\\" & e.FileName
  If FileSys.FileExists(sm) Then \'如果指定的文件存在
      FileSys.DeleteFile(sm,2,3) \'则彻底删除之
  End If    

执行后,文件倒是删除了,但不能复制到指定文件夹中,提示找不到文件

2、是在属性中设置为自动复制


--  作者:Bin
--  发布时间:2014/3/10 17:23:00
--  
1.那没办法了.
2.你搞错路径了吧,否则没道理不自动复制

--  作者:shixia
--  发布时间:2014/3/10 17:31:00
--  

2、我以桌面文件夹为例:点文件管理器“目录”后,显示[C:\\Users\\lenovo\\Desktop\\Catch],这还是桌面文件夹,在指定文件夹中没有找到这个目录。路径没有搞错,在BeforeAttachFile 事件中有以下代码;

 

      Dim st As String  =ProjectPath & "Attachments\\" & e.DataRow("年度") & "\\" & e.DataRow("分类") & "\\" & e.DataRow("标签")
        If FileSys.DirectoryExists(st) Then \'如果目录 st 存在
            DataTables("文档管理").DataCols("附件").DefaultFolder = st
        Else
            FileSys.CreateDirectory(st)
            DataTables("文档管理").DataCols("附件").DefaultFolder = st
        End If

 

执行后,到附件列属性中看到附件列属性中存放目录就是指定的目录

1、的问题还请专家们给个方案



--  作者:Bin
--  发布时间:2014/3/10 17:39:00
--  
其实还是可以实现的.
BeforeAttachFile 
在这里删除源文件
再利用SubFolder 获得你要存放文件的位置,使用代码存放过去.

最后再执行E.Cancel=TRUE

--  作者:有点甜
--  发布时间:2014/3/10 20:03:00
--  

你先自动复制,再删除吧:

 

Dim sm As String = e.SourceFolder & "\\" & e.FileName
If FileSys.FileExists(sm) Then \'如果指定的文件存在

      Filesys.copyFile(sm,projectpath & "Attachments\\" & e.FileName,True) \'先复制
      FileSys.DeleteFile(sm,2,3) \'则彻底删除之
End If    


--  作者:shixia
--  发布时间:2014/3/10 20:24:00
--  
图片点击可在新窗口打开查看执行后出现这样
图片点击可在新窗口打开查看此主题相关图片如下:无标题.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2014-3-10 20:27:02编辑过]

--  作者:shixia
--  发布时间:2014/3/10 20:29:00
--  

狐爸应该添加一个 AfterAttachFile 事件


--  作者:有点甜
--  发布时间:2014/3/10 20:34:00
--  

变,则通:

 

Dim sm As String = e.SourceFolder & "\\" & e.FileName
If FileSys.FileExists(sm) Then \'如果指定的文件存在

      Filesys.copyFile(sm,projectpath & "Attachments\\" & e.FileName,True) \'先复制
      FileSys.DeleteFile(sm,2,3) \'则彻底删除之

      e.cancel = true

      if e.datarow.isnull(e.datacol.name) then

         e.datarow(e.datacol.name) = e.filename

      else

         e.datarow(e.datacol.name) = e.datarow(e.datacol.name) & vbcrlf & e.filename

      end if
End If