以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]ftp如何直接连接到已有的绝对路径?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=65581)

--  作者:liujywwy
--  发布时间:2015/3/18 16:27:00
--  [求助]ftp如何直接连接到已有的绝对路径?
当“发布目录”没有内容,是直接打开FTP管理器,然后创建目录,上传文件等等。
但是呢当发布目录有内容,内容就是一个绝对路径,希望直接ftp到这个绝对路径。如何else呢?
If e.Col.Name = "发布目录" Then
    e.Cancel= True
    If e.Row.IsNull("发布目录")= True Then 
    Forms("FTP管理器").open
Else
***********
End If

--  作者:有点甜
--  发布时间:2015/3/18 16:31:00
--  


If e.Col.Name = "发布目录" Then
    e.Cancel= True
    If e.Row.IsNull("发布目录")= True Then
        Forms("FTP管理器").open
    Else
        vars("路径") = e.Row("发布目录")
        Forms("FTP管理器").open
    End If
    
    
 

然后去编写窗口的afterload事件

 

ftp1.RootDir = vars("路径")


--  作者:liujywwy
--  发布时间:2015/3/18 16:53:00
--  
CellButtonClick:
If e.Col.Name = "发布目录" Then
    e.Cancel= True
    If e.Row.IsNull("发布目录")= True Then
        Forms("FTP管理器").open
    Else
        vars("路径") = e.Row("发布目录")
        Dim ftp As New FtpClient
        ftp.Host="192.168.1.35"
        ftp.Account = "tester"
        ftp.Password = "tester"
        ftp.RootDir = vars("路径")
        msgbox(vars("路径"))--------弹出的路径倒是对的,就是ftp没有连接。
    End If
End If
afterload:并没有改,因为afterload创建是ml目录,不知道再怎么让ftp按照vars(“路径”)来打开。
Dim ftp As New FtpClient
ftp.Host="192.168.1.35"
ftp.Account = "tester"
ftp.Password = "tester"

ftp.ChangeDir("/待用户现场确认版本_产线禁止使用/2015")   \'进入到待用户现场确认版本_产线禁止使用\\2015目录
Dim lj As String = "/待用户现场确认版本_产线禁止使用/2015/" & Tables("临时版本跟踪表").current("临时版本编号") & "(" & Tables("临时版本跟踪表").current("客户") & "_" & Tables("临时版本跟踪表").current("博达机型") & ")"

If ftp.DirExists(lj) = False Then   \'不存在临时版本编号目录时先创建临时版本编号目录
    ftp.MakeDir(lj)
End If
Dim ml As String = lj  & "/" & Format(Date.now, "yyyy-MM-dd HH-mm-ss")
If ftp.DirExists(ml) = False Then  \'按照系统时间来创建时间目录
    ftp.MakeDir(ml)
End If
Tables("临时版本跟踪表").Current("发布目录") = ml
vars("zhygwjj") = ml

--  作者:有点甜
--  发布时间:2015/3/18 17:05:00
--  
If e.Col.Name = "发布目录" Then
    e.Cancel= True
    If e.Row.IsNull("发布目录")= True Then
        Forms("FTP管理器").open
    Else
        e.Col.FileManager.FTPclient.RootDir = e.Row("发布目录")
    End If
--  作者:liujywwy
--  发布时间:2015/3/18 17:16:00
--  
这样不行吧,不打开ftp了?
--  作者:有点甜
--  发布时间:2015/3/18 17:41:00
--  
以下是引用liujywwy在2015/3/18 17:16:00的发言:
这样不行吧,不打开ftp了?

 

打开默认的ftp?

 

Dim ftp As New FtpClient
ftp.Host="192.168.1.35"
ftp.Account = "tester"
ftp.Password = "tester"
ftp.RootDir = e.Row("发布目录")
ftp.OpenManager


--  作者:liujywwy
--  发布时间:2015/3/18 17:49:00
--  
我没说清楚。
不是打开默认的ftp。仍然是打开FTP管理器窗口。只不过FTP管理器的afterload不是每次都自动创建子目录ml么。
只有当发表目录为空,那么打开FTP管理器那是对的,会自动按照时间创建目录。
但是呢,当发布目录已经有了路径,那么打开的应该是这个路径的FTP,仍然是FTP管理器窗口,只不过这样又执行了一次afterload,又创建了一个新的时间目录。而不是打开已有的ftp路径。
就是有这个矛盾,不知道该怎么弄。

--  作者:有点甜
--  发布时间:2015/3/18 18:07:00
--  

 看2楼

 

 在afterload事件判断一下 vars("路径") 就行啊

 

-------------

 

If e.Col.Name = "发布目录" Then
    e.Cancel= True

    vars("路径") = e.Row("发布目录")
    Forms("FTP管理器").open

    
     

然后去编写窗口的afterload事件

 

If vars("路径") = "" then

 

End If


--  作者:liujywwy
--  发布时间:2015/3/19 10:15:00
--  
afterload如下:
但是呢Tables("临时版本跟踪表").current("发布目录") = lj却没执行。导致发布目录的值仍然为空,正常情况应是当发布目录为空,执行下面的代码后发布目录应该是一个路径才对。
If vars("路径") = "" Then
Dim ftp As New FtpClient
ftp.Host="192.168.1.35"
ftp.Account = "tester"
ftp.Password = "tester"

ftp.ChangeDir("/待用户现场确认版本_产线禁止使用/2015")   \'进入到待用户现场确认版本_产线禁止使用\\2015目录
Dim lj As String = "/待用户现场确认版本_产线禁止使用/2015/" & Tables("临时版本跟踪表").current("临时版本编号") & "(" & Tables("临时版本跟踪表").current("客户") & "_" & Tables("临时版本跟踪表").current("博达机型") & ")"

If ftp.DirExists(lj) = False Then   \'不存在临时版本编号目录时先创建临时版本编号目录
    ftp.MakeDir(lj)
End If
Dim ml As String = lj  & "/" & Format(Date.now, "yyyy-MM-dd HH-mm-ss")
If ftp.DirExists(ml) = False Then  \'按照系统时间来创建时间目录
    ftp.MakeDir(ml)
End If
Tables("临时版本跟踪表").current("发布目录") = lj
vars("zhygwjj") = ml

msgbox(vars("路径"))
ftp.Close
Else
Functions.Execute("listview")
End If


--  作者:有点甜
--  发布时间:2015/3/19 10:18:00
--  

 你加入msgbox看一下是否进入执行了代码啊。

 

 如果执行了,你再去看一下你的表名是不是写错了啊,是不是副本表