Foxtable(狐表)用户栏目专家坐堂 → [求助]BeforeAttachFile事件求助


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

主题:[求助]BeforeAttachFile事件求助

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]BeforeAttachFile事件求助  发帖心情 Post By:2021/10/13 14:00:00 [显示全部帖子]

在上传文件时,希望自动换文件名,换名的规则是,【单据号】列内容再加流水序号
例如本条记录的单据号是 AAA ,前后上传了11个文件,文件名能自动替换成:
AA-1
AA-2
AA-3
。。。
AA-10
AA-11

请老师帮忙写个代码示例,谢谢。

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2021/10/13 17:41:00 [显示全部帖子]

AA-12就行,这样方便点,其实我的目的就最用户上传文件时,都是莫名其妙的名字,比如微信中导出的图片,现在改下名字,文件名长度也能控制的短些

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2021/10/15 16:44:00 [显示全部帖子]

老师,看下我改的代码,实测了下,没用,文件名没改过来,也没报错,项目中的附件列是备注型的,没有设置扩展类型。
BeforeAttachFile事件
Dim max As String = e.DataTable.Compute("Max(附件)","单据='" & e.DataRow("单据") & "'")
Dim id As Integer
Dim hz As String
If max > "" Then
    id = CInt(Max.SubString(max.LastIndexOf(".")-2,2)) + 1
    hz = Max.SubString(max.LastIndexOf("."),max.length - max.LastIndexOf("."))
    
    e.FileName = e.DataRow("单据") & "-" & Format(id,"00") & hz
Else
    hz = e.FileName.SubString(e.FileName.LastIndexOf("."),e.FileName.length - e.FileName.LastIndexOf("."))
    e.FileName = e.DataRow("单据") & "-01" & hz
End If
以下是文件上传的代码,一直正常执行中。
BeforeAddFile事件:
Dim frm As WinForm.Form = Forms("文件上传模式窗口")
If frm.Opened Then
    e.Cancel = True
    Dim dlg As New openFileDialog '定义一个新的SaveFileDialog
    dlg.Filter= "文件|*.txt;*.bmp;*.jpg;*.png;*.pdf;*.doc;*.docx;*.xls;*.xlsx;*.rar;*.zip;*.jpeg" '设置筛选器
    dlg.MultiSelect = True
    If dlg.showDialog = DialogResult.Ok Then '如果用户单击了确定按钮
        Dim pv As WinForm.FileManager = frm.Controls("FileManager1")
        pv.FTPclient = _ftp
        pv.ManagerCommand.Visible = False
        pv.ConnectCommand.Visible = False
        pv.FullViewCommand.Visible = False
        Dim ls = e.DataRow.Lines("附件")
        For Each f As String In dlg.FileNames
            Dim file = "/QdgcWeb/www/upload/atta/附件/生产记录/" & e.DataRow("单据号") & "/" & filesys.GetName(f)
            If _ftp.DirExists("/QdgcWeb/www/upload/atta/附件/生产记录/" & e.DataRow("单据号")) = False Then
                _ftp.MakeDir("/QdgcWeb/www/upload/atta/附件/生产记录/" & e.DataRow("单据号")) '此处不可删除"/附件/",要不然会直接在 本机的RemoteFiles目录下生成编号名目录
            End If
            Dim Result As DialogResult
            If _ftp.FileExists(file) Then
                Result = MessageBox.Show("文件已经存在,是否覆盖?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
            End If
            If result = Nothing OrElse result = DialogResult.Yes Then
                If  _ftp.Upload(f,file,True) = True Then
                    If ls.contains(file) = False Then
                        ls.add(file)
                        pv.AddFile(file)
                    End If
                Else
                    MessageBox.Show( f & "上传失败" ,"提示" ,MessageBoxButtons.OK,MessageBoxIcon.Question)
                End If
            End If
        Next
        e.DataRow.lines("附件") = ls
        e.DataRow.Save
        _ftp.Close
    End If
End If

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2021/10/15 17:00:00 [显示全部帖子]

用时间也行,但现在的问题是,上面这个改名代码并没有执行,连报错也没有,是不是不应该写在这个BeforeAttachFile事件中啊?

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2021/10/15 17:13:00 [显示全部帖子]

不好意思,习惯性最后一楼,没注意老师连着发了2层的回复,还是用BeforeAddFile来处理,能帮我改下代码吗,不知在哪个地方改名字

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2021/10/15 17:21:00 [显示全部帖子]

这是让用户手工改名啊,能用代码实现改名吗?

 回到顶部