Foxtable(狐表)用户栏目专家坐堂 → 表的问题


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

主题:表的问题

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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
表的问题  发帖心情 Post By:2015/1/10 14:46:00 [显示全部帖子]

如图:
图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看
图中是合同明细,如李文娟在1月8号与甲公司签了两笔合同,对应的合同号不同,“金额”通过数量*单价计算得出,1月8号与乙公司签了合同,也有对应的合同号,此合同号是自动编号,依据日期和公司不同编制。
目的:在合同明细中每增加一个新的合同号,在下图应收账款表中能自动添加一行,作一笔应收账款,将合同明细表中每个合同号对应的“合同号”,“金额”,“客户名称”分别作为应收账款表的“单据号”,“借方“,“客户”记录下来
图片点击可在新窗口打开查看此主题相关图片如下:无标题1.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2015/1/10 14:47:00 [显示全部帖子]

参考帮助中的下列代码,没成功

If e.DataCol.Name = "型号" Then '如果内容发生变动的是品名列

    If e.NewValue Is Nothing Then '如果新值是空白,也就是品名列的内容为空

        e.DataRow("成本") = Nothing '那么清空此行单价列的内容

    Else

        Dim dr As DataRow

        '否则在产品表查找同名的产品行,将找到的行赋值给变量dr

        dr = DataTables("采购明细").SQLFind("[型号] = '" & e.NewValue & "'")

        If dr IsNot Nothing Then '如果找到了同名的产品行,也就是dr不是Nothing

            e.DataRow("成本") = dr("单价")

        End If

    End If

End If

 

. 如果列名不同,或者只需复制部分列,可以参考下面的代码:

If e.DataCol.Name = "逻辑列名" AndAlso e.DataRow("逻辑列名") = True Then
    Dim nma() As String = {"A1","A2","A3","A4"} 'A
表数据来源列
   
Dim nmb() As String = {"B1","B2","B3","B4"} 'B表数据接收列
   
Dim dr As DataRow = DataTables("B").AddNew
    For i As Integer = 0 To nma.Length - 1
        dr(nmb(i)) = e.DataRow(nma(i))
    Next
End
If

 


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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2015/1/10 14:52:00 [显示全部帖子]

图片点击可以放大

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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2015/1/10 14:53:00 [显示全部帖子]

我的是外部表,要后台找

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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2015/1/10 14:58:00 [显示全部帖子]

上述代码仅是帮助中可能与此项操作有关的大概能用到的代码,复制部分列我可以搞定,难在要后台统计每个合同号的金额,好像要用到类似Dim Sum1 As Double = Tables("订单").Compute("Sum(数量)", "产品 = 'PD01'")

Dim Sum2 As Double = DataTables("订单").Compute("Sum(数量)", "产品 = 'PD01'")这样的计算。


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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2015/1/10 15:14:00 [显示全部帖子]

If e.DataCol.Name = "合同号"   Then
    Dim nma() As String = {"合同号","客户","金额"} 'A
表数据来源列
   
Dim nmb() As String = {"单据号","客户","借方"} 'B表数据接收列
   
Dim dr As DataRow = DataTables("应收账款").AddNew
    For i As Integer = 0 To nma.Length - 1
        dr(nmb(i)) = e.DataRow(nma(i))
    Next
End
If


上述代码中第二行的“金额”应该是统计每个合同号的金额,就是这个“金额”应如何写代码不知道


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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2015/1/10 15:31:00 [显示全部帖子]

怎么发不了东西了
图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2015/1/10 15:47:00 [显示全部帖子]

如果这样做,感觉机子会比较慢,效率有点低

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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2015/1/10 18:25:00 [显示全部帖子]


If e.DataCol.Name = "合同号" AndAlso e.DataRow("合同号") IsNot Nothing Then  '如果列名是合同号且合同号非空,即发现新增合同
    Dim cz As DataRow  '在应收帐表中查找与所选合同号一致的行
    cz= DataTables("应收账").SQLFind("[合同号] = '" & e.DataRow("合同号") & "'")
    If cz Is Nothing '没找到就登帐
        Dim nma() As String = {"合同号","负责人","客户"} '合同数据来源列
        Dim nmb() As String = {"单据号","负责人","客户"} '应收账表数据接收列
        Dim t As Integer = DataTables("合同明细").Compute("sum(数量*单价)","合同号='" & e.NewValue & " ' ") 
        Dim dr As DataRow = DataTables("应收账").AddNew
        For i As Integer = 0 To nma.Length - 1
            dr(nmb(i)) = e.DataRow(nma(i))
            dr("金额")= t
        Next
    Else  '否则提出警告并返回
        MessageBox.Show("此合同已登帐!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Return
    End If
End If
代码执行没反应  DATACOLCHANGERED   
请解释

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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2015/1/10 18:40:00 [显示全部帖子]

If e.DataCol.Name = "合同号" AndAlso e.DataRow("合同号") IsNot Nothing Then  '如果列名是合同号且合同号非空,即发现新增合同
    Dim cz As DataRow  '在应收帐表中查找与所选合同号一致的行
    cz= DataTables("应收帐").SQLFind("[单据号] = '" & e.DataRow("合同号") & "'")
    If cz Is Nothing '没找到就登帐
        Dim nma() As String = {"合同号","负责人","客户"} '合同数据来源列
        Dim nmb() As String = {"单据号","负责人","客户"} '应收账表数据接收列
        Dim t As Integer = DataTables("salecontactor").SQLCompute("sum(数量*销售单价)","合同号='" & e.NewValue & " ' ") 
        Dim dr As DataRow = DataTables("应收帐").AddNew
        For i As Integer = 0 To nma.Length - 1
            dr(nmb(i)) = e.DataRow(nma(i))
            dr("借方")= t
        Next
    Else  '否则提出警告并返回
        MessageBox.Show("此合同已登帐!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Return
    End If
End If

执行中,仅负责人和合同号复制了,金额没有,请指教下,在等

 回到顶部
总数 13 1 2 下一页