Foxtable(狐表)用户栏目专家坐堂 → 请老师帮忙看一下,有没有再优化的空间


  共有1503人关注过本帖树形打印复制链接

主题:请老师帮忙看一下,有没有再优化的空间

帅哥哟,离线,有人找我吗?
xxfoxtable
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1700 积分:15920 威望:0 精华:0 注册:2017/6/1 23:12:00
请老师帮忙看一下,有没有再优化的空间  发帖心情 Post By: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("完成")

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/12 14:47:00 [只看该作者]

其中sqlFind,尽量改成find,不要用后台查询,效率低。


 回到顶部
帅哥哟,离线,有人找我吗?
xxfoxtable
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1700 积分:15920 威望:0 精华:0 注册:2017/6/1 23:12:00
  发帖心情 Post By:2018/1/12 14:57:00 [只看该作者]

不用sqlfind,如果别的地方有筛选,回到这里查询会不会造成数据不全,只是被筛选的数据里进行查询,会是这样吗?


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/12 15:11:00 [只看该作者]

以下是引用xxfoxtable在2018/1/12 14:57:00的发言:

不用sqlfind,如果别的地方有筛选,回到这里查询会不会造成数据不全,只是被筛选的数据里进行查询,会是这样吗?

 

筛选不会影响find的查询。只有你重新加载表数据,才会影响find。

 

你也可以在最前面重新加载表数据,那直接用find即可。


 回到顶部