以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 查找并打开指定目录中的文件  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=151547)

--  作者:leoli
--  发布时间:2020/6/27 16:34:00
--  [求助] 查找并打开指定目录中的文件
老师,如图内容,如何根据列PartNo的产品名称,只要点击drawing列就可以去找 D:\\GSS\\drawing中相应的产品名的pdf文件,找到就打开,找不到就提示没有。 pdf不分大小字,D:\\GSS\\drawing还会有子目录。
此主题相关图片如下:捕获.png
按此在新窗口浏览图片
谢谢。

--  作者:有点蓝
--  发布时间:2020/6/27 16:58:00
--  
click事件

If e.Col.name = "drawing" Then
    Dim fl As String = "D:\\GSS\\drawing\\" & e.Row("PartNo") & ".pdf"
    If FileSys.FileExists(fl) Then
        Dim Proc As New Process
        Proc.File = fl \'指定要执行的文件
        Proc.Start()
    End If
End If

--  作者:leoli
--  发布时间:2020/6/27 21:26:00
--  
谢谢老师,不过还有两个问题:

1.  它只能找到D:\\GSS\\drawing下的pdf文件, D:\\GSS\\drawing还有子目录就没有找到了。

2. 可以不可以忽略PartNo 起始号的数字 ? 比如 2.AB_000130_AR 就以 AB_000130_A.pdf 来查找,1.1.CH_000032_G就以 CH_000032_G.pdf 来查找 ? 

谢谢。

--  作者:sloyy
--  发布时间:2020/6/28 0:35:00
--  
1 如果是想连子目录都能找出来 那就要把完整的pdf文件,包括路径名全保存在PartNo 列里面,注意:是完整的路径
如果为了美观或者保密,只想显示一个文件名,可以另外增加一列,保存完整的文件及路径,隐藏起来,实际读取的是这一列.
2 可以 ,但是如果找到有2个以上的文件,你还要再选一次,才能打开.

--  作者:leoli
--  发布时间:2020/6/28 7:28:00
--  
1.  不可以自动查找下面的子目录吗?

2. 如何实现 ? 谢谢。
[此贴子已经被作者于2020/6/28 7:28:03编辑过]

--  作者:有点蓝
--  发布时间:2020/6/28 9:19:00
--  
1、神仙才知道文件在哪个子目录里,你要遍历所有的子目录?

2、按点号取后面的内容即可,如:

Dim s As String = "1.1.CH_000032_G"
Dim idx As Integer = s.LastIndexOf(".")
If idx > -1 Then
    s = s.SubString(idx+1)
End If
msgbox(s)

--  作者:leoli
--  发布时间:2020/6/28 9:31:00
--  
老师,可以遍历D:\\GSS\\drawing下的所有目录吗 ?那就太好了,谢谢。
--  作者:有点蓝
--  发布时间:2020/6/28 9:41:00
--  
参考:http://www.foxtable.com/webhelp/topics/0331.htm
--  作者:leoli
--  发布时间:2020/6/28 13:58:00
--  

老师,帮忙看一下哪儿不对了,谢谢。

If e.Col.name = "drawing" Then
Dim files As String In FileSys.GetDirectories("D:\\GSS\\drawing")
 Dim fl As String In FileSys.GetFiles("files") = "& e.Row("PartNo") & ".pdf"
    If FileSys.FileExists(fl) Then
        Dim Proc As New Process
        Proc.File = fl \'指定要执行的文件
        Proc.Start()
Else
msgbox ("没有找到相关图纸!")
    End If
End If


--  作者:有点蓝
--  发布时间:2020/6/28 14:12:00
--  
If e.Col.name = "drawing" Then
    For Each files As String In FileSys.GetDirectories("D:\\GSS\\drawing")
        Dim fl As String  = files & "\\" & e.Row("PartNo") & ".pdf"
        If FileSys.FileExists(fl) Then
            Dim Proc As New Process
            Proc.File = fl \'指定要执行的文件
            Proc.Start()
            Return
        End If
    Next
    msgbox ("没有找到相关图纸!")
End If