以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]列不属于表  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=107445)

--  作者:cd_tdh
--  发布时间:2017/9/28 10:41:00
--  [求助]列不属于表


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

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

DataColChanged代码如下:

 

Select e.DataCol.name
    Case "合同金额","申请金额","企业所得税基数","企业所得税率","个人所得税基数","个人所得税率","计费基数","管理费费率","应缴增值税基数"
        If e.DataRow.IsNull("企业所得税基数") OrElse e.DataRow.IsNull("企业所得税率")Then \'为空
            e.DataRow("企业所得税") = Nothing
        ElseIf e.DataRow("企业所得税基数") ="合同金额"  Then
            e.DataRow("企业所得税") = e.DataRow("合同金额") * e.DataRow("企业所得税率") / 100
        ElseIf e.DataRow("企业所得税基数") ="申请金额"  Then
            e.DataRow("企业所得税") = e.DataRow("申请金额") * e.DataRow("企业所得税率") / 100
        End If
        If e.DataRow.IsNull("个人所得税基数") OrElse e.DataRow.IsNull("个人所得税率")  Then \'为空
            e.DataRow("个人所得税") = Nothing
        ElseIf e.DataRow("个人所得税基数") ="合同金额"  Then
            e.DataRow("个人所得税") = e.DataRow("合同金额") * e.DataRow("个人所得税率") / 100
        ElseIf e.DataRow("个人所得税基数") ="申请金额"  Then
            e.DataRow("个人所得税") = e.DataRow("申请金额") * e.DataRow("个人所得税率") / 100
        End If
        If e.DataRow.IsNull("计费基数") OrElse e.DataRow.IsNull("管理费费率")Then \'为空
            e.DataRow("管理费") = Nothing
        ElseIf e.DataRow("计费基数") ="合同金额"  Then
            e.DataRow("管理费") = e.DataRow("合同金额") * e.DataRow("管理费费率") / 100
        ElseIf e.DataRow("计费基数") ="申请金额"  Then
            e.DataRow("管理费") = e.DataRow("申请金额") * e.DataRow("管理费费率") / 100
        End If
        If e.DataRow.IsNull("应缴增值税基数") Then \'为空
            e.DataRow("应缴增值税") = Nothing
        ElseIf e.DataRow("应缴增值税基数") ="合同金额"  Then
            e.DataRow("应缴增值税") = e.DataRow("合同金额") / 1.11 * 0.11
        ElseIf e.DataRow("应缴增值税基数") ="发票金额"  Then
            e.DataRow("应缴增值税") = e.DataRow("发票金额") / 1.11 * 0.11
        ElseIf e.DataRow("应缴增值税基数") ="申请金额"  Then
            e.DataRow("应缴增值税") = e.DataRow("申请金额") / 1.11 * 0.11
        End If
End Select

 

 

Select Case  e.DataCol.Name
    Case  "项目编码","申请金额","本期_累计扣款","企业所得税率","个人所得税基数","个人所得税率","管理费费率","手续费","安全保证金","质量保证金","应急保证金","资料保证金","发票金额","到账金额","成本发票","人工工资","其他费用","抵扣增值税","现金补税","预交增值税","应补增值税","管理费","应扣费用明细_小计","本期_累计扣款","成本差额税率","成本差额税","扣税明细_小计","成本差额"
        Dim  dr As  DataRow
        Dim  mr As  DataRow = e.DataRow
        Dim  drs As  List(of DataRow)
        dr = e.DataTable.Find("[计量期数] < " & mr("计量期数") &  " And [项目编码] = \'" &  mr("项目编码") &  "\'", "[计量期数] Desc")
        If dr Is Nothing Then
            mr("累计_计量金额") = mr("申请金额")
            mr("累计_扣款金额") = mr("本期_累计扣款")
            mr("累计_支付金额") = mr("实际支付金额")  \'("申请金额") - mr("本期_累计扣款")
            dr = mr
        End If
