以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助] 优化代码 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=66260) |
|
-- 作者:wangyinming -- 发布时间:2015/4/2 9:37:00 -- [求助] 优化代码 每天汇总数据,但是到月底的时候数据多了以后,系统就有点慢了,请问如何可以优化一下代码? 还有以下代码不能实现多个文件合并,代码看看是不是错了? 代码如下: Dim pr As Integer = DataTables("加硫").DataRows.Count \'查询表行数 Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog dlg.Filter= "excel文件|*.xls" \'设置筛选器 dlg.MultiSelect = True \'允许选择多个文件 If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 Dim mg As New Merger For Each fl As String In dlg.FileNames mg.SourcePath =dlg.FileName \'指定数据文件 mg.Format = "excel" \'指定格式 mg.SourceTableName = "data$" \'指定要合并的表 mg.DataTableName = "加硫" \'指定接收数据的表 mg.Merge() \'开始合并 Next Dim i As Integer For i = DataTables("加硫").DataRows.Count-1 To 0 Step -1 Dim dr As DataRow = DataTables("加硫").DataRows(i) Dim dr2 As DataRow = DataTables("加硫").Find("管理号码=\'" & dr("管理号码") & "\' and 良品=\'" & dr("良品") & "\'and 管理号码1=\'" & dr("管理号码1") & "\'and 工号=\'" & dr("工号") & "\' and _Identify <> " & dr("_Identify")) If dr2 IsNot Nothing Then dr2.Delete End If Next \'去重复值 DataTables("加硫").DeleteFor("[管理号码] is null or [良品] is null") \'删除空白行 pr = DataTables("加硫").DataRows.Count - pr \'查询表行数 MessageBox.Show("成功导入数据"& pr &"条","提示") Syscmd.Table.ToggleSortAndFilter() DataTables("加硫").Save() End If |
|
-- 作者:Bin -- 发布时间:2015/4/2 10:21:00 -- 合并文件,可以把文件名写为同一个即可 |
|
-- 作者:wangyinming -- 发布时间:2015/4/2 10:24:00 -- 怎么理解这句话,是把要导入的文件名写成一样吗? |
|
-- 作者:Bin -- 发布时间:2015/4/2 10:25:00 -- 我好像搞错了你的意思,你的意思是什么? |
|
-- 作者:有点甜 -- 发布时间:2015/4/2 10:33:00 -- 1、数据多,你这样删除重复值,肯定会慢;
2、不能实现多个文件
mg.SourcePath =dlg.FileName \'指定数据文件
改成
mg.SourcePath = fl \'指定数据文件 |
|
-- 作者:wangyinming -- 发布时间:2015/4/2 10:36:00 -- 谢谢你回复! 1.希望可以合并多个EXCEl文件,但是我现在的代码不可以。 2.现在的代码,数据多了以后,系统变得很慢,因为要逐行匹配重复的数据。希望可以优化一下代码
|
|
-- 作者:wangyinming -- 发布时间:2015/4/2 10:40:00 --
|
|
-- 作者:有点甜 -- 发布时间:2015/4/2 10:44:00 -- 试试用下面的方法。
Dim str As String = "第一列,第二列" For Each a As String In ary DataTables("表A").DeleteFor("_Identify not in (" & idx.trim(",") & ")") [此贴子已经被作者于2015/4/2 10:45:36编辑过]
|
|
-- 作者:wangyinming -- 发布时间:2015/4/2 10:57:00 -- 可以把代码的大概意思告诉我。或注解一下代码,谢谢 |
|
-- 作者:有点甜 -- 发布时间:2015/4/2 11:17:00 -- 意思是:按顺序取出表数据;判断此行和上一行是否为相同的内容,如果是,不操作,如果不是,就加入到idx里面去;最后根据idx删除那些相同的内容 |