以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  检查剪贴板中复制的文件的文件名是否符合要求?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=113087)

--  作者:ycwk
--  发布时间:2018/1/8 22:21:00
--  检查剪贴板中复制的文件的文件名是否符合要求?
感觉foxtable提供的表中附件列上传文件太麻烦。
我想做成, 首先复制待上传的文件,然后往指定的单元格中粘贴,但粘贴之前先检查剪贴板中复制的文件的文件名是否符合要求?如果符合则上传到指定路径的共享文件夹,如果不符合则弹出提示,文件名不符合要求。
文件名一般命名为:
表名_IDxx_某某文件


如果可以的话,能否给个代码示例?

--  作者:有点蓝
--  发布时间:2018/1/8 22:36:00
--  
本末倒置。

剪贴板是系统所有软件共享的,这样可能会导致不可预料的问题。

--  作者:ycwk
--  发布时间:2018/1/9 9:12:00
--  
这个不会的,我的目的只是让上传文件更直观和快捷,像很多笔记软件,比如印象笔记,不是支持直接复制文件吗?
--  作者:有点甜
--  发布时间:2018/1/9 9:19:00
--  

方法一:你可以拖拽

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=100494&skin=0

 

方法二:你可以循环剪切板的内容,判断文件名,如

 

For Each s As String In Clipboard.GetFileDropList
    output.show(s)
Next


--  作者:ycwk
--  发布时间:2018/4/8 14:57:00
--  
我选择一个表格的cell,如何检测出来我此时是否按下了 ctrl+v 键,这样我好直接把剪贴板中的文件复制到ftp上去。

--  作者:ycwk
--  发布时间:2018/4/8 15:16:00
--  
我在keydownedit事件中写了如下代码,结果一个msgbox都弹不出来

If e.Col.Name = "已接收文件" AndAlso e.Control = True AndAlso e.KeyCode = Keys.V Then
msgbox(2)
   For Each Str1 As String In Clipboard.GetFileDropList
msgbox(3)  
      \'e.SelectedText = "Ω" \'则插入符号Ω 
      Dim Index1 As Integer
      Index1 = Str1.LastIndexOf("\\") \'最后一次出现\\符号的位置
      \'Output.Show("Index1 = " & Index1)
      \'Output.Show("Index2 = " & Index2)
      Str1=Str1.SubString(Index1)
msgbox(4)
      msgbox(Str1)
      e.Cancel = True \'且取消此次按键
    
   Next
msgbox(5)
End If

--  作者:有点蓝
--  发布时间:2018/4/8 17:07:00
--  
测试没有问题,keydownedit是单元格双击进入编辑状态才能触发的
--  作者:ycwk
--  发布时间:2018/4/9 15:46:00
--  
为什么在keydownedit事件中,写如下代码,  执行保存   已接收文件 字段时,并没有保存?

If e.Col.Name = "已接收文件" AndAlso e.Control = True AndAlso e.KeyCode = Keys.V Then
   For Each Str_path As String In Clipboard.GetFileDropList
      Dim Index1 As Integer
      Dim Str_file As String
      Index1 = Str_path.LastIndexOf("\\") \'最后一次出现\\符号的位置
      Str_file=Str_path.SubString(Index1+1)     \'从最后一个\\符号后开始截取
            \'上传数据
            Dim ftp1 As new ftpclient 
            ftp1.host="172.16.5.89"
            ftp1.Account = "administrator"
            ftp1.password = "Admin1234"
            ftp1.RootDir="/各表附件/收发文件管理表/已接收文件/"   
            If Str_file.Contains( e.Table.Name & "_" & "ID" & e.Row("ID") & "_")  Then 
                If  ftp1.upload(Str_path,Str_file)=True     \'上传文件到ftp文件到指定的位置
                    msgbox("文件上传成功!")
                End If
            Else 
                msgbox("文件名不符合命名规范,请重命名后上传!")
                Return \'结束循环
            End If
            \'   ftp1.Rename(\\Photo\\Desert.jpg,   )      \'重命名
           \'msgbox(str_path)
            e.Text=Str_file     \'设置当前编辑框的内容
            CurrentTable.Current.Save
           \'e.Cancel = True \'且取消此次按键  
   Next

End If


--  作者:有点甜
--  发布时间:2018/4/9 16:50:00
--  
If e.Col.Name = "已接收文件" AndAlso e.Control = True AndAlso e.KeyCode = Keys.V Then
    e.Cancel = True \'且取消此次按键
    msgbox(1)
    e.Table.FinishEditing
    Dim ls = e.Row.DataRow.Lines(e.Col.name)
    For Each Str_path As String In Clipboard.GetFileDropList
        msgbox(str_path)
        Dim Index1 As Integer
        Dim Str_file As String
        Index1 = Str_path.LastIndexOf("\\") \'最后一次出现\\符号的位置
        Str_file=Str_path.SubString(Index1+1)     \'从最后一个\\符号后开始截取
        \'上传数据
        Dim ftp1 As new ftpclient
        ftp1.host="172.16.5.89"
        ftp1.Account = "administrator"
        ftp1.password = "Admin1234"
        ftp1.RootDir="/各表附件/收发文件管理表/已接收文件/"
        If Str_file.Contains( e.Table.Name & "_" & "ID" & e.Row("ID") & "_")  Then
            If  ftp1.upload(Str_path,Str_file)=True     \'上传文件到ftp文件到指定的位置
                msgbox("文件上传成功!")
            End If
        Else
            msgbox("文件名不符合命名规范,请重命名后上传!")
            Return \'结束循环
        End If
       
        ls.add(Str_file)
    Next
    e.Row.DataRow.Lines(e.Col.name) = ls
End If

--  作者:ycwk
--  发布时间:2018/4/9 17:14:00
--  
和我的代码效果一样啊,不能在这段代码执行完后,自动保存到数据库中,需要我手动点一下保存按钮,咋回事?