以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]做导入时如何不重复导入  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=38730)

--  作者:sky
--  发布时间:2013/8/5 16:44:00
--  [求助]做导入时如何不重复导入
做导入时如何不重复导入
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb


--  作者:狐狸爸爸
--  发布时间:2013/8/5 16:52:00
--  

我问一下,相同产品,是根据什么来判断,型号规格相同,就是相同产品? 还是根据物料编号?

[此贴子已经被作者于2013-8-5 16:52:52编辑过]

--  作者:Bin
--  发布时间:2013/8/5 16:53:00
--  
增加行的时候 先利用datatables("XX").FInd 查找一下是否有相同的行 没有再增加


--  作者:狐狸爸爸
--  发布时间:2013/8/5 17:00:00
--  

例如根据物料编号判断,您可以在命令窗口执行:

 

 

For Each dr1 As DataRow In DataTables("报价单明细").DataRows
    Dim dr2 As DataRow
    dr2 = DataTables("报价汇总表").find("客户代号 = \'" & dr1("客户代号") & "\' And 物料编号 = \'" & dr1("物料编号")  & "\'")
    If dr2 IsNot Nothing  Then
        If MessageBox.Show(dr1("客户代号") & "已经有" & dr1("物料编号") & "的报价,是否覆盖?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.No Then
            Continue For
        End If
    Else
        dr2 = DataTables("报价汇总表").AddNew()
    End If
    For Each dc As DataCol In DataTables("报价单明细").DataCols
        If DataTables("报价汇总表").DataCols.Contains(dc.name) Then
            dr2(dc.name) = dr1(dc.name)
        End If
    Next
Next


--  作者:sky
--  发布时间:2013/8/5 17:11:00
--  
以下是引用狐狸爸爸在2013-8-5 16:52:00的发言:

我问一下,相同产品,是根据什么来判断,型号规格相同,就是相同产品? 还是根据物料编号?

[此贴子已经被作者于2013-8-5 16:52:52编辑过]

一物一码原则,应该是根据物料编号。


--  作者:Bin
--  发布时间:2013/8/5 17:13:00
--  
以下是引用sky在2013-8-5 17:11:00的发言:

一物一码原则,应该是根据物料编号。

那么你利用 
DataTables("报价汇总表").find("物料编号 = \'" & dr1("物料编号") & "\'")
然后判断
If dr2 IsNot Nothing  Then 找到的行是否为空 即可达到你的目的

--  作者:sky
--  发布时间:2013/8/6 8:49:00
--  
以下是引用狐狸爸爸在2013-8-5 17:00:00的发言:

例如根据物料编号判断,您可以在命令窗口执行:

 

 

For Each dr1 As DataRow In DataTables("报价单明细").DataRows
    Dim dr2 As DataRow
    dr2 = DataTables("报价汇总表").find("客户代号 = \'" & dr1("客户代号") & "\' And 物料编号 = \'" & dr1("物料编号")  & "\'")
    If dr2 IsNot Nothing  Then
        If MessageBox.Show(dr1("客户代号") & "已经有" & dr1("物料编号") & "的报价,是否覆盖?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.No Then
            Continue For
        End If
    Else
        dr2 = DataTables("报价汇总表").AddNew()
    End If
    For Each dc As DataCol In DataTables("报价单明细").DataCols
        If DataTables("报价汇总表").DataCols.Contains(dc.name) Then
            dr2(dc.name) = dr1(dc.name)
        End If
    Next
Next

感谢狐爸解疑,问题解决。我改成逐单并非整表导入了。


--  作者:sky
--  发布时间:2013/8/6 8:51:00
--  
以下是引用Bin在2013-8-5 17:13:00的发言:

那么你利用 
DataTables("报价汇总表").find("物料编号 = \'" & dr1("物料编号") & "\'")
然后判断
If dr2 IsNot Nothing  Then 找到的行是否为空 即可达到你的目的

问题解决。谢谢!