以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  实现数据同步  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=14019)

--  作者:7032175
--  发布时间:2011/11/5 10:06:00
--  实现数据同步

我有一个表

1里面的“计划号”是不重复的
2里面“通打计划号”是把不重复的“计划号”合并成一个名称
3“通打数量”是把二个不同“计划号”的合同数量进行相加
4“通打数量”“半成品”“装窑”“成品”是需要人工输上去的

问题:我只想输入一个“通打计划号”里面的数据,但是我想同步和它相同的“通打计划号”里面数据就是当我把“计划号11001”里面输入数据的时候“计划号11002”里面相对应的自动输入 因为它们之间有一个“通打计划号”这个是共同的 

如果不是共同就不需要同步数据


 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


--  作者:7032175
--  发布时间:2011/11/5 15:51:00
--  
请狐狸爸爸有时间帮我解决一下  谢谢您了
--  作者:狐狸爸爸
--  发布时间:2011/11/5 16:32:00
--  

这种问题并不难,但是我建议你修改设计,采用关联的形式。

就是做成两个表,就像订单表和订单明细表一样,一个订单对应有多个订单明细。

表结构的设计,一定要清晰明了,你这种设计很不规范。

 

 

 

 


--  作者:7032175
--  发布时间:2011/11/6 7:44:00
--  

狐狸爸爸 是这样子的   上传的这个表只是一个代表   我有一个真正的表  由于数据与内容的庞大 我以到了15个表的权限 

 

我只想能在一个表上实现这样上的功能 为什么呢 因为我需要的内容只有一个计划号 不会经常出现通打计划号  我只是想在有二个不同计划号的时候  通打计划号的内容无论修改那一内容都会进行同步更新 这次还要在次的麻烦狐狸爸爸让您烦心了   谢谢您了


--  作者:7032175
--  发布时间:2011/11/6 9:00:00
--  

狐狸爸爸  让您烦心了


--  作者:狐狸爸爸
--  发布时间:2011/11/6 9:10:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目12.rar


--  作者:7032175
--  发布时间:2011/11/6 10:42:00
--  

不好意思狐狸爸爸 还要麻烦您一下   真是不好意思  

 

 我是想如果在表中在加一列"材质"是同个材质与同个通打计划号进行通打数量汇总与同步

 

同个通打计划号与不同的材质不需要汇总与同步  

 

 这样怎么能实现 

 

真是不好意思谢谢您了


--  作者:狐狸爸爸
--  发布时间:2011/11/6 22:13:00
--  

只需修改代码,将材质的条件加进去即可:

 

If e.DataRow.Isnull("通打计划号") = False Then
    Select Case e.DataCol.Name
        Case "半成品","成品","装窑"
            For Each dr As DataRow In e.DataTable.Select("通打计划号 = \'"  & e.DataRow("通打计划号") & "\' And 材质 = \'"  & e.DataRow("材质") & "\'")
                dr(e.DataCol.Name) = e.NewValue
            Next
        Case "合同数量"
            Dim v As Integer = e.DataTable.Compute("Sum(合同数量)","通打计划号 = \'"  & e.DataRow("通打计划号") & "\' And 材质 = \'"  & e.DataRow("材质") & "\'")
            For Each dr As DataRow In e.DataTable.Select("通打计划号 = \'"  & e.DataRow("通打计划号") & "\' And 材质 = \'"  & e.DataRow("材质") & "\'")
                dr("通打数量") = v
            Next
        Case "通打计划号","材质"
            e.DataTable.DataCols("半成品").RaiseDataColChanged(e.DataRow)
            e.DataTable.DataCols("成品").RaiseDataColChanged(e.DataRow)
            e.DataTable.DataCols("装窑").RaiseDataColChanged(e.DataRow)
            e.DataTable.DataCols("合同数量").RaiseDataColChanged(e.DataRow)
    End Select
End If

 

[此贴子已经被作者于2011-11-6 22:21:00编辑过]

--  作者:7032175
--  发布时间:2011/12/6 13:09:00
--  
以下是引用狐狸爸爸在2011-11-6 22:13:00的发言:

只需修改代码,将材质的条件加进去即可:

 

If e.DataRow.Isnull("通打计划号") = False Then
    Select Case e.DataCol.Name
        Case "半成品","成品","装窑"
            For Each dr As DataRow In e.DataTable.Select("通打计划号 = \'"  & e.DataRow("通打计划号") & "\' And 材质 = \'"  & e.DataRow("材质") & "\'")
                dr(e.DataCol.Name) = e.NewValue
            Next
        Case "合同数量"
            Dim v As Integer = e.DataTable.Compute("Sum(合同数量)","通打计划号 = \'"  & e.DataRow("通打计划号") & "\' And 材质 = \'"  & e.DataRow("材质") & "\'")
            For Each dr As DataRow In e.DataTable.Select("通打计划号 = \'"  & e.DataRow("通打计划号") & "\' And 材质 = \'"  & e.DataRow("材质") & "\'")
                dr("通打数量") = v
            Next
        Case "通打计划号","材质"
            e.DataTable.DataCols("半成品").RaiseDataColChanged(e.DataRow)
            e.DataTable.DataCols("成品").RaiseDataColChanged(e.DataRow)
            e.DataTable.DataCols("装窑").RaiseDataColChanged(e.DataRow)
            e.DataTable.DataCols("合同数量").RaiseDataColChanged(e.DataRow)
    End Select
End If

 

[此贴子已经被作者于2011-11-6 22:21:00编辑过]

狐狸爸爸这个代码我用了很长时间发现了一个问题 但是不知道如何解决 就是当这个表输入了通打计划号会在半成品、成品、装窑、合同数量里面显示0 ,在什么地方加进代码可以改变输入通打计划号后,不会在半成品、成品、装窑、合同数量里面显示0,而是空。当输入数据的时候在显示能不能实现


--  作者:狐狸爸爸
--  发布时间:2011/12/6 14:14:00
--  

参考:

 

http://www.foxtable.com/help/topics/1471.htm