以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  跨表生成对应行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=85052)

--  作者:liu1992
--  发布时间:2016/5/16 16:45:00
--  跨表生成对应行

表A是合同管理,已有一些数据和逻辑,表B是本期开票数及到账金额。

条件:收款方式四种(月收、两月收、季收、年收)
         状态(生效、失效)

希望:通过判断当前月份及表A中合同状态是“生效”的行,找出本月需要开票的行,然后在表B自动生成所找到的行数据

 


1月:月收、两月收、季收的行需要筛选出,然后到表B中生成
2月:月收
3月:月收、两月收
4月:月收、季收
5月:月收、年收
6月:月收
7月:月收、两月收、季收
8月:月收
9月:月收、两月收
10月:月收、季收
11月:月收、两月收
12月:月收


[此贴子已经被作者于2016/5/27 10:48:15编辑过]

--  作者:liu1992
--  发布时间:2016/5/16 16:46:00
--  
请老师指教和解答!
--  作者:liu1992
--  发布时间:2016/5/16 16:49:00
--  
密码:catic123
[此贴子已经被作者于2016/5/16 16:52:01编辑过]

--  作者:大红袍
--  发布时间:2016/5/16 17:02:00
--  

Dim dt1 As DataTable = DataTables("合同管理")
Dim dt2 As DataTable = DataTables("本期开票")

Dim arys() As String = {"月收,两月收,季收", "月收", "", "", "月收,年收", "", "", "", "", "", "", ""}
Dim filter As String = "收租方式 in (\'" & arys(Date.Today.Month-1).replace(",", "\',\'") & "\')"
msgbox(filter)
dt2.DataRows.Clear
For Each dr As DataRow In dt1.Select(filter)
    Dim ndr As DataRow = dt2.AddNew
    ndr("合同号") = dr("合同号")
    ndr("收款方式") = dr("收租方式")
Next


--  作者:liu1992
--  发布时间:2016/5/17 10:26:00
--  

老师,这句Dim filter As String = "收租方式 in (\'" & arys(Date.Today.Month-1).replace(",", "\',\'") & "\')"    是判断当前收租方式类型的语句,总是出现,不管是在填数据、新增行,或者是打开项目的时候,总是会出现,而且是多次,要点击多次后才可以。

如何优化啊?


--  作者:大红袍
--  发布时间:2016/5/17 10:31:00
--  

1、这句代码去掉

 

msgbox(filter)

 

2、4楼的代码,单独写到一个按钮里面去,不要写在你的表事件里面啊。


--  作者:liu1992
--  发布时间:2016/5/17 15:09:00
--  

老师,现在打开项目的时候,表B 的数据重新计算了一次,被原先修改后的数据替换了。

请问怎么做到,如果表B已经有此行数据,就不要再生成该条数据了?


--  作者:大红袍
--  发布时间:2016/5/17 15:15:00
--  

Dim dt1 As DataTable = DataTables("合同管理")
Dim dt2 As DataTable = DataTables("本期开票")

Dim arys() As String = {"月收,两月收,季收", "月收", "", "", "月收,年收", "", "", "", "", "", "", ""}
Dim filter As String = "收租方式 in (\'" & arys(Date.Today.Month-1).replace(",", "\',\'") & "\')"

For Each dr As DataRow In dt1.Select(filter)
    Dim ndr As DataRow = dt2.Find("合同号 = \'" & dr("合同号") & "\'")
    If ndr Is Nothing Then ndr = dt2.AddNew
    ndr("合同号") = dr("合同号")
    ndr("收款方式") = dr("收租方式")
Next


--  作者:liu1992
--  发布时间:2016/5/20 15:21:00
--  
老师,现在条件有些许变动。每个月动态生成的数据,然后在这些行里面添加和修改空格,但是前面有设定:如果表中已经有对应的数据就不会再生成新的行,所以6月就不能再重新生成新的数据行了。
简单的来说,就是判断数据行如果不一样的话,需要生成新的一行数据。请老师指教,要怎么改呢?

--  作者:大红袍
--  发布时间:2016/5/20 15:22:00
--  
看8楼。根据合同号判断是否存在啊