以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于多表内容同步的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=128187)

--  作者:mao8mao9983
--  发布时间:2018/11/30 16:01:00
--  关于多表内容同步的问题
老师,您好,我这有个项目,有“设计部出图”和商品信息总表两个表格,要求当在设计部出图表中更增加、删除或更改内容后,商品信息总表中的内容能事实更改,且商品信息总表中的内容是设计部出图表中内容的唯一值(内容值不能多也不能少),我写了一段代码,当代码中用到Find的时候,软件运行是能满足我的要求的,但是将代码中的Find换成SQLFind时,商品信息总表中的内容就不是我想要的了,您帮我看看要
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1 - 副本.foxdb

怎么改可以吗?谢谢了,具体代码请看附件。

--  作者:有点甜
--  发布时间:2018/11/30 16:47:00
--  

 

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

 


--  作者:mao8mao9983
--  发布时间:2018/11/30 17:33:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:4.png
图片点击可在新窗口打开查看,老师,我在“设计部出图”表中修改了第三行第二列,以及复制粘贴了第7、8、9行,结果“商品信息总表”中的数据出现了重复值了,而且DM-H14从动轴1SUS304这个值被删除了,您再帮我看看吧,这个目标还是有点费脑细胞的。
--  作者:mao8mao9983
--  发布时间:2018/11/30 17:33:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:5.png
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2018/11/30 18:40:00
--  

代码没问题,删除全部表格数据重新测试。

 

 


--  作者:mao8mao9983
--  发布时间:2018/11/30 21:05:00
--  


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

还是不行哦,如图,我在“设计部出图”表中复制粘贴了第6行,然后“商品信息总表”中自动增加了第6行,这一行与第3行重复了,我是希望“商品信息总表”中的数据是“设计部出图”表中的数据的唯一值,老师,再帮我看看吧,谢谢了!


--  作者:有点蓝
--  发布时间:2018/11/30 22:09:00
--  
请重新上传有问题的实例
--  作者:mao8mao9983
--  发布时间:2018/11/30 22:44:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1 - 副本.foxdb

实例就是之前您发给我的,我没改,我看了一下,怀疑是Delete语句没起到作用
--  作者:有点蓝
--  发布时间:2018/11/30 23:36:00
--  
Dim tuhao As String=e.DataRow("图号")
Dim mingcheng As String=e.DataRow("名称")
Dim caizhi As String= e.DataRow("材质")
Dim chuli As String= e.DataRow("处理")
Dim chuku As Integer=0

If tuhao="" Then
    tuhao="V"
End If
If mingcheng="" Then
    mingcheng="V"
End If
If caizhi="" Then
    caizhi="V"
End If
If chuli="" Then
    chuli="V"
End If

e.DataRow("零件全称")=tuhao & mingcheng & caizhi & chuli

Select Case e.DataCol.name
    Case "零件全称"
        Dim dr As DataRow
        Dim cnt As Integer = e.DataTable.SQLCompute("count(零件全称)","零件全称 = \'" & e.OldValue & "\'")
        If cnt <= 1 Then
            dr = DataTables("商品信息总表").sqlFind("零件全称 = \'" & e.OldValue & "\'")
            If dr IsNot Nothing Then
                \'在 商品信息总表 中 找到了 零件全称 的 旧值
                dr.Delete() \'将 商品信息总表 中的 旧值删除
                dr.Save
            End If
            
        End If
        dr = DataTables("商品信息总表").sqlFind("零件全称 = \'" & e.NewValue & "\'")
        If dr Is Nothing Then
            \'在 商品信息总表 中 没找到 零件全称 的 新值,则创建新的行,将 设计部出图 中的信息写入 商品信息总表 中
            dr = DataTables("商品信息总表").AddNew()
        End If
        dr("图号") = e.DataRow("图号")
        dr("名称") = e.DataRow("名称")
        dr("材质") = e.DataRow("材质")
        dr("处理") = e.DataRow("处理")
        dr("零件全称") = e.NewValue
        dr.save
        e.DataRow.save
End Select

--  作者:mao8mao9983
--  发布时间:2018/12/1 9:48:00
--  
这下可以了,非常感谢