Foxtable(狐表)用户栏目专家坐堂 → [求助]分项目存储附件


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

主题:[求助]分项目存储附件

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/3/24 9:57:00 [显示全部帖子]

1、自己做个增加文件的按钮:
 
Dim dlg As New OpenFileDialog
dlg.MultiSelect = True
If dlg.ShowDialog = DialogResult.OK Then
    For Each fl As String In dlg.FileNames
          Dim dr as Datarow = dataTables("表名").AddNew()
           dr("列名") = FileSys.GetName(fl)
    Next
End If
 
2、或者这样编写BeforeattatchFile:
 
 
Select Case e.DataCol.Name
    Case "图片" '如果在图片列插入文件
       if e.datarow.Isnull("图片") = False then '如果原来有文件
           e.cance =true
           dim dr as datarow = e.datatable.AddNew()
           dr("图片") = e.FileName
       end if
End Select

大概如此,细节自己调整


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/3/24 15:14:00 [显示全部帖子]

没有复制,你e.Cancel了,文件不会自动添加到目标文件夹,需要用代码复制过去:
 
Select Case e.DataCol.Name
    Case "UploadAnnex"
        If e.DataRow.IsNull("UploadAnnex") = False Then '如果上传附件列不为空,表示这一行有数据
            e.Cancel = True
            e.SubFolder = StoreFile & "\" & PID '设置存放附件路径,它在共享文件夹里
            Dim cs As String = StoreFile  & "\" & PID  & "\" & e.FileName
            If FileSys.FileExists(cs) = False  Then '如果服务器不存在这个文件
                Dim dr As DataRow = e.DataTable.AddNew
                dr("UploadAnnex") = e.FileName  
                dr("Title") = e.FileName
                Filesys.CopyFile(e.SourceFolder & e.FileName ,cs,True) '复制文件
            End If
        End If
End Select


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/3/24 15:53:00 [显示全部帖子]

那就是你给定的网络路径不正确。

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/3/24 16:19:00 [显示全部帖子]

先分析出那一行代码出错,然后看看这一行代码合成的路径是否有问题。

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/3/24 16:33:00 [显示全部帖子]

分析代码,用排除法,看看执行了什么代码导致单元格内容为空,先分析,再解决。


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/3/25 9:01:00 [显示全部帖子]

1、你应该在AfterOpenproject事件中设置DataCol的DefaultFolder属性,指定存储目录,在BeforeAttachFile中指定子目录
 
2、你没有搞清楚SubFolder这个e参数的意义,SubFolder是用来在存储目录下指定一个子目录,不是一个全路径,不需要包括原来的父路径(存储目录)。
 
3、建议你做例子的时候,不要用网络路径,局域网的路径和本地路径一样,用本地路径做例子,方便别人测试。
 
正常的设计思路是:
 
1、在AfterOpenproject事件中:
 
DataTables("产品").DataCols("图片").DefaultFolder = "指定的存储路径"
 
2、BeforeAttachFile事件代码:
Select Case e.DataCol.Name
    Case "Annex"
        e.SubFolder = CurProID
        Dim cs As String = e.DataCol.DefaultFolder   & "\" & CurProID  & "\" & e.FileName
        If FileSys.FileExists(cs) = False  Then
            Dim dr As DataRow = e.DataTable.AddNew
            dr("Annex") =  "\" & CurProID & "\" & e.FileName
            dr("Title") = e.FileName
            FileSys.CopyFile(e.SourceFolder & "\" & e.FileName ,cs ,True )
        End If
End Select
 
 




 回到顶部