以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]条件替换,合并时变相排重  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=71565)

--  作者:script
--  发布时间:2015/7/14 9:20:00
--  [求助]条件替换,合并时变相排重
设“表A”有 A列,B列,C列,D列,E列,F列
现在想实现在合并的时候,若F列重复,则替换表内所有列的值
求老师指导

--  作者:大红袍
--  发布时间:2015/7/14 9:24:00
--  

  参考  http://www.foxtable.com/help/topics/2334.htm

 


--  作者:script
--  发布时间:2015/7/14 9:56:00
--  
Dim Book As New XLS.Book
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("URL表").StopRedraw()
Dim nms() As String = {"客户端二级栏目","客户端三级栏目","信息分类","地区","部门","类型","状态","网站名","内容标注","栏目标注","栏目名","网址"}
For n As Integer = 1 To Sheet.Rows.Count -1 
    Dim bh As String = sheet(n,0).Text 
    Dim dr As DataRow = DataTables("URL表").Find("网址 = \'" & bh & "\'") 
    If dr Is Nothing Then \'如果不存在同编号的订单
        dr =  DataTables("URL表").AddNew()
    End If
    For m As Integer = 0 To nms.Length - 1
        dr(nms(m)) = Sheet(n,m).Value
    Next
Next
Tables("URL表").ResumeRedraw()

我这样写的代码 放在表事件beforeadddatarow里的 可是没效果诶..

--  作者:大红袍
--  发布时间:2015/7/14 9:58:00
--  

 不要写到beforeadddatarow事件,你单独弄一个按钮输入代码

 

Dim Book As New XLS.Book("d:\\test.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("URL表").StopRedraw()
Dim nms() As String = {"客户端二级栏目","客户端三级栏目","信息分类","地区","部门","类型","状态","网站名","内容标注","栏目标注","栏目名","网址"}
For n As Integer = 1 To Sheet.Rows.Count -1
    Dim bh As String = sheet(n,0).Text
    Dim dr As DataRow = DataTables("URL表").Find("网址 = \'" & bh & "\'")
    If dr Is Nothing Then \'如果不存在同编号的订单
        dr =  DataTables("URL表").AddNew()
    End If
    For m As Integer = 0 To nms.Length - 1
        dr(nms(m)) = Sheet(n,m).Value
    Next
Next
Tables("URL表").ResumeRedraw()


--  作者:大红袍
--  发布时间:2015/7/14 10:02:00
--  

 或者去写datacolchanged事件

 

If e.DataCol.Name = "网址" Then
   
    Dim fdr As DataRow = DataTables("URL表").Find("网址 = \'" & e.newValue & "\'")
   
    If fdr IsNot Nothing Then \'如果不存在同编号的订单
        Dim nms() As String = {"客户端二级栏目","客户端三级栏目","信息分类","地区","部门","类型","状态","网站名","内容标注","栏目标注","栏目名","网址"}
        For m As Integer = 0 To nms.Length - 1
            fdr(nms(m)) = e.DataRow(nms(m))
        Next
        e.DataRow.Delete
    End If
   
End If

 


--  作者:script
--  发布时间:2015/7/14 10:07:00
--  
额 这样就有个问题 这个代码只能制定某一个.xls文件合并,我是想点击按钮后选择文件合并
这个怎么解额...

--  作者:大红袍
--  发布时间:2015/7/14 10:08:00
--  

 这个简单,参考

 

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

 


--  作者:script
--  发布时间:2015/7/14 10:46:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目3_201507141043.zip

为什么会出错呢...而且导入还是会把重复的导进来额.
[此贴子已经被作者于2015/7/14 10:47:34编辑过]

--  作者:大红袍
--  发布时间:2015/7/14 10:53:00
--  

你要注意bh为空值的情况要怎么处理

 

Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls|Word文件|*.doc|Access文件|*.mdb" \'设置筛选器
If dlg.ShowDialog = DialogResult.OK Then
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Tables("URL表").StopRedraw()
    Dim nms() As String = {"客户端二级栏目","客户端三级级栏目","信息分类","地区","部门","类型","状态","网站名","内容标注","栏目标注","栏目名","网址"}
    For n As Integer = 1 To Sheet.Rows.Count -1
        Dim bh As String = sheet(n,11).Text
        Dim dr As DataRow = DataTables("URL表").Find("网址 = \'" & bh & "\'")
        If dr Is Nothing Then
            dr =  DataTables("URL表").AddNew()
        End If
        For m As Integer = 0 To nms.Length - 1
            dr(nms(m)) = Sheet(n,m).Value
        Next
    Next
    Tables("URL表").ResumeRedraw()
end if


--  作者:script
--  发布时间:2015/7/14 11:07:00
--  
啊...没注意  谢谢老师了