Foxtable(狐表)用户栏目专家坐堂 → [求助]表内无记录时新增行出错


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

主题:[求助]表内无记录时新增行出错

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


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
[求助]表内无记录时新增行出错  发帖心情 Post By:2019/5/29 13:29:00 [只看该作者]

老师你好!
如果表中没有记录时新增记录会提示报错(如图),应该是在新增行时触发了表DataColChanged事件,如果有一条记录以上就不会报错。
请问如何设置代码?
是不是可以设置在表没有记录时新增行可以不触发DataColChanged 事件?新增后编缉时可以正常执行DataColChanged
代码应该怎么写?
谢谢老师!

图片点击可在新窗口打开查看此主题相关图片如下:运行错误提示.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2019/5/29 13:29:55编辑过]

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


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

贴出datacolchanged事件代码。

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


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
  发帖心情 Post By:2019/5/29 13:33:00 [只看该作者]

If e.DataCol.Name = "主合同编号" Then
    If e.DataRow.IsNull("记录编号") Then
        If e.DataRow.IsNull("录入日期") Then
            e.DataRow("记录编号") = Nothing
        Else
            Dim bh As String = "YSK" & Format(e.DataRow("录入日期"),"yyyyMMdd") '取得编号的11位前缀
            If e.DataRow("记录编号").StartsWith(bh) = False '如果编号的前11位不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.sqlCompute("Max(记录编号)","录入日期 = '" & e.DataRow("录入日期") & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该天的最大编号
                If max > "" Then '如果存在最大编号
                    idx = CInt(max.Substring(12,3)) + 1 '获得最大编号的后三位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("记录编号") = bh & "-" & Format(idx,"000")
                e.DataRow.Save
            End If
        End If
    End If
End If


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


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
  发帖心情 Post By:2019/5/29 13:33:00 [只看该作者]

Select Case e.DataCol.name
    Case "记录编号"
        If e.DataRow.IsNull("记录编号") Then
            e.Cancel = True
        Else
            Dim dr As DataRow = DataTables("项目资金管理").SQLFind("记录编号 = '" & e.DataRow("记录编号") & "'")
            If dr Is Nothing Then
                dr = DataTables("项目资金管理").AddNew()
                dr("记录编号") = e.DataRow("记录编号")
                dr("主合同编号") = e.DataRow("主合同编号")
                dr("结算方式") = e.DataRow("结算方式")
                dr("工程款收款") = e.DataRow("收入收款")
                dr("项目借款_借入") = e.DataRow("收入收款")
                dr("录入日期") = e.DataRow("录入日期")
                dr("日期") = e.DataRow("单据日期")
                dr("录入人") = e.DataRow("录入人")
                dr("项目借款_类别") = "收入工程款"
                dr("摘要") = "甲方单位:" & e.DataRow("甲方名称")
                dr.Save()
            End If
        End If
    Case "主合同编号","收入收款","单据日期"
        Dim dr As DataRow = DataTables("项目资金管理").SQLFind("记录编号 = '" & e.DataRow("记录编号") & "'")
        If dr IsNot Nothing Then
            dr("主合同编号") = e.DataRow("主合同编号")
            dr("结算方式") = e.DataRow("结算方式")
            dr("工程款收款") = e.DataRow("收入收款")
            dr("项目借款_借入") = e.DataRow("收入收款")
            dr("录入日期") = e.DataRow("录入日期")
            dr("日期") = e.DataRow("单据日期")
            dr("录入人") = e.DataRow("录入人")
            dr("摘要") = "甲方单位:" & e.DataRow("甲方名称")
            DataTables("项目资金管理").DataCols("记录编号").RaiseDataColChanged(dr)
            DataTables("项目资金管理").Save()
        End If
End Select

