Foxtable(狐表)用户栏目专家坐堂 → [求助]停止工作怎么破?


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

主题:[求助]停止工作怎么破?

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


加好友 发短信
等级:四尾狐 帖子:820 积分:5641 威望:0 精华:1 注册:2015/11/28 14:00:00
[求助]停止工作怎么破?  发帖心情 Post By:2017/3/18 9:12:00 [只看该作者]

这个错误怎么破?
图片点击可在新窗口打开查看此主题相关图片如下:qq图片20170318091026.png
图片点击可在新窗口打开查看

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

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

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


加好友 发短信
等级:超级版主 帖子:110597 积分:562881 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/3/18 9:57:00 [只看该作者]


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


加好友 发短信
等级:四尾狐 帖子:820 积分:5641 威望:0 精华:1 注册:2015/11/28 14:00:00
  发帖心情 Post By:2017/3/18 10:21:00 [只看该作者]

以下是引用有点蓝在2017/3/18 9:57:00的发言:

参考:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=96796

 

  用了暂停执行事件代码

SystemReady = False
Try
'追加数据代码
Catch ex
As Exception
    MessageBox.Show(
"追加数据失败")
End
Try
SystemReady =
True

后正常了。但哪个DataRows不知道啥时候会出问题,郁闷的很啊。还希望早日解决这个问题。


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


加好友 发短信
等级:超级版主 帖子:110597 积分:562881 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/3/18 10:51:00 [只看该作者]

什么DataRows的问题?贴出你问这代码看看

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


加好友 发短信
等级:四尾狐 帖子:820 积分:5641 威望:0 精华:1 注册:2015/11/28 14:00:00
  发帖心情 Post By:2017/3/18 11:30:00 [只看该作者]

以下是引用有点蓝在2017/3/18 10:51:00的发言:
什么DataRows的问题?贴出你问这代码看看

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=97234&replyID=&skin=1

这个遍历问题。


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


加好友 发短信
等级:四尾狐 帖子:820 积分:5641 威望:0 精华:1 注册:2015/11/28 14:00:00
  发帖心情 Post By:2017/3/18 11:34:00 [只看该作者]

