Foxtable(狐表)用户栏目专家坐堂 → [分享]删除行时,同时删除图片或文件列中相应的多个文件


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

主题:[分享]删除行时,同时删除图片或文件列中相应的多个文件

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


加好友 发短信
等级:一尾狐 帖子:466 积分:3382 威望:0 精华:0 注册:2016/12/21 22:58:00
[分享]删除行时,同时删除图片或文件列中相应的多个文件  发帖心情 Post By:2017/4/14 21:48:00 [显示全部帖子]

 在学习摄像头拍照的过程中,参考网站里面的所有例子,
发现有一个例子举例了删除行,同时删除相应图片的代码,
但是只限于图片列中,每项只可含一个图片,没有相应删除图片列内含多个图片的例子或代码,
在学习过程中,一开始用的方法已经错误了,使用数组或集合来执行,一直出错,
后来想明白了,图片列里面的内容是带有换行符的字符串,
要先处理字符串,所以现分享一下可以同时删除多个附件的代码,
例一表:学籍表,有图片列:相片
代码为:
在表事件beforedeletedatarow加入:

If Messagebox.Show("该行图片记录一并删除","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes
    Dim r As Row = Tables("学籍表").Current
    Dim Multi As String = r("相片")
    Dim Values() As String
    Values = Multi.split(vbLf)
    For Index As Integer = 0 To Values.Length - 1
        FileSys.DeleteFile(ProjectPath & "Attachments\" & Values(Index),2,2)
    Next
End If

即可。

但是按网站中其它例子里面加入相片列内,加入判断含有实际文件,才执行的语句时,
上述代码不起作用,只删除了该行数据,没有删除对应图片文件,请求懂的老师傅们指导下,谢谢。

If FileSys.FileExists(ProjectPath & "Attachments\" & e.DataRow("相片")) Then
    If Messagebox.Show("该行图片记录一并删除","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes Then
       
        Dim r As Row = Tables("学籍表").Current
        Dim Multi As String = r("相片")
        Dim Values() As String
        Values = Multi.split(vbLf)
        For Index As Integer = 0 To Values.Length - 1
            FileSys.DeleteFile(ProjectPath & "Attachments\" & Values(Index),2,2)
        Next
       
    End If
End If


[此贴子已经被作者于2017/4/15 0:05:02编辑过]

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


加好友 发短信
等级:一尾狐 帖子:466 积分:3382 威望:0 精华:0 注册:2016/12/21 22:58:00
  发帖心情 Post By:2017/4/14 22:01:00 [显示全部帖子]

其例子使用是判断文件夹是否存在,因为带有换行符等,判断出错,所以我改为列内容不为空,来提示:
If e.DataRow("相片") <> Nothing   Then
    If Messagebox.Show("该行图片记录一并删除","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes Then
        
        Dim r As Row = Tables("学籍表").Current
        Dim Multi As String = r("相片")
        Dim Values() As String
        Values = Multi.split(vbLf)
        For Index As Integer = 0 To Values.Length - 1
            
            FileSys.DeleteFile(ProjectPath & "Attachments\" & Values(Index),2,2)
        Next
        
    End If
End If
[此贴子已经被作者于2017/4/14 22:02:27编辑过]

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


加好友 发短信
等级:一尾狐 帖子:466 积分:3382 威望:0 精华:0 注册:2016/12/21 22:58:00
  发帖心情 Post By:2017/4/14 22:13:00 [显示全部帖子]

 突然灵感一来,终于可以进行文件是否存在的代码了:
If e.DataRow("相片") <>""  Then
    If Messagebox.Show("该行图片记录一并删除","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes Then
       
    Dim r As Row = Tables("学籍表").Current
    Dim Multi As String = r("相片")
    Dim Values() As String
    Values = Multi.split(vbLf)
    For Index As Integer = 0 To Values.Length - 1
If FileSys.FileExists(ProjectPath & "Attachments\" & Values(Index)) Then
    FileSys.DeleteFile(ProjectPath & "Attachments\" & Values(Index),2,2)
End If
       
    Next
       
    End If
End If

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


加好友 发短信
等级:一尾狐 帖子:466 积分:3382 威望:0 精华:0 注册:2016/12/21 22:58:00
  发帖心情 Post By:2017/4/15 0:05:00 [显示全部帖子]

以下是引用有点蓝在2017/4/14 22:17:00的发言:
还有问题么?

没有了,谢谢关注

 回到顶部