If e.DataCol.Name = "主合同编号" Then
    If e.NewValue Is Nothing Then
        e.DataRow("项目编号") = Nothing
        e.DataRow("工程名称") = Nothing
        e.DataRow("所属部门_区域公司") = Nothing
        e.DataRow("所属部门_分公司") = Nothing
        e.DataRow("所属部门_项目部") = Nothing
        e.DataRow("甲方名称") = Nothing
        e.DataRow("财务编号") = Nothing
        e.DataRow("实际造价") = Nothing
        e.DataRow("开工日期") = Nothing
        e.DataRow("竣工日期") = Nothing
        e.DataRow("循环编号") = Nothing
        e.DataRow("合同信息") = Nothing
        e.DataRow("已收款") = Nothing
        e.DataRow("开piao总数") = Nothing
    Else
        Dim dr As DataRow
        dr = DataTables("工程合同基础数据").SQLFind("[合同编号] = '" & e.NewValue & "'")
        If dr IsNot Nothing
            e.DataRow("项目编号") = dr("项目编号")
            e.DataRow("工程名称") = dr("工程名称")
            e.DataRow("所属部门_区域公司") = dr("所属部门_区域公司")
            e.DataRow("所属部门_分公司") = dr("所属部门_分公司")
            e.DataRow("所属部门_项目部") = dr("所属部门_项目部")
            e.DataRow("甲方名称") = dr("甲方名称")
            e.DataRow("财务编号") = dr("财务编号")
            e.DataRow("实际造价") = dr("实际造价")
            e.DataRow("开工日期") = dr("开工日期")
            e.DataRow("竣工日期") = dr("竣工日期")
            e.DataRow("循环编号") = dr("循环编号")
            e.DataRow("合同信息") = dr("合同编号") & dr("工程名称")
            e.DataRow("已收款") = dr("应收款收入数")
            e.DataRow("开piao总数") = dr("开piao总数")
            e.DataRow("应收款余额") = e.DataRow("开piao总数") - e.DataRow("已收款")
        End If
    End If
End If

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


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
  发帖心情 Post By:2019/5/29 13:34:00 [只看该作者]

If e.DataCol.Name = "收入收款" Then
    For Each dr As DataRow In DataTables("应收款收入数据").datarows
        Dim slsk As Decimal
        slsk = DataTables("应收款收入数据").Compute("Sum(收入收款)","循环编号 = '" & dr("循环编号") & "'")
        DataTables("工程合同基础数据").SQLReplaceFor("应收款收入数",slsk,"循环编号 = '" & dr("循环编号") & "'")
        DataTables("工程合同基础数据").SQLReplaceFor("应收款余额","IsNull([开piao总数],0) - IsNull([应收款收入数],0)","循环编号 = '" & dr("循环编号") & "'",True)
        DataTables("工程合同基础数据").SQLReplaceFor("项目资金当前余额","IsNull([应收款收入数],0) + IsNull([项目资金借入数],0) - IsNull([建安fa piao开piao数],0) - IsNull([项目资金还款数],0) - IsNull([支出合同应付款_已付数],0) - IsNull([工资支付数],0) - IsNull([其他成本支出数],0) - IsNull([税费报销支出],0) - IsNull([总部申报数],0) - IsNull([印花税_支出合同],0) - IsNull([印花税_固定资产],0) - IsNull([管理费汇总_合计],0) - IsNull([企业所得税_总部预交],0)","循环编号 = '" & dr("循环编号") & "'",True)
        dr("已收款") = slsk
        dr("应收款余额") = dr("开piao总数") - dr("已收款")
        dr("工程款_实际转入金额") = dr("收入收款")
        dr.Save()
    Next
End If


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


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
  发帖心情 Post By:2019/5/29 13:35:00 [只看该作者]

