以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 付款凭证的设计问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=196068) |
-- 作者:hfapplehao -- 发布时间:2025/3/26 21:02:00 -- 付款凭证的设计问题 老师您好 我想用foxtable 这个软件开发一个程序,先把单元格扩展类型调整成文件,然后在单元格里上传文件,文件上传到服务器后,然后其他同事可以同步看到。 ftp服务器有一个坏处,所有的文件都上传到一个根目录里面,如果有重复的就容易覆盖。 为了改变这种问题,我想 foxtable 每个单元格上传的文件要求单独成立一个文件夹,然后把文件上传进去 ,这种情况下怎么设计这个代码啊? 求老师指点一二。 |
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2025/3/31 9:51:00 -- 上传代码如下: 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 上传之后,用列自带的窗口打不开了 老师帮忙看看哪里出现问题了啊 |
-- 作者:有点蓝 -- 发布时间:2025/3/31 9:56:00 -- 貌似路径不对,核对一下服务器路径是否正确 |