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


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

主题:这个代码应如何改

帅哥哟,离线,有人找我吗?
八婺
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

 回到顶部
帅哥哟,离线,有人找我吗?
八婺
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

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


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

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

 回到顶部
帅哥哟,离线,有人找我吗?
八婺
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

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


加好友 发短信
等级:童狐 帖子:252 积分:1355 威望:0 精华:0 注册:2009/4/5 13:06:00
  发帖心情 Post By:2009/4/21 1:05:00 [显示全部帖子]

'要求在"进货表"勾选[A]列某行,就能将该行复制到"库存表"中,如果"商品名称"和"规格"有重复的行,将该行的[数量][金额]加到第一行.
If e.DataCol.Name = "A"  Then '如果变化的是[A]列
    Dim Str As String '定义一个字符变量
    Dim r As Row = CurrentTable.Current
    Dim dr,dr1 As DataRow '定义两个变量
    Str = "[商品名称] = '" & r("商品名称") & "' And [规格] = '" & r("规格") & "'"  '变量Str等于"商品名称"和"规格"
    dr = DataTables("库存表").Find(Str) '在库存表中查找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("数量") = Tables("进货表").Compute("Sum(数量)", Str & " And [A] = true")  '如果找到,则对"数量"进行统计
            dr("金额") = Tables("进货表").Compute("Sum(金额)", Str & " And [A] = true")   '如果找到,则对"金额"进行统计
        End If
    Else
        dr1 = DataTables("进货表").Find(Str & " And [A] = true")
        if dr1 Is Nothing Then '如果Dr1等于空时(也就是去掉[A]列的勾选),则执行下面语句删除已复制的行
            DataTables("库存表").DeleteFor(Str)
        Else
            dr("数量") = Tables("进货表").Compute("Sum(数量)", Str & " And [A] = true")
            dr("金额") = Tables("进货表").Compute("Sum(金额)", Str & " And [A] = true")
        End If
    End If
End If '

 回到顶部