以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]FTP事件 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=129568) |
||||
-- 作者:天一生水 -- 发布时间:2019/1/1 10:21:00 -- [求助]FTP事件 单文件列[上传笔录],希望上传到ftp的 根目录"\\笔录\\" 的 子目录"承办人";然后将文件名变更为统一格式 “/笔录/承办人/案号.doc”。 先设置列属性,根目录为"\\笔录\\" 。 1、BeforeUpload(上传文件之前)代码: DataTables("数据表").DataCols("上传笔录").ExtendType = ExtendTypeEnum.FILES DataTables("数据表").DataCols("上传笔录").Remote = True DataTables("数据表").DataCols("上传笔录").FTPClient.Host ="192.168.*.*" DataTables("数据表").DataCols("上传笔录").FTPClient.Account = "***" DataTables("数据表").DataCols("上传笔录").FTPClient.password = "1******1" 2、BeforeListDetails(列出文件和目录之前)代码: Dim dr As Row = Tables("数据表").Current If dr("承办人") <> Nothing Then For Each Info() As String In e.Infos If Info(0) <> dr("承办人") Then \'隐藏不是当前承办人的子目录 e.Remove(Info) End If
If Info(0).Contains(dr("承办人")) = False Then \'如果不存在当前承办人的子目录,就创建一个 Dim ftp1 As New FtpClient ftp1.Host="192.168.*.***" ftp1.Account = "***" ftp1.Password = "1******1" ftp1.MakeDir("\\笔录\\" & dr("承办人")) End If
Next End If 3、文件重命名: ...代码不会写 问题: 1、如果不存在当前承办人的子目录,就创建一个,没运行; 2、点击单元格按钮,有时候先出现“文件管理窗口”,有时候直接弹出ftp窗口; 3、弹出的ftp窗口,现在显示的是“承办人”子目录,怎样打开ftp窗口直接进入“承办人”子目录? 4、用户的权限是完全控制,在ftp窗口选择上传文件后,点击确认,为什么上传不成功? 5、怎样将文件名变更为统一格式 “/笔录/承办人/案号.doc”。 |
||||
-- 作者:有点甜 -- 发布时间:2019/1/2 10:00:00 -- 1、创建代码,请写到beforeupload事件去。
2、肯定是先弹出【文件管理窗口】的,请认真测试。
3、动态设置更目录rootdir以及Changedir
http://www.foxtable.com/webhelp/scr/1410.htm
4、上传不成功肯定是你ftp没有设置正确,提示什么错?
5、在afterupload事件,重命名。 |
||||
-- 作者:天一生水 -- 发布时间:2019/1/2 21:41:00 -- 1、创建代码,请写到beforeupload事件去。 但是黑色代码中的 Info() 不是beforeupload成员,怎样判断,重建呢? Dim dr As Row = Tables("数据表").Current If dr("承办人") <> Nothing Then For Each Info() As String In e.Infos If Info(0) <> dr("承办人") Then \'隐藏不是当前承办人的子目录 e.Remove(Info) End If
If Info(0).Contains(dr("承办人")) = False Then \'如果不存在当前承办人的子目录,就创建一个 Dim ftp1 As New FtpClient ftp1.Host="192.168.*.***" ftp1.Account = "***" ftp1.Password = "1******1" ftp1.MakeDir("\\笔录\\" & dr("承办人")) End If
Next End If |
||||
-- 作者:有点甜 -- 发布时间:2019/1/2 21:43:00 -- 判断是否存在文件夹,参考
DirExists
http://www.foxtable.com/webhelp/scr/1410.htm
|
||||
-- 作者:天一生水 -- 发布时间:2019/1/2 23:18:00 -- 谢谢甜老师! 上传文件可以到ftp文件夹,但是文件列为什么不显示? Rename的currentName参数怎样定义?
现在的代码: 1、BeforeUpload -创建子目录,变更根目录 Dim dr As Row = Tables("数据表").Current Dim ftp1 As New FtpClient ftp1.Host="192.168.*.***" ftp1.Account = "***" ftp1.Password = "1******1" If ftp1.DirExists("\\笔录\\" & dr("承办人")) Then \'如果存在承办人子目录 ftp1.Changedir("\\笔录\\" & dr("承办人")) \'重新设定根目录 Else ftp1.MakeDir("\\笔录\\" & dr("承办人")) \'创建子目录 ftp1.Changedir("\\笔录\\" & dr("承办人")) End If ’ftp1.OpenManager() 2、AfterUpload ----文件重命名,currentName怎样定义? Dim dr As Row = Tables("数据表").Current Dim ftp1 As new ftpclient ftp1.Host="192.168.*.***" ftp1.Account = "***" ftp1.Password = "1******1" If ftp1.Rename(currentName,"\\笔录\\" & "\\" & dr("承办人") & "\\" & dr("案号") & ".doc") 3、BeforeListDetails ------隐藏目录 Dim dr As Row = Tables("数据表").Current If dr("承办人") <> Nothing Then For Each Info() As String In e.Infos If Info(0) <> dr("承办人") Then \'隐藏不是当前承办人的子目录 e.Remove(Info) End If Next End If |
||||
-- 作者:有点甜 -- 发布时间:2019/1/3 9:16:00 -- 1、
If ftp1.Rename(currentName,"\\笔录\\" & "\\" & dr("承办人") & "\\" & dr("案号") & ".doc")
改成
msgbox(CurFolder & "/" & filesys.getname(LocalFile)) If ftp1.Rename(CurFolder & "/" & filesys.getname(LocalFile),"\\笔录\\" & "\\" & dr("承办人") & "\\" & dr("案号") & ".doc")
2、AfterUpload 事件,给表格赋值,如
dr("上传笔录") = "\\笔录\\" & "\\" & dr("承办人") & "\\" & dr("案号") & ".doc"
|
||||
-- 作者:天一生水 -- 发布时间:2019/1/3 22:11:00 -- 老师好! 经测试,仍存在下列问题,请老师帮助看一下,是哪里的问题。 谢谢! 1、BeforeListDetails ------隐藏目录 这段代码不仅隐藏了不是当前承办人的子目录,当前承办人文件夹内的文件也看不到了; Dim dr As Row = Tables("数据表").Current If dr("承办人") <> Nothing Then For Each Info() As String In e.Infos If Info(0) <> dr("承办人") Then \'隐藏不是当前承办人的子目录 e.Remove(Info) End If Next End If 2、BeforeUpload -创建子目录,变更根目录 这段代码变换不同承办人所在的行时,仍然保持上一次打开的目录,加上黑体代码也不能纠正; Dim dr As Row = Tables("数据表").Current Dim ftp1 As New FtpClient ftp1.Host="192.168.*.***" ftp1.Account = "***" ftp1.Password = "1******1" ftp1.RootDir =("\\笔录") If ftp1.DirExists("\\笔录\\" & dr("承办人")) Then \'如果存在承办人子目录 ftp1.ChangeDir("\\笔录\\" & dr("承办人")) \'重新设定根目录 Else ftp1.MakeDir("\\笔录\\" & dr("承办人")) \'创建子目录 ftp1.Changedir("\\笔录\\" & dr("承办人")) End If 3、AfterUpload ----文件重命名 msgbox弹出的值正确,但是上传进ftp目录的文件没有被重命名。 Dim dr As Row = Tables("数据表").Current Dim ftp1 As new ftpclient ftp1.Host="192.168.*.***" ftp1.Account = "***" ftp1.Password = "1******1" msgbox(e.CurFolder & "/" & filesys.getname(e.LocalFile)) ftp1.Rename(e.CurFolder & "/" & filesys.getname(e.LocalFile),"\\笔录" & "\\" & dr("承办人") & "\\" & dr("案号") & ".doc") dr("上传笔录") = "\\笔录" & "\\" & dr("承办人") & "\\" & dr("案号") & ".doc" \'文件列单元格赋值 ------------------- 说明: 1、ftp的文件目录结构: F:\\ftp\\笔录\\(承办人命名的)子目录\\(案号命名的).doc 2、点击单元格按钮,直接打开了ftp的“选择文件”窗口,对不对? 操作实录:
[此贴子已经被作者于2019/1/3 22:12:06编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2019/1/3 22:35:00 -- 1、
Dim dr As Row = Tables("数据表").Current
For Each Info() As String In e.Infos If Info(0).contains(dr("承办人")) = False Then \'隐藏不是当前承办人的子目录 e.Remove(Info) End If Next 2、你在切换行事件 currentChanged事件或者相关的时间,切换根目录即可
3、rename如果没有报错,说明就是重命名了的,你刷新一下窗口看看最新结果
|
||||
-- 作者:天一生水 -- 发布时间:2019/1/4 21:05:00 -- 老师好! 1、运行下面的代码,用Rename重命名时,出现这种情况:上传至ftp目录下的文件被重命名了,但是ftp“文件选择”窗口中的文件名没变化,要点击一下窗口中的“刷新”按钮,才能显示重命名的文件。否则,如果直接点击窗口中的“确定”按钮,写入单元格的值将是未重命名的文件名。 能不能写句代码代替点击“刷新”按钮? Dim ftp1 As New FtpClient ftp1.Host="127.0.0.1" ftp1.Account = "***" ftp1.Password = "1******1" msgbox(e.CurFolder & "/" & filesys.getname(e.LocalFile)) ftp1.Rename(e.CurFolder & "/" & filesys.getname(e.LocalFile),"\\笔录" & "\\" & dr("承办人") & "\\" & dr("案号") & ".doc") dr("上传笔录") = "\\笔录" & "\\" & dr("承办人") & "\\" & dr("案号") & ".doc" \'文件列单元格赋值 2、删除ftp文件不起作用,麻烦老师看一下。 代码是表的DataColChanged,e.DataRow("上传笔录")显示的是ftp文件的全路径文件名: If e.DataCol.Name = "上传笔录" Then \' If e.OldValue > "" AndAlso e.NewValue = Nothing Then Dim ftp1 As New FtpClient ftp1.Host="127.0.0.1" ftp1.Account = "***" ftp1.Password = "1******1" ftp1.DeleteFile(e.DataRow("上传笔录")) End If End If |
||||
-- 作者:有点蓝 -- 发布时间:2019/1/4 21:10:00 -- 1、这个没有办法控制,建议还是使用窗口文件管理控件操作 2、ftp1.DeleteFile(e.OldValue)
|