Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共14 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:这个代码应如何改

1楼
老有所乐 发表于:2009/4/17 21:42:00
要求在“进销表”中勾选某行的“A”列,就可将该行的记录复制到“库存表”,去除该行“A”列的勾选,可将已经复制到“库存表”的该行删除。自己做了一个代码,但不能达到目的,请老师指点,谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:进销存1.table

修改后的附件
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:进销存.table

[此贴子已经被作者于2009-4-21 0:04:03编辑过]
2楼
八婺 发表于: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
3楼
老有所乐 发表于:2009/4/17 22:38:00
八婺先生,勾选复制可以,但去掉勾选不能删除已复制的那行。
4楼
八婺 发表于: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
5楼
老有所乐 发表于:2009/4/17 23:39:00
谢谢您八婺先生,基本达到目的。
6楼
yangming 发表于:2009/4/18 9:23:00
学习了,呵呵
7楼
老有所乐 发表于:2009/4/18 19:40:00

另还有一个功能,就是进货表勾选“A”列复制到库存表时,如果该行与前面某行“商品名称”,“规格”相同时,不复制该行,而只要将该行的数量,金额加到库存表已经有的那行的数量,金额列中即可。不知如何设置,再请高手帮忙。谢谢!!

8楼
八婺 发表于:2009/4/18 20:18:00
在库存表的DataColChanged事件中设置统计代码吧,这样设计更合理一点。
9楼
老有所乐 发表于:2009/4/18 22:25:00
以下是引用八婺在2009-4-18 20:18:00的发言:
在库存表的DataColChanged事件中设置统计代码吧,这样设计更合理一点。

如果要生成统计表,还不如用按钮?能否详细指点一下,或帮设计一个代码。谢谢!

10楼
八婺 发表于: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
共14 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02344 s, 3 queries.