以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  文件名动态命名并自动重文件名  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=56713)

--  作者:yifan3429
--  发布时间:2014/9/11 11:23:00
--  文件名动态命名并自动重文件名
Dim dr As DataRow = e.DataRow

If  dr.IsNull("产品名称")  OrElse dr.IsNull("家具分类") OrElse dr.IsNull("产品编号")Then
    MessageBox.Show("产品名称,家具类别 家具分类 编号 都不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    e.Cancel = True
Else
    Select Case e.DataCol.Name
        Case "产品效果图"
            e.SubFolder = format(dr("日期").Today,"yyyy") & "产品库" & "\\" & dr("家具风格") &  "\\" & dr("产品名称") & "\\" & "A 效果图片"
        Case "产品三视图"
            e.SubFolder = format(dr("日期").Today,"yyyy") & "产品库" & "\\" & dr("家具风格") &  "\\" & dr("产品名称")   & "\\" & "B 三视图片"      
        Case "动态图"
            e.SubFolder = format(dr("日期").Today,"yyyy") & "产品库" & "\\" & dr("家具风格") &  "\\" & dr("产品名称")  & "\\" & "C 动态图片"
        Case "产品空间"
            e.SubFolder = format(dr("日期").Today,"yyyy") & "产品库" &"\\" & dr("家具风格")  & "\\" & dr("产品名称")  & "\\" & "D 空间图片"
        Case "产品案例"
            e.SubFolder = format(dr("日期").Today,"yyyy") & "产品库" &"\\" & dr("家具风格")  & "\\" & dr("产品名称")  & "\\" & "E 案例图片"
        Case "设计稿"
            e.SubFolder = format(dr("日期").Today,"yyyy") & "产品库" & "\\" & dr("家具风格")  & "\\" & dr("产品名称") & "\\"&  "F 设计文件"
        Case "工艺文件"
            e.SubFolder = format(dr("日期").Today,"yyyy") & "产品库" & "\\" & dr("家具风格")  & "\\" & dr("产品名称") & "\\"  & "G 工艺文件"
        Case "成本测算"
            e.SubFolder = format(dr("日期").Today,"yyyy") & "产品库" & "\\" & dr("家具风格")  & "\\" & dr("产品名称") & "\\"   & "E 成本文件"
    End Select
End If

Dim s As String = e.filename
Dim Index As Integer = s.LastIndexOf(".")
Dim hz As String = s.SubString(Index,s.length-Index)
e.filename=e.DataRow("产品编号") &  hz




上面的代码会将所有的内容强制的重名名为指定文件名   我想增加些选择功能

如果是"产品效果图"  就是按照上面的代码执行  

如果是"产品空间""成本测算"等的话  在原来的名称上重命名为   

结果实例是   效果图.jpg  

 如果有第二个文件插入进来就会是效果图(1).jpg  效果图(2).jpg依次类推,

该如何实现呢

[此贴子已经被作者于2014-9-25 17:27:23编辑过]

--  作者:有点甜
--  发布时间:2014/9/11 11:54:00
--  

 你判断文件是否存在,如果存在,就加上当前的时间

 

If FileSys.FileExists(e.SourceFolder & format(dr("日期").Today,"yyyy") & "产品库" & "\\" & dr("家具风格") &  "\\" & dr("产品名称") & "\\" & "A 效果图片") Then
    e.SubFolder = format(dr("日期").Today,"yyyy") & "产品库" & "\\" & dr("家具风格") &  "\\" & dr("产品名称") & "\\" & "A 效果图片" & Format(date.Now, "HHmmss")

Else

    e.SubFolder = format(dr("日期").Today,"yyyy") & "产品库" & "\\" & dr("家具风格") &  "\\" & dr("产品名称") & "\\" & "A 效果图片"
End If

 

http://www.foxtable.com/help/topics/0341.htm

[此贴子已经被作者于2014-9-11 11:54:51编辑过]

--  作者:Bin
--  发布时间:2014/9/11 11:55:00
--  
\'Dim fn As String = e.DataRow.Lines(e.DataCol.name)(e.DataRow.Lines(e.DataCol.name).Count-1)
Dim fni As Integer=fn.LastIndexOf("(")
Dim fn2 As String =fn.SubString(fni,fn.Length-fni)
Dim fni2 As Integer= fn2.LastIndexOf(".")
e.FIlterName= "效果图(" & Val(fn2.SubString(0,fni2).trim("(").trim(")"))+1 & ".jpg"

--  作者:yifan3429
--  发布时间:2014/9/25 16:42:00
--  
Dim dr As DataRow = e.DataRow
If dr.IsNull("品牌") Then
    msgbox("品牌名不能为空")
    e.cancel = True
Else
    
    Select Case e.DataCol.Name
        Case "宣传_产品"
            e.SubFolder = dr("品牌") & "\\" & format(dr("日期").Today,"yyyy") & "\\" & "产品宣传"
        Case "宣传_企业"
            SystemReady = False
            e.SubFolder =dr("品牌") & "\\" & format(dr("日期").Today,"yyyy") & "\\" & "企业宣传"        
    End Select
End If

\'------------------------------------------------------

Dim s As String = e.filename
Dim Index As Integer = s.LastIndexOf(".")
Dim hz As String = s.SubString(Index,s.length-Index)
e.filename=e.DataRow("品牌") & "企业宣传" & hz
Dim fn As String = e.DataRow.Lines(e.DataCol.name)(e.DataRow.Lines(e.DataCol.name).Count-1)
Dim fni As Integer=fn.LastIndexOf("(")
Dim fn2 As String =fn.SubString(fni,fn.Length-fni)
Dim fni2 As Integer= fn2.LastIndexOf(".")



.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2014.9.23.1
错误所在事件:品牌主表,BeforeAttachFile
详细错误信息:
StartIndex 不能小于 0。
参数名: startIndex


希望自动重命名   文件(1),JPG   文件(2).jpg   文件(....).jpg 不想手动修改
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20140925164031.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2014-9-25 16:45:40编辑过]

