Foxtable(狐表)用户栏目专家坐堂 → 付款凭证的设计问题


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

主题:付款凭证的设计问题

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


加好友 发短信
等级:童狐 帖子:220 积分:2220 威望:0 精华:0 注册:2018/3/30 19:56:00
付款凭证的设计问题  发帖心情 Post By:2025/3/26 21:02:00 [只看该作者]

老师您好
我想用foxtable 这个软件开发一个程序,先把单元格扩展类型调整成文件,然后在单元格里上传文件,文件上传到服务器后,然后其他同事可以同步看到。
ftp服务器有一个坏处,所有的文件都上传到一个根目录里面,如果有重复的就容易覆盖。
为了改变这种问题,我想 foxtable 每个单元格上传的文件要求单独成立一个文件夹,然后把文件上传进去
,这种情况下怎么设计这个代码啊?

求老师指点一二。
 

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


加好友 发短信
等级:超级版主 帖子:113133 积分:576082 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/3/27 8:57:00 [只看该作者]

参考:http://www.foxtable.com/webhelp/topics/1410.htm

1、窗口设计一个上传按钮
2、上传前先根据当前行的编号(或者其它可以区分每行数据的列)使用DirExists判断ftp里是否有这个编号为名称的目录,如果没有就使用MakeDir添加
3、使用OpenFileDialog获取文件
4、把文件使用Upload上传到前面指定的目录里
5、把ftp路径添加到单元格:http://www.foxtable.com/webhelp/topics/2717.htm

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


加好友 发短信
等级:童狐 帖子:220 积分:2220 威望:0 精华:0 注册:2018/3/30 19:56:00
  发帖心情 Post By:2025/3/31 9:51:00 [只看该作者]


以上4步均已经实现,但是上传的文件,打开却出现问题了
上传代码如下:

Dim ftp1 As New FtpClient
Dim fl As String
Dim receiverName As String

Try
    ftp1.Host = "192.168.1.x"
    ftp1.Account = "xxxx" ,这里隐藏了
    ftp1.Password = "xxx"
    ftp1.RootDir = "/PSD"
    
    ' 获取并检查收款单位
    receiverName = Trim(CurrentTable.Current("收款单位"))
    
    ' 检查收款单位是否为空
    If String.IsNullOrEmpty(receiverName) Then
        MessageBox.Show("警告:收款单位为空!")
        
    End If
    
    ' 构建目录路径,移除可能的非法字符
    receiverName = receiverName.Replace("\", "_") _
    .Replace("/", "_") _
    .Replace(":", "_") _
    .Replace("*", "_") _
    .Replace("?", "_") _
    .Replace("""", "_") _
    .Replace("<", "_") _
    .Replace(">", "_") _
    .Replace("|", "_") _
    .Trim()
    
    ' 构建目录路径
    fl = receiverName & "/" & CurrentTable.Current("流水号")
    
    
    Try
        ftp1.ChangeDir("/")
        
        ' 先尝试创建收款单位目录(如果不存在)
        If Not ftp1.dirExists(receiverName) Then
            If Not ftp1.MakeDir(receiverName) Then
                MessageBox.Show("创建收款单位目录失败!") 
            End If
        End If
        
        ' 切换到收款单位目录
        ftp1.ChangeDir(receiverName)
        
        ' 创建流水号子目录
        If Not ftp1.dirExists(CurrentTable.Current("流水号")) Then
            If ftp1.MakeDir(CurrentTable.Current("流水号")) Then
                MessageBox.Show("创建目录成功: " & fl)
            Else
                MessageBox.Show("创建流水号目录失败!")
            End If
        Else
            MessageBox.Show("目录已存在: " & fl)
        End If
        
    Catch ex As Exception
        MessageBox.Show("创建目录失败: " & ex.Message)
    End Try
    
Catch ex As Exception
    MessageBox.Show("FTP连接失败: " & ex.Message)
End Try



'第二步获取上传文件的文件名 并上传到指定的目录里面
'Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog 
'If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
'    ftp1.upload(dlg.FileName, fl, True)
'End If
' ... 前面的 FTP 创建目录代码保持不变 ...

'第二步获取上传文件的文件名并上传到指定的目录里面
Try
    Dim dlg As New OpenFileDialog 
    If dlg.ShowDialog = DialogResult.OK Then
        ' 获取文件名 - 使用简单的字符串处理方法
        Dim fileName As String = dlg.FileName.Substring(dlg.FileName.LastIndexOf("\") + 1)
        
        Try
            ' 确保当前目录是正确的
            ftp1.ChangeDir("/PSD")
            ftp1.ChangeDir(receiverName)
            ftp1.ChangeDir(CurrentTable.Current("流水号"))
            
            ' 上传文件
            If ftp1.Upload(dlg.FileName, fileName, True) Then
                MessageBox.Show("文件上传成功:" & fileName)
            Else
                MessageBox.Show("文件上传失败!")
            End If
            
        Catch ex As Exception
            MessageBox.Show("文件上传过程中出错:" & ex.Message)
        End Try
    End If
'第三步,把ftp路径添加到单元格
Try
    Dim lst As New List(Of String)
    ' 获取当前目录下的所有文件
    Dim fileList = ftp1.GetFileList().ToList() ' 转换为List
    
    ' 正确声明循环变量 file
    For Each file As Object In fileList
        lst.Add("\PSD\"& fl & "\" & file.ToString())
    Next
    
    CurrentTable.Current.DataRow.Lines("付款支持性文件") = lst 
    Catch ex As Exception
    MessageBox.Show("获取文件列表失败:" & ex.Message)
End Try
    
Catch ex As Exception
    MessageBox.Show("文件选择或上传过程出错:" & ex.Message)
End Try

上传之后,用列自带的窗口打不开了
提示如下:
图片点击可在新窗口打开查看此主题相关图片如下:打开失败.png
图片点击可在新窗口打开查看

老师帮忙看看哪里出现问题了啊

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


加好友 发短信
等级:超级版主 帖子:113133 积分:576082 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/3/31 9:56:00 [只看该作者]

貌似路径不对,核对一下服务器路径是否正确


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


 回到顶部