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


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

主题:[求助]FTP事件

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


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
[求助]FTP事件  发帖心情 Post By:2019/1/1 10:21:00 [只看该作者]

单文件列[上传笔录],希望上传到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、文件重命名:

...代码不会写


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


问题:

1、如果不存在当前承办人的子目录,就创建一个,没运行;

2、点击单元格按钮,有时候先出现“文件管理窗口”,有时候直接弹出ftp窗口;

3、弹出的ftp窗口,现在显示的是“承办人”子目录,怎样打开ftp窗口直接进入“承办人”子目录?

4、用户的权限是完全控制,在ftp窗口选择上传文件后,点击确认,为什么上传不成功?

5、怎样将文件名变更为统一格式  “/笔录/承办人/案号.doc”。




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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/2 10:00:00 [只看该作者]

1、创建代码,请写到beforeupload事件去。

 

2、肯定是先弹出【文件管理窗口】的,请认真测试。

 

3、动态设置更目录rootdir以及Changedir

 

http://www.foxtable.com/webhelp/scr/1410.htm

 

4、上传不成功肯定是你ftp没有设置正确,提示什么错?

 

5、在afterupload事件,重命名。


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


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By: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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/2 21:43:00 [只看该作者]

判断是否存在文件夹,参考

 

DirExists

 

http://www.foxtable.com/webhelp/scr/1410.htm

 


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


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2019/1/2 23:18:00 [只看该作者]

谢谢甜老师!
上传文件可以到ftp文件夹,但是文件列为什么不显示?
Rename的currentName参数怎样定义?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试ftp.foxdb


现在的代码:
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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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"

 


 回到顶部
帅哥哟,离线,有人找我吗?
天一生水
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By: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的“选择文件”窗口,对不对?
操作实录:

图片点击可在新窗口打开查看此主题相关图片如下:001.gif
图片点击可在新窗口打开查看

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试ftp.foxdb



[此贴子已经被作者于2019/1/3 22:12:06编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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如果没有报错,说明就是重命名了的,你刷新一下窗口看看最新结果

 回到顶部
帅哥哟,离线,有人找我吗?
天一生水
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By: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"     '文件列单元格赋值

此主题相关图片如下:截屏图片.jpg
按此在新窗口浏览图片


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

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


加好友 发短信
等级:超级版主 帖子:110813 积分:564003 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/1/4 21:10:00 [只看该作者]

1、这个没有办法控制,建议还是使用窗口文件管理控件操作

2、ftp1.DeleteFile(e.OldValue)

 回到顶部