--  作者:有点甜
--  发布时间:2014/9/25 16:46:00
--  
Dim s As String = e.filename
Dim Index As Integer = s.LastIndexOf(".")
Dim hz As String = s.SubString(Index,s.length-Index)
e.filename=e.DataRow("品牌") & "企业宣传" & hz
Dim fn As String = e.DataRow.Lines(e.DataCol.name)(e.DataRow.Lines(e.DataCol.name).Count-1)
Dim fni As Integer=fn.LastIndexOf("(")
If fni > -1 Then
    Dim fn2 As String =fn.SubString(fni,fn.Length-fni)
    Dim fni2 As Integer= fn2.LastIndexOf(".")
End If

--  作者:yifan3429
--  发布时间:2014/9/25 17:27:00
--  
还是有错误  老师您看下
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:列文件导入修改名称并自动重命名.foxdb


--  作者:有点甜
--  发布时间:2014/9/25 17:32:00
--  
 关键是你想做什么?
--  作者:有点甜
--  发布时间:2014/9/25 17:33:00
--  
 没有提示错误
--  作者:yifan3429
--  发布时间:2014/9/25 17:43:00
--  
索引超出范围。必须为非负值并小于集合大小。
参数名: index

第一导入文件  错误提示

同样的文件再次导入应该是自动重命名(序号递进)

还是会弹出重名文件提示


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20140925174045.png
图片点击可在新窗口打开查看


我想得到的结果是下面这样的功能  自动完成复制但保留两个文件


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20140925174604.png
图片点击可在新窗口打开查看


[此贴子已经被作者于2014-9-25 17:48:20编辑过]

--  作者:有点甜
--  发布时间:2014/9/25 17:56:00
--  

Dim dr As DataRow = e.DataRow
If dr.IsNull("第二列") Then
    msgbox("第二列不能为空")
    e.cancel = True
Else
   
    Select Case e.DataCol.Name
        Case "第一列"
            e.SubFolder = dr("第二列") & "\\" & format(dr("日期").Today,"yyyy") & "\\" & "核心宣传"
    End Select
End If


\'------------------------------------------------------

Dim s As String = e.filename
Dim Index As Integer = s.LastIndexOf(".")
Dim hz As String = s.SubString(Index,s.length-Index)
e.filename = e.DataRow("第二列") & "核心宣传" & hz
If e.DataRow(e.DataCol.name).Contains(e.FileName) Then
    e.FileName = e.DataRow("第二列") & "核心宣传" & Format(Date.Now, "yyyyMMddHHmmss") & hz
End If
If e.DataRow.Lines(e.DataCol.name).Count > 0 Then
    Dim fn As String = e.DataRow.Lines(e.DataCol.name)(e.DataRow.Lines(e.DataCol.name).Count-1)
    Dim fni As Integer=fn.LastIndexOf("(")
    If fni > -1 Then
        Dim fn2 As String =fn.SubString(fni,fn.Length-fni)
        Dim fni2 As Integer= fn2.LastIndexOf(".")
    End If
End If