以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]表内无记录时新增行出错 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=135559) |
-- 作者:沪上游客 -- 发布时间:2019/5/29 13:29:00 -- [求助]表内无记录时新增行出错 老师你好! 如果表中没有记录时新增记录会提示报错(如图),应该是在新增行时触发了表DataColChanged事件,如果有一条记录以上就不会报错。 请问如何设置代码? 是不是可以设置在表没有记录时新增行可以不触发DataColChanged 事件?新增后编缉时可以正常执行DataColChanged? 代码应该怎么写? 谢谢老师!
[此贴子已经被作者于2019/5/29 13:29:55编辑过]
|
-- 作者:有点甜 -- 发布时间:2019/5/29 13:30:00 -- 贴出datacolchanged事件代码。 |
-- 作者:沪上游客 -- 发布时间: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 |
-- 作者:沪上游客 -- 发布时间: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("开票总数") = 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("开票总数") = dr("开票总数") e.DataRow("应收款余额") = e.DataRow("开票总数") - e.DataRow("已收款") End If End If End If
|
-- 作者:沪上游客 -- 发布时间: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([开票总数],0) - IsNull([应收款收入数],0)","循环编号 = \'" & dr("循环编号") & "\'",True) DataTables("工程合同基础数据").SQLReplaceFor("项目资金当前余额","IsNull([应收款收入数],0) + IsNull([项目资金借入数],0) - IsNull([建安发票开票数],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("开票总数") - dr("已收款") dr("工程款_实际转入金额") = dr("收入收款") dr.Save() Next End If |
-- 作者:沪上游客 -- 发布时间: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([开票总数],0) - IsNull([应收款收入数],0)","合同编号 = \'" & dr("主合同编号") & "\'",True) DataTables("工程合同基础数据").SQLReplaceFor("项目资金当前余额","IsNull([应收款收入数],0) + IsNull([项目资金借入数],0) - IsNull([建安发票开票数],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("开票总数") - dr("已收款") dr.Save() \'再计算原主合同编号的记录值并更新工程合同基础数据 slsk1 = DataTables("应收款收入数据").SQLCompute("Sum(收入收款)","主合同编号 = \'" & zhtbh & "\'") DataTables("工程合同基础数据").SQLReplaceFor("应收款收入数",slsk1,"合同编号 = \'" & zhtbh & "\'") DataTables("工程合同基础数据").SQLReplaceFor("应收款余额","IsNull([开票总数],0) - IsNull([应收款收入数],0)","合同编号 = \'" & zhtbh & "\'",True) DataTables("工程合同基础数据").SQLReplaceFor("项目资金当前余额","IsNull([应收款收入数],0) + IsNull([项目资金借入数],0) - IsNull([建安发票开票数],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([开票总数],0) - IsNull([已收款],0)","主合同编号 = \'" & zhtbh & "\'",True) Next End If End If
|
-- 作者:沪上游客 -- 发布时间: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
|
-- 作者:沪上游客 -- 发布时间:2019/5/29 13:46:00 -- 老师其他表也有同样的错误提示。有一条或以上就正常。 |
-- 作者:有点甜 -- 发布时间:2019/5/29 14:36:00 -- 加入msgbox定位出错位置
http://www.foxtable.com/webhelp/scr/1485.htm
|
-- 作者:沪上游客 -- 发布时间:2019/5/29 15:10:00 -- --------------------------- 错误 --------------------------- 编译错误:“e”是“Private”,因此它在此上下文中不可访问。 错误代码:If e.DataCol.Name = "主合同编号" Then --------------------------- 确定 --------------------------- |