Dim zhtbh As String = Tables("应收款收入数据").Current("主合同编号")
If e.DataCol.Name = "主合同编号" Then
    If e.NewValue IsNot Nothing Then
        For Each dr As DataRow In DataTables("应收款收入数据").datarows
            Dim slsk As Decimal
            Dim slsk1 As Decimal
            '先计算已更改主合同编号的记录值并更新工程合同基础数据
            slsk = DataTables("应收款收入数据").Compute("Sum(收入收款)","主合同编号 = '" & dr("主合同编号") & "'")
            DataTables("工程合同基础数据").SQLReplaceFor("应收款收入数",slsk,"合同编号 = '" & dr("主合同编号") & "'")
            DataTables("工程合同基础数据").SQLReplaceFor("应收款余额","IsNull([开piao总数],0) - IsNull([应收款收入数],0)","合同编号 = '" & dr("主合同编号") & "'",True)
            DataTables("工程合同基础数据").SQLReplaceFor("项目资金当前余额","IsNull([应收款收入数],0) + IsNull([项目资金借入数],0) - IsNull([建安fa piao开piao数],0) - IsNull([项目资金还款数],0) - IsNull([支出合同应付款_已付数],0) - IsNull([工资支付数],0) - IsNull([其他成本支出数],0) - IsNull([税费报销支出],0) - IsNull([总部申报数],0) - IsNull([印花税_支出合同],0) - IsNull([印花税_固定资产],0) - IsNull([管理费汇总_合计],0) - IsNull([企业所得税_总部预交],0)","合同编号 = '" & dr("主合同编号") & "'",True)
            dr("已收款") = slsk
            dr("应收款余额") = dr("开piao总数") - dr("已收款")
            dr.Save()
            '再计算原主合同编号的记录值并更新工程合同基础数据
            slsk1 = DataTables("应收款收入数据").SQLCompute("Sum(收入收款)","主合同编号 = '" & zhtbh & "'")
            DataTables("工程合同基础数据").SQLReplaceFor("应收款收入数",slsk1,"合同编号 = '" & zhtbh & "'")
            DataTables("工程合同基础数据").SQLReplaceFor("应收款余额","IsNull([开piao总数],0) - IsNull([应收款收入数],0)","合同编号 = '" & zhtbh & "'",True)
            DataTables("工程合同基础数据").SQLReplaceFor("项目资金当前余额","IsNull([应收款收入数],0) + IsNull([项目资金借入数],0) - IsNull([建安fa piao开piao数],0) - IsNull([项目资金还款数],0) - IsNull([支出合同应付款_已付数],0) - IsNull([工资支付数],0) - IsNull([其他成本支出数],0) - IsNull([税费报销支出],0) - IsNull([总部申报数],0) - IsNull([印花税_支出合同],0) - IsNull([印花税_固定资产],0) - IsNull([管理费汇总_合计],0) - IsNull([企业所得税_总部预交],0)","合同编号 = '" & zhtbh & "'",True)
            DataTables("应收款收入数据").SQLReplaceFor("已收款",slsk1,"主合同编号 = '" & zhtbh & "'")
            DataTables("应收款收入数据").SQLReplaceFor("应收款余额","IsNull([开piao总数],0) - IsNull([已收款],0)","主合同编号 = '" & zhtbh & "'",True)
        Next
    End If
End If

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


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
  发帖心情 Post By:2019/5/29 13:36:00 [只看该作者]