MessageBox.Show(2)
        drs = e.DataTable.Select("[计量期数] >= " & dr("计量期数") &  " And [项目编码] = \'" &  dr("项目编码") &  "\'", "[计量期数]")
        For  i As  Integer = 1 To drs.Count - 1
            drs(i)("累计_计量金额") = drs(i-1)("累计_计量金额") + drs(i)("申请金额")
            drs(i)("累计_扣款金额") = drs(i-1)("累计_扣款金额") + drs(i)("本期_累计扣款")         \'+ drs(i)("申请金额") - drs(i)("本期_累计扣款")
            drs(i)("累计_支付金额") = drs(i-1)("累计_支付金额") + drs(i)("实际支付金额")
        Next
        If  e.DataCol.Name = "项目编码" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            dr = e.DataTable.Find("[计量期数] < " & mr("计量期数") &  " And [项目编码] = \'" &  e.OldValue &  "\'", "[计量期数] Desc")
            If  dr Is Nothing Then
                dr = e.DataTable.Find("[项目编码] = \'" & e.OldValue &  "\'", "[计量期数]")
                If dr IsNot Nothing Then
                    dr("累计_计量金额") = dr("申请金额")
                    dr("累计_扣款金额") = dr("本期_累计扣款")
                    dr("累计_支付金额") = dr("实际支付金额")
                End If
            End If
MessageBox.Show(3)
            If  dr IsNot Nothing Then
                drs = e.DataTable.Select("[计量期数] >= " & dr("计量期数") &  " And [项目编码] = \'" &  dr("项目编码") &  "\'", "[计量期数]")
                For i As Integer = 1 To drs.Count - 1
                    drs(i)("累计_计量金额") = drs(i-1)("累计_计量金额") + drs(i)("申请金额")
                    drs(i)("累计_扣款金额") = drs(i-1)("累计_扣款金额") + drs(i)("本期_累计扣款")
                    drs(i)("累计_支付金额") = drs(i-1)("累计_支付金额") + drs(i)("实际支付金额")
                Next
            End If
        End If
End Select
MessageBox.Show(4)

 

Select Case e.DataCol.name
    Case  "项目编码","申请金额","本期_累计扣款","实际支付金额","企业所得税率","个人所得税基数","个人所得税率","管理费费率" , "手续费","安全保证金","质量保证金","应急保证金","资料保证金","发票金额","到账金额","成本发票","人工工资","其他费用","抵扣增值税","现金补税","预交增值税","应补增值税","管理费","应扣费用明细_小计","本期_累计扣款","成本差额税率","成本差额税","扣税明细_小计","成本差额"
        Dim fdr As DataRow = DataTables("工程款申请").sqlFind("_Identify = " & e.DataRow("临时列"))
        If fdr IsNot Nothing Then
            fdr("实际支付金额") = e.DataRow("实际支付金额")
        End If
End Select

[此贴子已经被作者于2017/9/28 10:41:40编辑过]

--  作者:有点甜
--  发布时间:2017/9/28 10:54:00
--  

是不是你申请表没有对应的列?

 

        Dim fdr As DataRow = DataTables("工程款申请").sqlFind("_Identify = " & e.DataRow("临时列"))
        If fdr IsNot Nothing Then
            fdr("实际支付金额") = e.DataRow("实际支付金额")
        End If


--  作者:cd_tdh
--  发布时间:2017/9/28 11:07:00
--  

老师,申请表“实际支付金额”是表达式列,改字符就没问题了,但这个代码怎么不执行了呢?

