以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 这个代码应如何改 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=2496) |
||||||||
-- 作者:老有所乐 -- 发布时间:2009/4/17 21:42:00 -- 这个代码应如何改 要求在“进销表”中勾选某行的“A”列,就可将该行的记录复制到“库存表”,去除该行“A”列的勾选,可将已经复制到“库存表”的该行删除。自己做了一个代码,但不能达到目的,请老师指点,谢谢!
修改后的附件
[此贴子已经被作者于2009-4-21 0:04:03编辑过]
|
||||||||
-- 作者:八婺 -- 发布时间:2009/4/17 22:20:00 -- 增加容易删除难,删除要有具体条件的。 If e.DataCol.Name = "A" Then \'如果是已结帐列的内容变动 If e.NewValue = True Then \'而且变动后的值是True(已勾选) dim y As New Filler y.SourceTable = DataTables("进货表") \'指定数据来源 y.SourceCols = "ID,日期,商品名称,代码,规格,数量,单价,金额,客户" \'指定数据来源列 y.DataTable = DataTables("库存表") \'指定数据接收表 \'将筛选出总分排名大于ComboBox1而小于ComboBox2的人员填入到表A y.DataCols = "ID,日期,商品名称,代码,规格,数量,单价,金额,客户" \'指定数据接收列 y.ExcludeExistValue = true \'设为True,排除接收表中已经存在的内容. y.Filter = "[A] = true" y.Fill() \'填充数据 End If End If |
||||||||
-- 作者:老有所乐 -- 发布时间:2009/4/17 22:38:00 -- 谢八婺先生,勾选复制可以,但去掉勾选不能删除已复制的那行。 |
||||||||
-- 作者:八婺 -- 发布时间:2009/4/17 23:25:00 -- 还在等你的条件呢,没有具体条件只好这样了。 If e.DataCol.Name = "A" Then \'如果是已结帐列的内容变动 If e.NewValue = True Then \'而且变动后的值是True(已勾选) dim y As New Filler y.SourceTable = DataTables("进货表") \'指定数据来源 y.SourceCols = "ID,日期,商品名称,代码,规格,数量,单价,金额,客户" \'指定数据来源列 y.DataTable = DataTables("库存表") \'指定数据接收表 \'将筛选出总分排名大于ComboBox1而小于ComboBox2的人员填入到表A y.DataCols = "ID,日期,商品名称,代码,规格,数量,单价,金额,客户" \'指定数据接收列 y.ExcludeExistValue = true \'设为True,排除接收表中已经存在的内容. y.Filter = "[A] = true" y.Fill() \'填充数据 Else Dim del As String Dim r As Row = CurrentTable.Current del = "[ID] = \'" & r("ID") & "\' And [日期] = #" & r("日期") & "# And [商品名称] = \'" & r("商品名称") & "\'" del = del & " And [代码] = \'" & r("代码") & "\' And [数量] = " & r("数量") & " And [单价] = " & r("单价") del = del & " And [金额] = " & r("金额") & " And [客户] = \'" & r("客户") & "\'" DataTables("库存表").DeleteFor(del) End If End If |
||||||||
-- 作者:老有所乐 -- 发布时间:2009/4/17 23:39:00 -- 谢谢您八婺先生,基本达到目的。 |
||||||||
-- 作者:yangming -- 发布时间:2009/4/18 9:23:00 -- 学习了,呵呵 |
||||||||
-- 作者:老有所乐 -- 发布时间:2009/4/18 19:40:00 -- 另还有一个功能,就是进货表勾选“A”列复制到库存表时,如果该行与前面某行“商品名称”,“规格”相同时,不复制该行,而只要将该行的数量,金额加到库存表已经有的那行的数量,金额列中即可。不知如何设置,再请高手帮忙。谢谢!! |
||||||||
-- 作者:八婺 -- 发布时间:2009/4/18 20:18:00 -- 在库存表的DataColChanged事件中设置统计代码吧,这样设计更合理一点。 |
||||||||
-- 作者:老有所乐 -- 发布时间:2009/4/18 22:25:00 -- 以下是引用八婺在2009-4-18 20:18:00的发言:
在库存表的DataColChanged事件中设置统计代码吧,这样设计更合理一点。 如果要生成统计表,还不如用按钮?能否详细指点一下,或帮设计一个代码。谢谢! |
||||||||
-- 作者:八婺 -- 发布时间:2009/4/18 23:49:00 -- 搞得有点晕,请将进货表的数量列改成数值型。 If e.DataCol.Name = "A" Then Dim Str As String Dim r As Row = CurrentTable.Current Dim dr,dr1 As DataRow Dim sum1,sum2 As Double Str = "[商品名称] = \'" & r("商品名称") & "\' And [规格] = \'" & r("规格") & "\'" dr = DataTables("库存表").Find(Str) sum1 = Tables("进货表").Compute("Sum(数量)", Str) sum2 = Tables("进货表").Compute("Sum(金额)", Str) If e.NewValue = True Then dim y As New Filler y.SourceTable = DataTables("进货表") y.SourceCols = "ID,日期,商品名称,代码,规格,数量,单价,金额,客户" y.DataTable = DataTables("库存表") y.DataCols = "ID,日期,商品名称,代码,规格,数量,单价,金额,客户" y.ExcludeExistValue = true y.Filter = "[A] = true" y.Fill() if dr IsNot Nothing Then dr("数量") = sum1 dr("金额") = sum2 End If Else dr1 = DataTables("进货表").Find(Str & " And [A] = true") if dr1 Is Nothing Then DataTables("库存表").DeleteFor(Str) End If End If End If |