Select Case e.DataCol.Name
    Case "品名料号"
        If e.NewValue Is Nothing Then
            For Each cl As DataCol In e.DataTable.DataCols
                e.DataRow(cl) = Nothing
            Next
        Else
            Dim dr As DataRow = DataTables("tabDIYTable24").SQLFind("F124 = '" & e.DataRow("品名料号") & "'")
            If dr IsNot Nothing AndAlso e.DataRow.IsNull("ID") Then
                e.DataRow("ID") = dr("ID")
                e.DataRow("品名规格") = dr("F125")
                e.DataRow("产品备注") = dr("F130")
            End If
            Dim drs As List(of DataRow) = DataTables("tabDIYTable29").SQLSelect("ID = " & e.DataRow("ID"))
            If drs.Count > 0 Then
                e.DataRow("仓库名称") = drs(0)("F160")
                e.DataRow("现有库存") = drs(0)("F162")
                If drs(0)("F166") <> #1/1/1900# Then
                    e.DataRow("最近入库日期") = drs(0)("F166")
                End If
                If drs(0)("F165") <> #1/1/1900# Then
                    e.DataRow("最近出库日期") = drs(0)("F165")
                End If
                e.DataRow("最低库存") = drs(0)("F2429")
                e.DataRow("最高库存") = drs(0)("F2430")
                Dim zxr As Date = drs(0)("F165")
                If zxr.AddDays(93) < Date.Today And e.DataRow("现有库存") > 0 Then
                    e.DataRow("销售状态") = "滞销"
                Else
                    e.DataRow("销售状态") = ""
                End If
                'DataTables("产品月季总出货量").LoadFilter = "[产品料号] = '" & e.DataRow("品名料号") & "' And [仓库名称] = '" & e.DataRow("仓库名称") & "'"
                'DataTables("产品月季总出货量").Load
                e.DataRow("最高月用量") = DataTables("产品月季总出货量").SQLCompute("MAX(总出货量)", "[产品料号] = '" & e.DataRow("品名料号") & "' And [仓库名称] = '" & e.DataRow("仓库名称") & "'and [月季份] = '月'")
                e.DataRow("平均季用量") = DataTables("产品月季总出货量").SQLCompute("AVG(总出货量)", "[产品料号] = '" & e.DataRow("品名料号") & "' And [仓库名称] = '" & e.DataRow("仓库名称") & "'and [月季份] = '季'")
                SystemReady = False
                Try
                For i As Integer = 1 To drs.Count - 1
                    Dim edr As DataRow = e.DataTable.DataRows.AddNew()
                    edr("ID") = e.DataRow("ID")
                    edr("品名料号") = e.DataRow("品名料号")
                    edr("品名规格") = e.DataRow("品名规格")
                    edr("产品备注") = e.DataRow("产品备注")
                    edr("仓库名称") = drs(i)("F160")
                    edr("现有库存") = drs(i)("F162")
                    If drs(i)("F166") <> #1/1/1900# Then
                        edr("最近入库日期") = drs(i)("F166")
                    End If
                    If drs(i)("F165") <> #1/1/1900# Then
                        edr("最近出库日期") = drs(i)("F165")
                    End If
                    edr("最低库存") = drs(i)("F2429")
                    edr("最高库存") = drs(i)("F2430")
                    Dim zxr1 As Date = drs(i)("F165")
                    If zxr1.AddDays(93) < Date.Today And edr("现有库存") > 0 Then
                        edr("销售状态") = "滞销"
                    Else
                        edr("销售状态") = ""
                    End If
                    edr("最高月用量") = DataTables("产品月季总出货量").SQLCompute("MAX(总出货量)", "[产品料号] = '" & edr("品名料号") & "' And [仓库名称] = '" & edr("仓库名称") & "'and [月季份] = '月'")
                    edr("平均季用量") = DataTables("产品月季总出货量").SQLCompute("AVG(总出货量)", "[产品料号] = '" & edr("品名料号") & "' And [仓库名称] = '" & edr("仓库名称") & "'and [月季份] = '季'")
                Next
                Catch ex As Exception
                    MessageBox.Show("追加数据失败")
                End Try
                SystemReady = True
                CurrentTable.Sort = ""
                With Tables("单独库存查询")
                    .MergeMode = MergeModeEnum.Free
                    .MergeCols.Clear()
                    .MergeCols.Add("品名规格")
                    .MergeSort = "品名料号 DESC"
                    .AllowMerge = True
                End With
            End If
        End If
End Select

这是我目前的代码,如果不用SystemReady,就会停止工作。升级2017前就是不用SystemReady到也不会停止工作,升级后,肯定停止工作。


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


加好友 发短信
等级:超级版主 帖子:110597 积分:562881 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/3/18 11:51:00 [只看该作者]

SystemReady 影响到DataRows.Count的问题最新版的2017已经解决的了,下面地址重新下载更新

 

开发版和商业版用户的下载地址:
http://www.foxtable.com/update/how.htm

 

如果使用了Try包住就没有问题,说明你的代码逻辑肯定有问题,抛出错误看看

 

 Catch ex As Exception
                   MessageBox.Show(ex.Message)
                End Try


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


加好友 发短信
等级:超级版主 帖子:110597 积分:562881 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/3/18 11:52:00 [只看该作者]

 Dim edr As DataRow = e.DataTable.DataRows.AddNew()

改为

 

 Dim edr As DataRow = e.DataTable.AddNew()

 

没有e.DataTable.DataRows.AddNew()这种用法


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


加好友 发短信
等级:超级版主 帖子:110597 积分:562881 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/3/18 11:54:00 [只看该作者]

非常不建议在表事件中对当前表批量增加行,非常容易形成死循环。

 

这种逻辑适合在按钮中处理


 回到顶部