以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- [求助]停止工作怎么破? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=97769)
|
-- 作者:ajie5211
-- 发布时间:2017/3/18 9:12:00
-- [求助]停止工作怎么破?
这个错误怎么破? 此主题相关图片如下:qq图片20170318091026.png
此主题相关图片如下:qq图片20170318091036.png
此主题相关图片如下:qq图片20170318091042.png
|
-- 作者:有点蓝
-- 发布时间:2017/3/18 9:57:00
--
参考:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=96796
|
-- 作者:ajie5211
-- 发布时间:2017/3/18 10:21:00
--
用了暂停执行事件代码
SystemReady = False Try \'追加数据代码 Catch ex As Exception MessageBox.Show("追加数据失败") End Try SystemReady = True
后正常了。但哪个DataRows不知道啥时候会出问题,郁闷的很啊。还希望早日解决这个问题。
|
-- 作者:有点蓝
-- 发布时间:2017/3/18 10:51:00
--
什么DataRows的问题?贴出你问这代码看看
|
-- 作者:ajie5211
-- 发布时间: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
-- 发布时间: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到也不会停止工作,升级后,肯定停止工作。
|
-- 作者:有点蓝
-- 发布时间: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
|
-- 作者:有点蓝
-- 发布时间: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()这种用法
|
-- 作者:有点蓝
-- 发布时间:2017/3/18 11:54:00
--
非常不建议在表事件中对当前表批量增加行,非常容易形成死循环。
这种逻辑适合在按钮中处理
|