以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 关于报表,蓝版再帮看看,感激不尽!  (http://foxtable.net/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

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

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



--  作者:有点蓝
--  发布时间: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、在一个单元格生成两个字段数据,发现按下图写不成正常生成。

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

图片点击可在新窗口打开查看此主题相关图片如下:报表出错2.png
图片点击可在新窗口打开查看





[此贴子已经被作者于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个列数据是因为少个尖括号,公式的问题再折腾折腾!