以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助自动复制行数值为0  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=148705)

--  作者:沪上游客
--  发布时间:2020/4/13 23:24:00
--  求助自动复制行数值为0
If e.DataCol.Name = "财务编号" AndAlso e.DataRow("期末贷方余额") <> 0 Then
    For Each cdr As DataRow In DataTables("项目清算_应付账款").Select("[期末贷方余额] <> 0")
        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("成本项目") = "应付账款"
        Next
    Next
End If

老师您好!
以上代码是用窗口表自动复制行到内部表,为什么"期末贷方余额"复制到"未付金额",结果是 0
请老师指教一下,我搞了好长时间没有解决。

--  作者:有点蓝
--  发布时间:2020/4/14 9:02:00
--  
这个代码看不出什么问题,应该是有其他代码影响了。找不到问题可以上传实例看看
--  作者:沪上游客
--  发布时间:2020/4/14 11:28:00
--  
对的,谢谢老师!另外一个问题,下面代码同时在窗口AfterLoad  Click 中,执行时顺序不同。加了Application.DoEvents() 也无效。请老师指教。
再次感谢!
Dim pr As String = Tables("工程合同基础数据").Current("合同编号")
Dim yfzkdr As DataRow
yfzkdr = DataTables("项目清算_应付账款").Find("[期末贷方余额] <> 0")
If yfzkdr IsNot Nothing Then
    DataTables("项目清算_应付账款").DataCols("财务编号").RaiseDataColChanged(yfzkdr)
End If

Dim cbxmdr As DataRow
cbxmdr = DataTables("成本计划及支出情况").Find("[成本项目] <> \'应付账款\'")
If cbxmdr IsNot Nothing Then
    DataTables("成本计划及支出情况").DataCols("入账金额").RaiseDataColChanged(cbxmdr)
    DataTables("成本计划及支出情况").DataCols("实付金额").RaiseDataColChanged(cbxmdr)
Application.DoEvents()
End If
Tables("成本计划及支出情况").Current("成本项目") = "应付账款"
Tables("成本计划及支出情况").Current("成本项目明细") = "应付款余额合计"
Tables("成本计划及支出情况").Current("未付金额") = yfkkmye
Tables("成本计划及支出情况").Current("合同编号") = pr

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20200414112629.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20200414112438.jpg
图片点击可在新窗口打开查看



--  作者:沪上游客
--  发布时间:2020/4/14 11:44:00
--  
我在“项目清算_应付账款”表事件DataColChanged设置了自动复制行代码
If e.DataCol.Name = "财务编号" AndAlso e.DataRow("期末贷方余额") <> 0 Then
    For Each cdr As DataRow In DataTables("项目清算_应付账款").Select("[期末贷方余额] <> 0")
        Dim nma() As String = {"供应商名称","期末贷方余额","合同编号"} \'"项目清算_应付账款"表数据来源列
        Dim nmb() As String = {"成本项目明细","未付金额","合同编号"} \'"成本计划及支出情况"表数据接收列
        Dim dr As DataRow = DataTables("成本计划及支出情况").AddNew
        dr("成本项目") = "应付账款"
        For i As Integer = 0 To nma.Length - 1
            dr(nmb(i)) = cdr(nma(i))
        Next
    Next
End If

老师在按钮Click中怎么样才达到“项目清算_应付账款”表事件DataColChanged自动复制行结束后再执行以下代码新增行?
Tables("成本计划及支出情况").AddNew()
Tables("成本计划及支出情况").Current("成本项目") = "应付账款"
Tables("成本计划及支出情况").Current("成本项目明细") = "应付款余额合计"
Tables("成本计划及支出情况").Current("未付金额") = yfkkmye
Tables("成本计划及支出情况").Current("合同编号") = pr
[此贴子已经被作者于2020/4/14 12:08:31编辑过]

--  作者:有点蓝
--  发布时间:2020/4/14 12:09:00
--  
Dim dr As DataRow = DataTables("成本计划及支出情况").AddNew

试试改为

Dim dr As Row = Tables("成本计划及支出情况").AddNew