Foxtable(狐表)用户栏目专家坐堂 → beforebuild


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

主题:beforebuild

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
beforebuild  发帖心情 Post By:2022/12/14 10:23:00 [只看该作者]

If CurrentTable.name = "SBG对账单" Then
    Dim tbl As Table = Tables("SBG对账单")
    If e.Book.TempLate = "开具fa piao项目" Then 'TempLate是指模板文件的名称
        Dim cnt As Integer = tbl.DataTable.GetValues("页码", Tables("SBG对账单").filter).count '统计某列筛选后含有多少个不同的页码, 加上 Tables("接头BOM").filter 就是进行筛选的意思,不加,就是所有数据 
        If cnt > 1 Then 
            messagebox.show("本页面存在 " & cnt & " 个不同的页码, 请重新筛选后再使用此按钮!")
        Else
            '不起作用?
            Dim a As Row = Tables("SBG对账单").Current
            If a.isnull("同年月序号") Then
                MessageBox.Show("存在 同年月序号 为空值的行!")
                Tables("SBG对账单").Filter = "[同年月序号] is null"
            End If
        End If
    End If
End If

上面的代码,我希望在运行报表之前提醒还有同年月序号 为空值的行,但是这些代码无效。请教是哪里的问题呢?谢谢。

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110334 积分:561518 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/14 10:42:00 [只看该作者]

调试
msgbox(CurrentTable.name)
If CurrentTable.name = "SBG对账单" Then
    Dim tbl As Table = Tables("SBG对账单")
msgbox(e.Book.TempLate)
    If e.Book.TempLate = "开具fa piao项目" Then 'TempLate是指模板文件的名称
        Dim cnt As Integer = tbl.DataTable.GetValues("页码", Tables("SBG对账单").filter).count '统计某列筛选后含有多少个不同的页码, 加上 Tables("接头BOM").filter 就是进行筛选的意思,不加,就是所有数据 
msgbox("cnt =" & cnt )
        If cnt > 1 Then 
            messagebox.show("本页面存在 " & cnt & " 个不同的页码, 请重新筛选后再使用此按钮!")
        Else
msgbox(1)
            '不起作用?
            Dim a As Row = Tables("SBG对账单").Current
msgbox(a.isnull("同年月序号"))
            If a.isnull("同年月序号") Then
                MessageBox.Show("存在 同年月序号 为空值的行!")
                Tables("SBG对账单").Filter = "[同年月序号] is null"
            End If
        End If
    End If
End If

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2022/12/29 8:51:00 [只看该作者]

If CurrentTable.name = "生产计划" Then
    If e.Book.TempLate = "物料标签-腾龙" Then 'TempLate是指模板文件的名称
        Dim a As Row = Tables("生产计划").Current
        If a.isnull("操作员3") Then
            MessageBox.Show("此行的操作员为空值,不允许打印标签!")
        Else
            If a("生产日期") < Date.Today.AddDays( - 2) AndAlso User.Group = "生产" Then
                MessageBox.Show("生产车间如果需要打印2天之前的标签,请找管理员处理!") 
            End If 
        End If
    End If
End If

请教的问题:上述两个条件中任何一个没有满足,都会出现警告,但是报表也照样打印。我希望,如果任何一个条件没有满足,就不允许打印报表,要怎样修改代码?谢谢。

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110334 积分:561518 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/29 9:03:00 [只看该作者]

报表事件没有退出的功能,换种方式,写代码先判断再生成报表,类似:http://www.foxtable.com/webhelp/topics/1145.htm

        Dim a As Row = Tables("生产计划").Current
        If a.isnull("操作员3") Then
            MessageBox.Show("此行的操作员为空值,不允许打印标签!")
return
        Else
            If a("生产日期") < Date.Today.AddDays( - 2) AndAlso User.Group = "生产" Then
                MessageBox.Show("生产车间如果需要打印2天之前的标签,请找管理员处理!") 
return
            End If 
        End If
‘下面开始生成报表
Dim Book As New XLS.Book(ProjectPath & "Attachments\出库单.xls")
Dim
 fl As String = ProjectPath & "Reports\出库单.xls"
Book
.Build() '生成细节区
Book
.Sheets(0).Rows.RemoveAt(0'删除第一行,Excel报表的第一行通常是标记行
Book
.Save(fl) '保存工作簿
Dim
 Proc As New Process '打开工作簿
Proc
.File = fl
Proc
.Start()

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2022/12/29 10:28:00 [只看该作者]

这个方法有效,好。谢谢。

 回到顶部