以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助] 关于报表,蓝版再帮看看,感激不尽! (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=175065) |
-- 作者:foxtablefanse -- 发布时间:2022/2/18 10:45:00 -- [求助] 关于报表,蓝版再帮看看,感激不尽! \'Functions.Execute("NormalMonth",日期,扎帐日) 函数代码: Dim dt As Date=vars(0) Dim ed As Integer=vars(1) \'扎帐日,自然月填31 If dt.Day > ed Then dt = new Date(dt.year,dt.month,1) \'改为下个月的第一天 dt= dt.AddMonths(1) End If Return dt 命令窗口 Dim d As Date=#01/29/2020# Output.Show(Functions.Execute("NormalMonth",d,25)) 怎么返回的是0001-02-01? [此贴子已经被作者于2022/2/18 11:47:06编辑过]
|
-- 作者:有点蓝 -- 发布时间:2022/2/18 11:00:00 -- Dim dt As Date=args(0) Dim ed As Integer=args(1) \'扎帐日,自然月填31 |
-- 作者:foxtablefanse -- 发布时间:2022/2/18 11:08:00 -- |
-- 作者:foxtablefanse -- 发布时间:2022/2/18 11:46:00 -- 生成报表的按钮代码: Dim rq As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker1") Dim zb As WinForm.TextBox = e.Form.Controls("TextBox1") \'值班车 Dim ry As WinForm.TextBox = e.Form.Controls("TextBox2") \'人员 Dim js As WinForm.TextBox = e.Form.Controls("TextBox3") \'记事 If rq.Value IsNot Nothing Then vars("用车日期")=rq.Value \'用于报表传值 vars("值班车辆")=zb.Text vars("人员动态")=ry.Text vars("记事备忘")=js.Text \'生成以YYYY-MM格式的文件目录 Dim ym As String=CStr(Functions.Execute("NormalMonth",vars("用车日期"),25)).SubString(0,7) \'取前7位做目录名 If FileSys.DirectoryExists(ProjectPath & "PgReports\\" & ym)=False Then \'如果目录不存在 FileSys.CreateDirectory(ProjectPath & "PgReports\\" & ym) \'创建目录 End If \'生成报表 Dim Book As New XLS.Book(ProjectPath & "Attachments\\排车记录.xls") Book.Build() \'生成细节区 Book.Sheets(0).Rows.RemoveAt(0) \'删除第一行,Excel报表的第一行通常是标记行 Book.Save(ProjectPath & "pgReports\\" & ym & "\\" & CStr(vars("用车日期")) & ".xls") \'保存工作簿,以用车日期命名工作薄!! Dim Proc As New Process \'打开工作簿 Proc.File = ProjectPath & "pgReports\\" & ym & "\\" & CStr(vars("用车日期")) & ".xls" Proc.Start() Else MessageBox.show("没有数据可以导出!") End If |
-- 作者:有点蓝 -- 发布时间:2022/2/18 13:46:00 -- 1、模板路径、模板名称不正确。找不到文件 2、模板处于打开状态。先关闭所有execl进程再试试
|
-- 作者:foxtablefanse -- 发布时间:2022/2/18 21:40:00 -- 是文件夹里没有这个报表,说明没有生成成功,不知是哪里出了问题 |
-- 作者:有点蓝 -- 发布时间:2022/2/19 9:55:00 -- 不是没有生成成功,而是模板找不到 Dim Book As New XLS.Book(ProjectPath & "Attachments\\排车记录.xls")
|
-- 作者:foxtablefanse -- 发布时间:2022/2/19 15:00:00 -- Dim rq As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker1") Dim zb As WinForm.TextBox = e.Form.Controls("TextBox1") \'值班车 Dim ry As WinForm.TextBox = e.Form.Controls("TextBox2") \'人员 Dim js As WinForm.TextBox = e.Form.Controls("TextBox3") \'记事 \' \'\'If rq.Value IsNot Nothing Then Dim d As Date=rq.Value vars("用车日期")=rq.Value \'用于报表传值 vars("值班车辆")=zb.Text vars("人员动态")=ry.Text vars("记事备忘")=js.Text Dim Book As New XLS.Book(ProjectPath & "Attachments\\排车记录.xls") Dim fl As String = ProjectPath & "Reports\\排车记录.xls" Dim Sheet As XLS.Sheet = Book.Sheets(0) Sheet(1,4).Value = vars("用车日期") \'修改模板,加入用车日期 Sheet(1,8).Value = "25吨吊车值班车辆:" & vars("值班车辆") \'修改模板,加入值班车辆 Sheet(5,1).Value = "人员动态:" & vars("人员动态") \'修改模板,加入人员动态 Sheet(6,1).Value = "记事备忘:" & vars("记事备忘") \'修改模板,加入记事备忘 Book.Build() \'生成细节区 Book.Sheets(0).Rows.RemoveAt(0) \'删除第一行,Excel报表的第一行通常是标记行 Book.Save(fl) \'保存工作簿 Dim Proc As New Process \'打开工作簿 Proc.File = fl Proc.Start() 1、通过一个个排除,发现是模板中写入了一个日期怎么转换成星期的公式,然后就不能正常生成报表了,删掉公式就可以, 2、在一个单元格生成两个字段数据,发现按下图写不成正常生成。 [此贴子已经被作者于2022/2/19 15:05:33编辑过]
|
-- 作者:有点蓝 -- 发布时间:2022/2/19 15:50:00 -- 不能在明细里使用execl的公式。合并2个列数据参考:http://www.foxtable.com/webhelp/topics/1388.htm 比如 <[列1] & "/" & [列2]>
|
-- 作者:foxtablefanse -- 发布时间:2022/2/19 16:26:00 -- 谢谢蓝版!!!!合并2个列数据是因为少个尖括号,公式的问题再折腾折腾! |