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


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

主题:beforebuild 事件

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


加好友 发短信
等级:六尾狐 帖子:1470 积分:9536 威望:0 精华:0 注册:2014/12/18 16:12:00
beforebuild 事件  发帖心情 Post By:2021/11/27 9:00:00 [显示全部帖子]

If CurrentTable.name = "IL接头任务单"
    Dim tbl As Table = Tables("IL接头任务单")
    If e.Book.TempLate = "IL接头任务单" Then  'TempLate是指模板文件的名称
        Dim WWC As String = "未完成核对"
        Dim cnt As Integer = tbl.DataTable.GetValues( "销售订单号","完成核对 = '" & WWC & "'",Tables("IL接头任务单").filter).count  
        If cnt > 0 
            messagebox.show("本页面存在 " & cnt & " 个未完成核对的行, 请完成核对后再使用此按钮!")
        End If
    End If
End If


上面的代码是放在 beforebuild 事件里面的,目的是在打印excel表格之前提出必要的警告,但是执行之后,出现下面的message:

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2021.5.29.1
错误所在事件:Excel报表,BeforeBuild
详细错误信息:
[piao号] = '211201IL10' And [piao号日期] >= #2021-12-01# And [piao号日期] < #2021-12-02# And [订单完成] = '未完成' 不是有效的 Sort 字符串项。


问题1:这些列名并没有在代码里面出现,如何消除这个message呢?
问题2:如果还有“未完成核对”的行,就不允许打印此excel报表,还有其他方法可以实现吗?谢谢。



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


加好友 发短信
等级:六尾狐 帖子:1470 积分:9536 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/11/29 10:00:00 [显示全部帖子]

If CurrentTable.name = "IL接头任务单"
    Dim tbl As Table = Tables("IL接头任务单")
    If e.Book.TempLate = "IL接头任务单" Then  'TempLate是指模板文件的名称
        Dim WWC As String = "完成核对 = '" & WWC & "'"
        If Tables("IL接头任务单").filter > "" Then
            WWC = WWC & " and " & Tables("IL接头任务单").filter
        End If
        Dim cnt As Integer = tbl.DataTable.GetValues( "销售订单号",WWC).count  
        If cnt > 0 
            messagebox.show("本页面存在 " & cnt & " 个未完成核对的行, 请完成核对后再使用此按钮!")
        End If
    End If
End If

上述代码执行结果还是不对。我希望从“完成核对”这个数据列里面找出“未完成核对” (=WWC)这个值的行数。请问要怎样修改代码。

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


加好友 发短信
等级:六尾狐 帖子:1470 积分:9536 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/11/29 10:49:00 [显示全部帖子]

谢谢。
如1楼所示问题2:如果还有“未完成核对”的行,现在就会有警告出来了,但是最终还是允许打印此 excel 报表的。是否有其他方法能够不允许打印此 excel 报表呢?

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


加好友 发短信
等级:六尾狐 帖子:1470 积分:9536 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/11/30 10:09:00 [显示全部帖子]

If e.Book.TempLate = "直身开料任务单" Then  'TempLate是指模板文件的名称
    If CurrentTable.name = "直身开料单" Then
        Tables("直身开料单").Sort = "生产piao号,型号,长度 Desc"
        For r As Integer = 0 To Tables("直身开料单").rows.count - 1
        Dim dr As Row = Tables("直身开料单").Rows(r)
            If dr("开料顺序号") IsNot Nothing Then
            Else
                dr("开料顺序号") = r+1
            End If
        Next 
    End If
End If

上面代码放在 Beforebuild 事件里面,希望它在执行表格打印之前自动排序并填入开料顺序号。执行之后发现,排序它是完成了,但是没有完成填入开料顺序号的工作。请教是什么原因?

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


加好友 发短信
等级:六尾狐 帖子:1470 积分:9536 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/11/30 10:58:00 [显示全部帖子]

"直身开料单" 里面的排序是按代码完成了,但是,在 "直身开料单" 里面填写 "开料顺序号" 则没有填写,当然,最后打印出的 excel 表格也没有出现 开料顺序号。我希望是这个代码填写完 开料顺序号 后,把开料顺序号也打印在 excel 表格里面。

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


加好友 发短信
等级:六尾狐 帖子:1470 积分:9536 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/11/30 16:22:00 [显示全部帖子]

依次出现“直身开料任务单”,“直身开料单”,“0”,“0”,“0”,“0” ... ...

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


加好友 发短信
等级:六尾狐 帖子:1470 积分:9536 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/11/30 17:22:00 [显示全部帖子]

开始我是像12楼那样子写的,后来是希望开料顺序号一列为空的才要填写新的编号,所以改成
            If dr("开料顺序号") IsNot Nothing Then
            Else
                dr("开料顺序号") = r+1
            End If
这样子的,结果它什么都不填了。


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


加好友 发短信
等级:六尾狐 帖子:1470 积分:9536 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/12/1 8:55:00 [显示全部帖子]

关于13楼的问题,我改用 isnull 来判断 dr("开料顺序号"),运行结果"开料顺序号"还是全部为空值。

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


加好友 发短信
等级:六尾狐 帖子:1470 积分:9536 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/12/3 11:51:00 [显示全部帖子]

If CurrentTable.name = "IL接头任务单"
    Dim tbl As Table = Tables("IL接头任务单")
    If e.Book.TempLate = "IL接头任务单" Then  'TempLate是指模板文件的名称
        Dim WWC As String = "完成核对 = '未完成核对'"
        If Tables("IL接头任务单").filter > "" Then
            WWC = WWC & " and " & Tables("IL接头任务单").filter
        End If
        Dim cnt As Integer = tbl.DataTable.GetValues( "销售订单号",WWC).count  
        If cnt > 0 
            messagebox.show("本页面存在 " & cnt & " 个未完成核对的行, 请完成核对后再使用此按钮!")
            Tables("IL接头任务单").Filter = "完成核对 = '未完成核对' "

        End If
    End If
End If

3楼和4楼的问题我已经改了代码了。但执行还是有问题:

一、筛选后的画面已经不存在“未完成核对”的数据行了,但运行后还是出现下图所示警告:

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

二、Tables("IL接头任务单").Filter = "完成核对 = '未完成核对' "执行的结果会把已经隐藏的“未完成核对”行都筛选出来。






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


加好友 发短信
等级:六尾狐 帖子:1470 积分:9536 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/12/3 14:06:00 [显示全部帖子]

请你试一下在筛选树那里筛选出如下piao号:211025IL04, 211025IL05, 211025IL06 (或者其他多个无 “未完成核对” 的数据行) 来测试。这些数据行都是没有 “未完成核对” 的了。但运行结果还是有警告出来。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:箱号问题.rar



 回到顶部
总数 16 1 2 下一页