以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  多值字段问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=123628)

--  作者:ZJZK2018
--  发布时间:2018/8/19 19:10:00
--  多值字段问题
老师为什么红色部分代码不起作用,如何调整?
需求是:删除dr("税票号码")中的号码时,在"税票登记"表中相应税票号码对应行自动变为Nothing。


        If e.NewValue IsNot Nothing Then
            For Each fdr As DataRow In DataTables("税票登记").Select("票据类别 = \'" & dr("票据类别") & "\' And 税票状态 Is Null")
                If dr("税票号码").Contains(fdr("税票号码")) Then
                    fdr("税票状态") = "已开票"
                    fdr("开票日期") = dr("开票日期")
                    fdr("合同编号") = dr("合同编号")
                    fdr("项目名称") = dr("项目名称")
                End If
            Next
        Else
            Dim arys() As String = dr("税票号码").Split(",")
            If arys.Length > 1 Then
                For Each ary As String In arys
                    Dim fdr As DataRow = DataTables("税票登记").Find("税票号码 = \'" & ary & "\'")
                    If fdr IsNot Nothing Then
                        fdr("税票状态") = Nothing
                        fdr("开票日期") = Nothing
                        fdr("合同编号") = Nothing
                        fdr("项目名称") = Nothing
                    End If
                Next
            Else
                Return
            End If
        End If

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:税票.table



--  作者:有点蓝
--  发布时间:2018/8/19 21:07:00
--  
……

        Else
            For Each fdr As DataRow In DataTables("税票登记").Select("税票号码 in ( \'" & e.OldValue .replace(",","\',\'") & "\')")
                fdr("税票状态") = Nothing
                fdr("开票日期") = Nothing
                fdr("合同编号") = Nothing
                fdr("项目名称") = Nothing
            Next
        End If
[此贴子已经被作者于2018/8/19 21:19:26编辑过]

--  作者:ZJZK2018
--  发布时间:2018/8/20 16:29:00
--  
老师:1、下拉框对应单元格的值显示,其他单元格已有的值不显示如何调整?


图片点击可在新窗口打开查看此主题相关图片如下:22202.png
图片点击可在新窗口打开查看



 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:税票.table

第二个需求:  税票号码 25640001,25640002,25640003,当开票金额为253000时,对应的前二个税票金额各为100000,第三个为53000元,如何处理?谢谢


图片点击可在新窗口打开查看此主题相关图片如下:555542.png
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:77777.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2018/8/20 16:37:38编辑过]

--  作者:有点蓝
--  发布时间:2018/8/20 16:53:00
--  
下拉窗口,去掉afterload事件代码,DropDownOpened代码改为

Dim str As String = DataTables("开票明细").GetComboListString("税票号码","[_Identify] <> " & Tables("开票明细").Current("_Identify"))
StatusBar.Message2 = str
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree("税票登记","票据类别|类别代码|税票号码","税票号码 not in (\'" & str.Replace("|",",").Replace(",","\',\'") & "\') And (税票状态 Is Null or 税票号码 in (\'" & Tables("开票明细").Current("税票号码").Replace(",","\',\'") & "\'))")
trv.ExpandAll()

Dim s As String  = e.Form.DropDownBox.Value
Dim nms As new List(of String)
If s > "" Then
    nms.AddRange(s.Split(","))
End If
For Each nd As WinForm.TreeNode In trv.AllNodes
    nd.Checked = nms.Contains(nd.text)
Next

第二个需求分配的规则是什么?

--  作者:ZJZK2018
--  发布时间:2018/8/20 16:58:00
--  
老师
因为小规模企业的税票开票每张发票的金额最大值为10万元,所以超过10万元就得开二张发票,如果超过20万,就得开三张发票。

--  作者:有点蓝
--  发布时间:2018/8/20 17:09:00
--  
    Case "税票号码"
        If e.NewValue IsNot Nothing Then
            Dim m As Double = dr("金额明细_开票金额")
            For Each fdr As DataRow In DataTables("税票登记").Select("票据类别 = \'" & dr("票据类别") & "\' And 税票状态 Is Null")
                If dr("税票号码").Contains(fdr("税票号码")) Then
                    fdr("税票状态") = "已开票"
                    fdr("开票日期") = dr("开票日期")
                    fdr("合同编号") = dr("合同编号")
                    fdr("项目名称") = dr("项目名称")
                    If m > 100000 Then
                        fdr("开票金额")  = 100000
                        m = m-100000
                    Else
                        fdr("开票金额")  = m
                    End If
                End If
            Next
        Else
            For Each fdr As DataRow In DataTables("税票登记").Select("税票号码 in ( \'" & e.OldValue .replace(",","\',\'") & "\')")
                fdr("税票状态") = Nothing
                fdr("开票日期") = Nothing
                fdr("合同编号") = Nothing
                fdr("项目名称") = Nothing
            Next
        End If

--  作者:ZJZK2018
--  发布时间:2018/8/20 17:52:00
--  
老师十分感谢,基本满足要求,现在有个小问题:
在修改已选择几个税票号码时,没有同时对“税票登记”表进行调整,如何处理?谢谢


图片点击可在新窗口打开查看此主题相关图片如下:9999020.png
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:888851.png
图片点击可在新窗口打开查看

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:税票.table




--  作者:有点蓝
--  发布时间:2018/8/20 20:12:00
--  
   Case "税票号码"
        If e.NewValue IsNot Nothing Then
            Dim m As Double = dr("金额明细_开票金额")
            For Each fdr As DataRow In DataTables("税票登记").Select("税票号码 in ( \'" & e.OldValue.replace(",","\',\'") & "\')")
                fdr("税票状态") = Nothing
                fdr("开票日期") = Nothing
                fdr("合同编号") = Nothing
                fdr("项目名称") = Nothing
                fdr("开票金额")  = Nothing
            Next
            For Each fdr As DataRow In DataTables("税票登记").Select("税票号码 in ( \'" & e.NewValue.replace(",","\',\'") & "\')")
                \'If dr("税票号码").Contains(fdr("税票号码")) Then
                fdr("税票状态") = "已开票"
                fdr("开票日期") = dr("开票日期")
                fdr("合同编号") = dr("合同编号")
                fdr("项目名称") = dr("项目名称")
                If m > 100000 Then
                    fdr("开票金额")  = 100000
                    m = m - 100000
                Else
                    fdr("开票金额")  = m
                End If
                \'End If
            Next
        Else
            For Each fdr As DataRow In DataTables("税票登记").Select("税票号码 in ( \'" & e.OldValue.replace(",","\',\'") & "\')")
                fdr("税票状态") = Nothing
                fdr("开票日期") = Nothing
                fdr("合同编号") = Nothing
                fdr("项目名称") = Nothing
                fdr("开票金额") = Nothing
            Next
            dr("票据类别") = Nothing
        End If


--  作者:ZJZK2018
--  发布时间:2018/8/20 20:57:00
--  
老师还是不对
.NET Framework 版本:2.0.50727.8762
Foxtable 版本:2018.7.23.1
错误所在事件:表,开票明细,DataColChanged
详细错误信息:
调用的目标发生了异常。
未设置对象变量或 With 块变量。


--  作者:有点蓝
--  发布时间:2018/8/20 21:04:00
--  
我测试没有问题。请确认抄对了代码!