Select e.DataCol.name
    Case "合同金额","申请金额","企业所得税基数","企业所得税率","个人所得税基数","个人所得税率","计费基数","管理费费率","应缴增值税基数"
        If e.DataRow.IsNull("企业所得税基数") OrElse e.DataRow.IsNull("企业所得税率")Then \'为空
            e.DataRow("企业所得税") = Nothing
        ElseIf e.DataRow("企业所得税基数") ="合同金额"  Then
            e.DataRow("企业所得税") = e.DataRow("合同金额") * e.DataRow("企业所得税率") / 100
        ElseIf e.DataRow("企业所得税基数") ="发票金额"  Then
            e.DataRow("企业所得税") = e.DataRow("发票金额") * e.DataRow("企业所得税率") / 100
        ElseIf e.DataRow("企业所得税基数") ="申请金额"  Then
            e.DataRow("企业所得税") = e.DataRow("申请金额") * e.DataRow("企业所得税率") / 100
        End If
        If e.DataRow.IsNull("个人所得税基数") OrElse e.DataRow.IsNull("个人所得税率")  Then \'为空
            e.DataRow("个人所得税") = Nothing
        ElseIf e.DataRow("个人所得税基数") ="合同金额"  Then
            e.DataRow("个人所得税") = e.DataRow("合同金额") * e.DataRow("个人所得税率") / 100
        ElseIf e.DataRow("个人所得税基数") ="发票金额"  Then
            e.DataRow("个人所得税") = e.DataRow("发票金额") * e.DataRow("个人所得税率") / 100
        ElseIf e.DataRow("个人所得税基数") ="申请金额"  Then
            e.DataRow("个人所得税") = e.DataRow("申请金额") * e.DataRow("个人所得税率") / 100
        End If
        If e.DataRow.IsNull("计费基数") OrElse e.DataRow.IsNull("管理费费率")Then \'为空
            e.DataRow("管理费") = Nothing
        ElseIf e.DataRow("计费基数") ="合同金额"  Then
            e.DataRow("管理费") = e.DataRow("合同金额") * e.DataRow("管理费费率") / 100
        ElseIf e.DataRow("计费基数") ="发票金额"  Then
            e.DataRow("管理费") = e.DataRow("发票金额") * e.DataRow("管理费费率") / 100
        ElseIf e.DataRow("计费基数") ="申请金额"  Then
            e.DataRow("管理费") = e.DataRow("申请金额") * e.DataRow("管理费费率") / 100
        End If
        If e.DataRow.IsNull("应缴增值税基数") Then \'为空
            e.DataRow("应缴增值税") = Nothing
        ElseIf e.DataRow("应缴增值税基数") ="合同金额"  Then
            e.DataRow("应缴增值税") = e.DataRow("合同金额") / 1.11 * 0.11
        ElseIf e.DataRow("应缴增值税基数") ="发票金额"  Then
            e.DataRow("应缴增值税") = e.DataRow("发票金额") / 1.11 * 0.11
        ElseIf e.DataRow("应缴增值税基数") ="申请金额"  Then
            e.DataRow("应缴增值税") = e.DataRow("申请金额") / 1.11 * 0.11
        End If
End Select

[此贴子已经被作者于2017/9/28 11:27:56编辑过]

--  作者:cd_tdh
--  发布时间:2017/9/28 12:00:00
--  
老师,我吧bin删除重新打开就解决了,新问题又出来了,实际支付金额又不更新了。

 

        Dim fdr As DataRow = DataTables("工程款申请").sqlFind("_Identify = " & e.DataRow("临时列"))
        If fdr IsNot Nothing Then
            fdr("实际支付金额") = e.DataRow("实际支付金额")
        End If


--  作者:有点甜
--  发布时间:2017/9/28 12:25:00
--  

 sqlFind是后台查找,你修改后要保存save,就是 fdr.save

 

 保存后,你要重新刷新表才能看到修改后的数据。


--  作者:cd_tdh
--  发布时间:2017/9/28 13:13:00
--  
以下是引用有点甜在2017/9/28 12:25:00的发言:

 sqlFind是后台查找,你修改后要保存save,就是 fdr.save

 

 保存后,你要重新刷新表才能看到修改后的数据。

我还以为都可以用sql,保存了还刷新,用sql就不方便了


--  作者:有点甜
--  发布时间:2017/9/28 14:58:00
--  
以下是引用cd_tdh在2017/9/28 13:13:00的发言:

我还以为都可以用sql,保存了还刷新,用sql就不方便了

 

你可以先find,再sqlfind

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=107342&skin=0