以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 代码问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=65585)
|
-- 作者:爱相随
-- 发布时间:2015/3/18 16:53:00
-- 代码问题
老师,下面代码是自动编号的编号,在开发时测试都没有问题,正是用的时候提示运行错误,请老师帮助,谢谢!!
错误信息:
.NET Framework 版本:2.0.50727.3655 Foxtable 版本:2014.11.11.1 错误所在事件:表,ZJSQB2,DataColChanged 详细错误信息: Exception has been thrown by the target of an invocation. Cannot evaluate. Expression \'System.Data.NameNode\' is not an aggregate.
代码:
Select e.DataCol.Name Case "SQRQ","SQDWJM" If e.DataRow.IsNull("SQRQ") OrElse e.DataRow.IsNull("SQDWJM") Then e.DataRow("SQDBH") = Nothing Else Dim d As Date = e.DataRow("SQRQ") Dim y As Integer = d.Year Dim m As Integer = d.Month Dim Days As Integer = Date.DaysInMonth(y,m) Dim fd As Date = New Date(y,m,1) \'获得该月的第一天 Dim ld As Date = New Date(y,m,Days) \'获得该月的最后一天 Dim bh As String = e.DataRow("SQDWJM") & "-" & Format(d,"yyyyMM") & "-" \'生成编号的前缀 If e.DataRow("SQDBH").StartsWith(bh) = False \'如果单据编号前缀不符 Dim max As String Dim idx As Integer Dim flt As String flt = "SQDWJM = \'"& e.DataRow("SQDWJM") & "\' And SQRQ >= #" & fd & "# And SQRQ <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify") max = e.DataTable.Compute("Max(SQDBH)",flt) \'取得该月的相同工程代码的最大单据编号 If max > "" Then \'如果存在最大单据编号 idx = CInt(max.Substring(bh.length,3)) + 1 \'获得最大单据编号的后四位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("SQDBH") = bh & Format(idx,"000") End If End If End Select
确定后,也能自动生成单据编号,但就是每一行都要提示运行错误。
[此贴子已经被作者于2015/3/18 16:57:32编辑过]
|
-- 作者:Bin
-- 发布时间:2015/3/18 16:58:00
--
提示什么错误?
|
-- 作者:爱相随
-- 发布时间:2015/3/18 16:58:00
--
以下是引用Bin在2015/3/18 16:58:00的发言: 提示什么错误?
.NET Framework 版本:2.0.50727.3655 Foxtable 版本:2014.11.11.1 错误所在事件:表,ZJSQB2,DataColChanged 详细错误信息: Exception has been thrown by the target of an invocation. Cannot evaluate. Expression \'System.Data.NameNode\' is not an aggregate.
确定后,也能自动生成单据编号,但就是每一行都要提示运行错误。
[此贴子已经被作者于2015/3/18 16:59:12编辑过]
|
-- 作者:Bin
-- 发布时间:2015/3/18 16:59:00
--
1.把例子发上来
2.建议您用这个方法: http://www.foxtable.com/help/topics/1485.htm
先找出是哪一行出错,然后分析原因,搞不定,可以在论坛发帖,贴出代码,并告诉我们运行到哪一行出错,以及错误提示。
|
-- 作者:有点甜
-- 发布时间:2015/3/18 17:01:00
--
代码没有问题,肯定是连环的错误,请再去检测你的Datacolchanged事件其它代码。
弄不好就请上传具体例子。
|
-- 作者:爱相随
-- 发布时间:2015/3/19 10:05:00
--
老师,测试下来是下面这段代码的2以后的代码有错。思路是:A表自动复制到B表,然后相关人员在B表操作代码2后的列,然后将在B表操作的列自动复制到A表对应的行的单位格(列)。请老师帮我处理一下,谢谢
If e.DataCol.Name = "sbzgb" AndAlso e.DataRow("sbzgb") = True Then Dim dr As DataRow = DataTables("ZJsqB").AddNew For Each dc As DataCol In DataTables("ZJsqB").DataCols dr(dc.Name) = e.DataRow(dc.Name) Next End If MessageBox.Show(1) If e.DataCol.Name = "SQDbh" Then MessageBox.Show(2) e.DataRow("总工办") = DataTables("ZJSQB").Compute("总工办","[SQDBH] = \'" & e.NewValue & "\'") MessageBox.Show(3) e.DataRow("JTZGB1") = DataTables("ZJSQB").Compute("JTZGB1","[SQDBH] = \'" & e.NewValue & "\'") e.DataRow("JTZGB2") = DataTables("ZJSQB").Compute("JTZGB2","[SQDBH] = \'" & e.NewValue & "\'") e.DataRow("JTZGB3") = DataTables("ZJSQB").Compute("JTZGB3","[SQDBH] = \'" & e.NewValue & "\'") e.DataRow("时间5") = DataTables("ZJSQB").Compute("时间5","[SQDBH] = \'" & e.NewValue & "\'") e.DataRow("集团财务1") = DataTables("ZJSQB").Compute("集团财务1","[SQDBH] = \'" & e.NewValue & "\'") e.DataRow("JTCWB1") = DataTables("ZJSQB").Compute("JTCWB1","[SQDBH] = \'" & e.NewValue & "\'") e.DataRow("JTCWB2") = DataTables("ZJSQB").Compute("JTCWB2","[SQDBH] = \'" & e.NewValue & "\'") e.DataRow("JTCWB3") = DataTables("ZJSQB").Compute("JTCWB3","[SQDBH] = \'" & e.NewValue & "\'") e.DataRow("时间6") = DataTables("ZJSQB").Compute("时间6","[SQDBH] = \'" & e.NewValue & "\'") e.DataRow("集团副总") = DataTables("ZJSQB").Compute("集团副总","[SQDBH] = \'" & e.NewValue & "\'") e.DataRow("时间7") = DataTables("ZJSQB").Compute("时间7","[SQDBH] = \'" & e.NewValue & "\'") e.DataRow("资金副总") = DataTables("ZJSQB").Compute("资金副总","[SQDBH] = \'" & e.NewValue & "\'") e.DataRow("时间8") = DataTables("ZJSQB").Compute("时间8","[SQDBH] = \'" & e.NewValue & "\'") e.DataRow("董事长1") = DataTables("ZJSQB").Compute("董事长1","[SQDBH] = \'" & e.NewValue & "\'") e.DataRow("董事长2") = DataTables("ZJSQB").Compute("董事长2","[SQDBH] = \'" & e.NewValue & "\'") e.DataRow("董事长3") = DataTables("ZJSQB").Compute("董事长3","[SQDBH] = \'" & e.NewValue & "\'") e.DataRow("时间9") = DataTables("ZJSQB").Compute("时间9","[SQDBH] = \'" & e.NewValue & "\'") e.DataRow("PZJE") = DataTables("ZJSQB").Compute("PZJE","[SQDBH] = \'" & e.NewValue & "\'") e.DataRow("PZJE1") = DataTables("ZJSQB").Compute("PZJE1","[SQDBH] = \'" & e.NewValue & "\'") e.DataRow("PZJE2") = DataTables("ZJSQB").Compute("PZJE2","[SQDBH] = \'" & e.NewValue & "\'") End If
|
-- 作者:爱相随
-- 发布时间:2015/3/19 10:07:00
--
但是,在另一张表也是同样事件同样的代码,却没有提示运行错误:
If e.DataCol.Name = "sbzgb" AndAlso e.DataRow("sbzgb") = True Then Dim dr As DataRow = DataTables("ZJJHB").AddNew For Each dc As DataCol In DataTables("ZJJHB").DataCols dr(dc.Name) = e.DataRow(dc.Name) Next End If
If e.DataCol.Name = "htbh" Then e.DataRow("SHYJ") = DataTables("ZJJHB").Compute("SHYJ","[HTBH] = \'" & e.NewValue & "\'") e.DataRow("SH1") = DataTables("ZJJHB").Compute("SH1","[HTBH] = \'" & e.NewValue & "\'") e.DataRow("ZJJB") = DataTables("ZJJHB").Compute("ZJJb","[HTBH] = \'" & e.NewValue & "\'") e.DataRow("YYSM") = DataTables("ZJJHB").Compute("YYSM","[HTBH] = \'" & e.NewValue & "\'") e.DataRow("SH") = DataTables("ZJJHB").Compute("SH","[HTBH] = \'" & e.NewValue & "\'") e.DataRow("CWSH2") = DataTables("ZJJHB").Compute("CWSH2","[HTBH] = \'" & e.NewValue & "\'") End If
|
-- 作者:有点甜
-- 发布时间:2015/3/19 10:10:00
--
这样写啊
Dim ffdr As DataRow = DataTables("ZJSQB").Find("[SQDBH] = \'" & e.NewValue & "\'")
If ffdr IsNot Nothing Then
e.DataRow("JTZGB1") = ffdr("JTZGB1")
e.DataRow("JTZGB2") = ffdr("JTZGB2")
End If
|
-- 作者:爱相随
-- 发布时间:2015/3/19 10:25:00
--
我要表达的意思是
表A有一列叫“SBZGB”逻辑列,当点击“SBZGB“为勾选时,则将此指定的列自动复制到B表,在B表也有逻辑列叫“信息反馈”。当点击为勾选时,则将在B表编辑的内容对应地自动填充到A表中与单据编号相同的对应的列。就是在将B表内容自动复制到A表时有限制了,就是B表的单据编号只能复制到A表相同的单据编对应的列
|
-- 作者:爱相随
-- 发布时间:2015/3/19 10:27:00
--
从表A到表B,没有限制,但从表B到表A,则受单据编号的限制,需要一一对应
表A是甲编辑,表B乙编辑,甲乙属于不同层次的单位,但都需要在同一内容的表上发表意见。
[此贴子已经被作者于2015/3/19 10:28:37编辑过]
|