If e.DataCol.Name = "进度" Then
    If Tables("应收款收入数据").Rows.Count > 0 Then
        Dim drs As DataRow
        drs = DataTables("我的工作台").Find("[记录编号] = '" & e.DataRow("记录编号") & "'")
        If drs Is Nothing
            If User.Group = "总公司" Then
                For Each sz As DataRow In DataTables("流程设置").Select("姓名 = '" & User.Name & "' And 所属表名 = '应收款收入数据'")
                    For Each cdr As DataRow In DataTables("应收款收入数据").sqlselect("进度 ='" & sz("进度") & "'")
                        Dim nma() As String = {"进度","主合同编号","工程名称","所属部门_区域公司","所属部门_分公司","录入日期","记录编号"} '"应收款收入数据"表数据来源列
                        Dim nmb() As String = {"进度","合同编号","工程名称","所属部门_区域公司","所属部门_分公司","申请日期","记录编号"} '我的工作台表数据接收列
                        Dim dr As DataRow = DataTables("我的工作台").AddNew
                        For i As Integer = 0 To nma.Length - 1
                            dr(nmb(i)) = cdr(nma(i))
                            dr("所属表名") = "应收款收入数据"
                            dr("窗口名") = "待办应收款申请"
                            If dr("进度") = "YSK1A" Then
                                dr("事项") = "应收款录入" & "(应收款金额:" & cdr("收入收款") & "元)"
                            ElseIf dr("进度") = "YSK1B" Then
                                dr("事项") = "应收款待审批" & "(应收款金额:" & cdr("收入收款") & "元)"
                            End If
                        Next
                    Next
                Next
            ElseIf User.Group Like "*区域" Then
                For Each sz As DataRow In DataTables("流程设置").Select("姓名 = '" & User.Name & "' And 所属表名 = '应收款收入数据'")
                    For Each cdr As DataRow In DataTables("应收款收入数据").sqlselect("进度 ='" & sz("进度") & "'And 所属部门_区域公司 = '" & User.Group & "'")
                        Dim nma() As String = {"进度","主合同编号","工程名称","所属部门_区域公司","所属部门_分公司","录入日期","记录编号"} '"应收款收入数据"表数据来源列
                        Dim nmb() As String = {"进度","合同编号","工程名称","所属部门_区域公司","所属部门_分公司","申请日期","记录编号"} '我的工作台表数据接收列
                        Dim dr As DataRow = DataTables("我的工作台").AddNew
                        For i As Integer = 0 To nma.Length - 1
                            dr(nmb(i)) = cdr(nma(i))
                            dr("所属表名") = "应收款收入数据"
                            dr("窗口名") = "待办应收款申请"
                            If dr("进度") = "YSK1A" Then
                                dr("事项") = "应收款录入" & "(应收款金额:" & cdr("收入收款") & "元)"
                            ElseIf dr("进度") = "YSK1B" Then
                                dr("事项") = "应收款待审批" & "(应收款金额:" & cdr("收入收款") & "元)"
                            End If
                        Next
                    Next
                Next
            ElseIf User.Group Like "*分公司" Then
                For Each sz As DataRow In DataTables("流程设置").Select("姓名 = '" & User.Name & "' And 所属表名 = '应收款收入数据'")
                    For Each cdr As DataRow In DataTables("应收款收入数据").sqlselect("进度 ='" & sz("进度") & "'And 所属部门_分公司 = '" & User.Group & "'")
                        Dim nma() As String = {"进度","主合同编号","工程名称","所属部门_区域公司","所属部门_分公司","录入日期","记录编号"} '"应收款收入数据"表数据来源列
                        Dim nmb() As String = {"进度","合同编号","工程名称","所属部门_区域公司","所属部门_分公司","申请日期","记录编号"} '我的工作台表数据接收列
                        Dim dr As DataRow = DataTables("我的工作台").AddNew
                        For i As Integer = 0 To nma.Length - 1
                            dr(nmb(i)) = cdr(nma(i))
                            dr("所属表名") = "应收款收入数据"
                            dr("窗口名") = "待办应收款申请"
                            If dr("进度") = "YSK1A" Then
                                dr("事项") = "应收款录入" & "(应收款金额:" & cdr("收入收款") & "元)"
                            ElseIf dr("进度") = "YSK1B" Then
                                dr("事项") = "应收款待审批" & "(应收款金额:" & cdr("收入收款") & "元)"
                            End If
                        Next
                    Next
                Next
            End If
        End If
    End If
End If

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


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
  发帖心情 Post By:2019/5/29 13:46:00 [只看该作者]

老师其他表也有同样的错误提示。有一条或以上就正常。

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


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

加入msgbox定位出错位置

 

http://www.foxtable.com/webhelp/scr/1485.htm

 


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


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
  发帖心情 Post By:2019/5/29 15:10:00 [只看该作者]

---------------------------
错误
---------------------------
编译错误:“e”是“Private”,因此它在此上下文中不可访问。



错误代码:If e.DataCol.Name = "主合同编号" Then
---------------------------
确定   
---------------------------


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