以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]关于不规则自动编码及文件管理 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=138319) |
||||
-- 作者:工匠 -- 发布时间:2019/7/28 14:53:00 -- [求助]关于不规则自动编码及文件管理 老师好: 请帮完善做个例子,现在文件夹能根据表列内容自动创建了,需要将对应文件动态绑定存放,谢谢
文件如何动态绑定保存到自动创建的文件夹里 (不是Attachments目录) 谢谢!
[此贴子已经被作者于2019/7/28 21:09:13编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2019/7/28 22:39:00 -- 1、编号参考: Select e.DataCol.Name Case "日期","客户" If e.DataRow.IsNull("日期") OrElse e.DataRow.IsNull("客户") Then e.DataRow("客户月编号") = Nothing Else Dim d As Date = e.DataRow("日期") Dim y As Integer = d.Year Dim m As Integer = d.Month Dim Days As Integer = Date.DaysInMonth(y,m) Dim fd As Date = New Date(y,m,1) \'获得该月的第一天 Dim ld As Date = New Date(y,m,Days) \'获得该月的最后一天 Dim bh As String = e.DataRow("客户") & "-" & Format(d,"yyyyMM") & "-" \'生成编号的前缀 If e.DataRow("客户月编号").StartsWith(bh) = False \'如果客户月编号前缀不符 Dim max As String Dim idx As Integer Dim flt As String flt = "客户 = \'"& e.DataRow("客户") & "\' And 日期 >= #" & fd & "# And 日期 <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify") max = e.DataTable.Compute("Max(客户月编号)",flt) \'取得该月的相同客户的最大客户月编号 If max > "" Then \'如果存在最大客户月编号 idx = CInt(max.Substring(bh.Length)) + 1 \'获得最大客户月编号的后四位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("客户月编号") = bh & Format(idx,"0000") End If End If End Select |
||||
-- 作者:工匠 -- 发布时间:2019/7/29 10:30:00 -- 1.按客户月连贯编码的ok了 2.关于文件动态存储到对应创建的文件目录,还不行.我昨天看了帮助和查了论坛,按那些方法都能实现保存到项目文件夹Attachments里的文件目录,请老师再帮看看如何保存到创建位置的目录,后续要保存到局域网指定位置的(原来已经实现了把一个列的文件保存到指定的局域网目录) |
||||
-- 作者:有点蓝 -- 发布时间:2019/7/29 11:34:00 -- 创建目录参考: Dim path As String = "D:\\资料管理\\" Select Case e.DataCol.Name Case "供应商名称" If e.NewValue > "" Then If FileSys.DirectoryExists(path & e.NewValue) = False FileSys.CreateDirectory(path & e.NewValue) End If If FileSys.DirectoryExists(path & e.DataRow("供应商名称")) = False FileSys.CreateDirectory(path & e.DataRow("供应商名称")) End If End If Case "项目名称" If e.NewValue > "" AndAlso e.DataRow.IsNull("供应商名称") = False Then If FileSys.DirectoryExists(path & e.DataRow("供应商名称")) = False FileSys.CreateDirectory(path & e.DataRow("供应商名称")) End If If FileSys.DirectoryExists(path & e.DataRow("供应商名称") & "\\" & e.NewValue) = False FileSys.CreateDirectory(path & e.DataRow("供应商名称") & "\\" & e.NewValue) End If End If End Select 添加文件到任意目录只能通过按钮添加,无法通过扩展列窗口添加: 把列属性自动复制附件设置为false 然后按钮代码类似: Dim r As DataRow = Tables("资料管理").Current If r IsNot Nothing Then Dim path As String = "D:\\资料管理\\" Dim dlg As new OpenFileDialog If dlg.ShowDialog() = DialogResult.OK path = path & r("供应商名称") If FileSys.DirectoryExists(path) = False FileSys.CreateDirectory(path) End If path = path & r("供应商名称") & "\\" & r("项目名称") If FileSys.DirectoryExists(path ) = False FileSys.CreateDirectory(path) End If path = path & r("供应商名称") & "\\" & r("项目名称") & "\\供应商图档\\" If FileSys.DirectoryExists(path ) = False FileSys.CreateDirectory(path) End If path = path & FileSys.GetName(dlg.FileName) FileSys.CopyFile(dlg.FileName,path) r("供应商图档") = IIF(r.IsNull("供应商图档"),path ,r("供应商图档") & vbcrlf & path ) End If End If |
||||
-- 作者:工匠 -- 发布时间:2019/7/29 11:43:00 -- 谢谢有点蓝老师,我试一下,这个功能用处太大了 |
||||
-- 作者:工匠 -- 发布时间:2019/7/29 16:23:00 -- 谢谢有点蓝老师,现在离结果更近一步了,请再帮看看,实现如图效果,谢谢!
|
||||
-- 作者:有点蓝 -- 发布时间:2019/7/29 16:33:00 -- [此贴子已经被作者于2019/7/29 16:41:30编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2019/7/29 16:48:00 -- 想多了,不需要使用按钮添加文件,到表格currentchanged事件写代码: If e.Table.Current Is Nothing Then Return e.Table.Cols("供应商图档").DataCol.DefaultFolder = "D:\\资料管理\\" & e.Table.Current("供应商名称") & "\\" & e.Table.Current("项目名称") & "\\供应商图档\\" e.Table.Cols("采购协议").DataCol.DefaultFolder = "D:\\资料管理\\" & e.Table.Current("供应商名称") & "\\" & e.Table.Current("项目名称") & "\\采购协议\\" e.Table.Cols("验厂记录").DataCol.DefaultFolder = "D:\\资料管理\\" & e.Table.Current("供应商名称") & "\\" & e.Table.Current("项目名称") & "\\验厂记录\\" |
||||
-- 作者:工匠 -- 发布时间:2019/7/29 16:57:00 -- 哦,谢谢老师,可以保存在动态文件夹里了.变通一下,在用户使用的时候,是不能让其看到存放地址的,要是存放在项目文件夹里,要是需要保存在局域网项目文件夹的话,能设置吗?以及如何设置存放到局域网(比如:192.168.0.100)呢 |
||||
-- 作者:有点蓝 -- 发布时间:2019/7/29 17:17:00 -- e.Table.Cols("供应商图档").DataCol.DefaultFolder = "\\\\192.168.0.100\\资料管理\\" & e.Table.Current("供应商名称") |