以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 请老师帮忙看一下,有没有再优化的空间 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=113277) |
-- 作者:xxfoxtable -- 发布时间:2018/1/12 13:41:00 -- 请老师帮忙看一下,有没有再优化的空间 客户嫌速度慢,看看有没有再优化的空间? DataTables("搜索匹配临时").LoadFilter="" DataTables("搜索匹配临时").load DataTables("搜索匹配临时").DeleteFor("") DataTables("搜索匹配临时").save DataTables("搜索匹配").LoadFilter="" DataTables("搜索匹配").load DataTables("搜索匹配").DeleteFor("") DataTables("搜索匹配").save Dim dlg As new OpenFileDialog dlg.Filter = "Excel文件|*.xls" Dim fl As String If dlg.ShowDialog = DialogResult.OK Then fl = dlg.FileName Vars("name")= dlg.FileName Dim dic As Dictionary(Of String ,String) Dim book As new XLS.Book(fl) Dim sheet As XLS.Sheet = book.Sheets("sheet1") If sheet(0,1).Value<>"品名" Then msgbox("第一列品名不匹配") Return End If If sheet(0,2).Value<>"封装" Then msgbox("第二列封装不匹配") Return End If DataTables("搜索匹配").StopRedraw() Dim nms() As String = {"品名","封装"} For n As Integer = 1 To Sheet.Rows.Count -1 Dim dr As DataRow = DataTables("搜索匹配").AddNew() dr("品名") = Sheet(n,1).Value.trim() dr("封装") = Sheet(n,2).Value.trim() Next DataTables("搜索匹配").DeleteFor("品名 is null") DataTables("搜索匹配").Save Tables("搜索匹配").ResumeRedraw() Else Return End If Tables("搜索匹配临时").StopRedraw Dim js As Integer=1 If Tables("搜索匹配").rows.count <>0 For Each r As DataRow In Tables("搜索匹配").DataTable.Select("品名 is not null") Dim filter As String = "" If r.IsNull("封装") Then filter = "品名 =\'" & r("品名") &"\'and 封装 Is null " Else filter = "品名 =\'" & r("品名") &"\'and 封装=\'" & r("封装") &"\'" End If Dim fdr As DataRow = DataTables("销售").sqlfind(filter) If fdr IsNot Nothing Then Dim lsxs As Row=Tables("搜索匹配临时").AddNew lsxs("品名")=fdr("品名") lsxs("封装")=fdr("封装") lsxs("单价")=fdr("单价") lsxs("数量")=fdr("数量") lsxs("金额")=fdr("金额") lsxs("区域")=fdr("区域") lsxs("电话")=fdr("电话") lsxs("仓库")=fdr("仓库") lsxs("备注")=fdr("备注") lsxs("编号")=js End If Dim txt As String=r("品名") txt="\'%" & txt.Replace("*", "[*]").Replace("\'", "\'\'").Replace("%", "[%]") & "%\'" For Each dr As DataRow In DataTables("销售").Select("品名 like " & txt & "") If dr("品名")=r("品名") And dr("封装")=r("封装") Then Else Dim xsxs As DataRow = dr Dim lsxs As Row=Tables("搜索匹配临时").AddNew lsxs("品名")=xsxs("品名") lsxs("封装")=xsxs("封装") lsxs("单价")=xsxs("单价") lsxs("数量")=xsxs("数量") lsxs("金额")=xsxs("金额") lsxs("区域")=xsxs("区域") lsxs("电话")=xsxs("电话") lsxs("仓库")=xsxs("仓库") lsxs("备注")=xsxs("备注") lsxs("编号")=js End If Next js=js+1 Next End If DataTables("搜索匹配临时").Save Tables("搜索匹配临时").ResumeRedraw Tables("搜索匹配临时").Refresh msgbox("完成") |
-- 作者:有点甜 -- 发布时间:2018/1/12 14:45:00 -- DataTables("搜索匹配临时").LoadFilter=""
DataTables("搜索匹配临时").load
DataTables("搜索匹配临时").DeleteFor("")
DataTables("搜索匹配临时").save
DataTables("搜索匹配").LoadFilter=""
DataTables("搜索匹配").load
DataTables("搜索匹配").DeleteFor("")
DataTables("搜索匹配").save
改成
DataTables("搜索匹配临时").datarows.clear
DataTables("搜索匹配").datarows.clear
[此贴子已经被作者于2018/1/12 14:46:09编辑过]
|
-- 作者:有点甜 -- 发布时间:2018/1/12 14:47:00 -- 其中sqlFind,尽量改成find,不要用后台查询,效率低。 |
-- 作者:xxfoxtable -- 发布时间:2018/1/12 14:57:00 -- 不用sqlfind,如果别的地方有筛选,回到这里查询会不会造成数据不全,只是被筛选的数据里进行查询,会是这样吗? |
-- 作者:有点甜 -- 发布时间:2018/1/12 15:11:00 -- 以下是引用xxfoxtable在2018/1/12 14:57:00的发言:
不用sqlfind,如果别的地方有筛选,回到这里查询会不会造成数据不全,只是被筛选的数据里进行查询,会是这样吗?
筛选不会影响find的查询。只有你重新加载表数据,才会影响find。
你也可以在最前面重新加载表数据,那直接用find即可。 |