Foxtable(狐表)用户栏目专家坐堂 → 代码问题


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

主题:代码问题

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


加好友 发短信
等级:四尾狐 帖子:929 积分:6500 威望:0 精华:0 注册:2014/6/25 10:48:00
代码问题  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/3/18 16:58:00 [只看该作者]

提示什么错误?

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


加好友 发短信
等级:四尾狐 帖子:929 积分:6500 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/3/18 16:59:00 [只看该作者]

1.把例子发上来

2.建议您用这个方法:
http://www.foxtable.com/help/topics/1485.htm

先找出是哪一行出错,然后分析原因,搞不定,可以在论坛发帖,贴出代码,并告诉我们运行到哪一行出错,以及错误提示。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/3/18 17:01:00 [只看该作者]

 代码没有问题,肯定是连环的错误,请再去检测你的Datacolchanged事件其它代码。

 

 弄不好就请上传具体例子。


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


加好友 发短信
等级:四尾狐 帖子:929 积分:6500 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By: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


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


加好友 发短信
等级:四尾狐 帖子:929 积分:6500 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By: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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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


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


加好友 发短信
等级:四尾狐 帖子:929 积分:6500 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By:2015/3/19 10:25:00 [只看该作者]

我要表达的意思是

表A有一列叫“SBZGB”逻辑列,当点击“SBZGB“为勾选时,则将此指定的列自动复制到B表,在B表也有逻辑列叫“信息反馈”。当点击为勾选时,则将在B表编辑的内容对应地自动填充到A表中与单据编号相同的对应的列。就是在将B表内容自动复制到A表时有限制了,就是B表的单据编号只能复制到A表相同的单据编对应的列


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


加好友 发短信
等级:四尾狐 帖子:929 积分:6500 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By:2015/3/19 10:27:00 [只看该作者]

从表A到表B,没有限制,但从表B到表A,则受单据编号的限制,需要一一对应

 

表A是甲编辑,表B乙编辑,甲乙属于不同层次的单位,但都需要在同一内容的表上发表意见。

[此贴子已经被作者于2015/3/19 10:28:37编辑过]

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