Foxtable(狐表)用户栏目专家坐堂 → 这个代码应如何改


  共有21205人关注过本帖树形打印复制链接

主题:这个代码应如何改

帅哥哟,离线,有人找我吗?
老有所乐
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:746 积分:6673 威望:0 精华:1 注册:2008/9/1 11:46:00
这个代码应如何改  发帖心情 Post By:2009/4/17 21:42:00 [只看该作者]

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

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

[此贴子已经被作者于2009-4-21 0:04:03编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
八婺
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:252 积分:1355 威望:0 精华:0 注册:2009/4/5 13:06:00
  发帖心情 Post By: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楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:746 积分:6673 威望:0 精华:1 注册:2008/9/1 11:46:00
  发帖心情 Post By:2009/4/17 22:38:00 [只看该作者]

八婺先生,勾选复制可以,但去掉勾选不能删除已复制的那行。

 回到顶部
帅哥哟,离线,有人找我吗?
八婺
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:252 积分:1355 威望:0 精华:0 注册:2009/4/5 13:06:00
  发帖心情 Post By: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楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:746 积分:6673 威望:0 精华:1 注册:2008/9/1 11:46:00
  发帖心情 Post By:2009/4/17 23:39:00 [只看该作者]

谢谢您八婺先生,基本达到目的。

 回到顶部
美女呀,离线,留言给我吧!
yangming
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/4/18 9:23:00 [只看该作者]

学习了,呵呵

 回到顶部
帅哥哟,离线,有人找我吗?
老有所乐
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:746 积分:6673 威望:0 精华:1 注册:2008/9/1 11:46:00
  发帖心情 Post By:2009/4/18 19:40:00 [只看该作者]

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


 回到顶部
帅哥哟,离线,有人找我吗?
八婺
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:252 积分:1355 威望:0 精华:0 注册:2009/4/5 13:06:00
  发帖心情 Post By:2009/4/18 20:18:00 [只看该作者]

在库存表的DataColChanged事件中设置统计代码吧,这样设计更合理一点。

 回到顶部
帅哥哟,离线,有人找我吗?
老有所乐
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:746 积分:6673 威望:0 精华:1 注册:2008/9/1 11:46:00
  发帖心情 Post By:2009/4/18 22:25:00 [只看该作者]

以下是引用八婺在2009-4-18 20:18:00的发言:
在库存表的DataColChanged事件中设置统计代码吧,这样设计更合理一点。

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


 回到顶部
帅哥哟,离线,有人找我吗?
八婺
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:252 积分:1355 威望:0 精华:0 注册:2009/4/5 13:06:00
  发帖心情 Post By: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 1 2 下一页