Foxtable(狐表)用户栏目专家坐堂 → 同步2万多行的表,foxtable就会假死,可否解决?


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

主题:同步2万多行的表,foxtable就会假死,可否解决?

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


加好友 发短信
等级:二尾狐 帖子:532 积分:4020 威望:0 精华:0 注册:2011/6/18 12:41:00
同步2万多行的表,foxtable就会假死,可否解决?  发帖心情 Post By:2012/4/23 15:58:00 [只看该作者]

实际使用foxtable的过程中,打开foxtable的时候加载所有的表所有的数据,大约用时15秒左右。同步一个2万多行的表,foxtable就会假死,打开任务栏看到 foxtable 无响应,一直要等20分钟左右才同步完一个2万多行的表。这是什么原因?可否在一分钟内同步一个10万行左右的表?

 

很奇怪的是 出货单 表用于记录 单位信息,出货日期,出货单号,出货总额等。共1万行左右 。同步该表只需要几秒钟

而出货记录表,记录出货详细信息,主要是 单位编号,产品编号,数量单价总额等,信息不会比出货单多得很离谱,就2万行左右。最多就是出货单表的2-4倍。可是一同步出货记录表,foxtable就假死。不知道什么原因。

[此贴子已经被作者于2012-4-23 16:02:23编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/4/23 16:03:00 [只看该作者]

同样的工具,不同的代码,效率相差何止百倍千倍。

我打开一个2万行的表,单击菜单中的“同步当前表”,用时不过几秒而已。

 


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


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40550 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2012/4/23 16:04:00 [只看该作者]

1、估计是执行的事件太多吧?或者您将某些代码放在了不该放的地方!

2、最好不要同步整表,打开时也不必要全部加载所有表,随着操作进度逐步加载和同步,也许是最佳的选择!

(具体要看文件)


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


加好友 发短信
等级:二尾狐 帖子:532 积分:4020 威望:0 精华:0 注册:2011/6/18 12:41:00
  发帖心情 Post By:2012/4/23 16:09:00 [只看该作者]

是的 我也是这样想的。

可是我看到一个很好的例子(商家宝进销存)竟然没人能指导一下作者怎么做出来的。

具体看我的帖子

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=18394&replyID=&skin=1

[此贴子已经被作者于2012-4-23 16:17:35编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/4/23 16:19:00 [只看该作者]

其实帮助就是最好的指导老师,几乎包括所有的技能。

 


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


加好友 发短信
等级:二尾狐 帖子:532 积分:4020 威望:0 精华:0 注册:2011/6/18 12:41:00
  发帖心情 Post By:2012/4/23 16:31:00 [只看该作者]

出货记录表的代码 同步2万行,假死。

 

 

chuhuo_StartEdit

 

If e.Col.Name = "chanpinid" Then

    e.Cancel = True

    Forms("销售选产品").Open()

End If

 

chuhuo_DataColChanged

 

Select Case e.DataCol.Name

   

Case "shuliang","danjia"

    Dim dr As DataRow=e.DataRow

    dr("zonger") =dr("shuliang")*dr("danjia")

    dr("fuzhu")=dr("shuliang")*guanxi4/guanxi3

   

     Case "fuzhu"

    Dim dr As DataRow=e.DataRow

    dr("shuliang")=dr("fuzhu")/guanxi4*guanxi3  

 

Case "chanpinid" '发生变化的列

   

    Dim dr As DataRow

    Dim Filter As String

    Filter = "[chanpinid] = '" & e.DataRow("chanpinid") & "' And [kehuid] = '" & e.DataRow("kehuid") & "' and [danjia]> 0"

    dr = DataTables("chuhuo").Find(Filter & "and [_Identify] < " & e.DataRow("_Identify"),"chuhuodate desc") '

    If dr IsNot Nothing Then '如果找到

        '将找到的内容填入到正在输入的行中.

        e.DataRow("danjia") = dr("danjia")

    Else

        e.DataRow("danjia")=0

    End If

   

 

Case "hongchong"  '复制数据到库存流水

    Dim dr As DataRow=e.DataRow

    If e.DataRow("hongchong") = True

  

Dim nma() As String = {"chuhuodate","chanpinid","shuliang","chuhuodan"} 'A表数据来源列

    Dim nmb() As String = {"rdate","chanpinid","shuliang","bianhao"} 'B表数据接收列

    Dim drs As DataRow = DataTables("kucun").AddNew

    For i As Integer = 0 To nma.Length - 1

        drs(nmb(i)) = e.DataRow(nma(i))

    Next

    drs("beizhu") = "销售红冲"

  

Else If e.DataRow("hongchong")= False And e.DataRow("shuliang")>0

 

  Dim nma() As String = {"chuhuodate","chanpinid","shuliang","chuhuodan"} 'A表数据来源列

    Dim nmb() As String = {"rdate","chanpinid","shuliang","bianhao"} 'B表数据接收列

    Dim drs As DataRow = DataTables("kucun").AddNew

    For i As Integer = 0 To nma.Length - 1

        drs(nmb(i)) = e.DataRow(nma(i))

    Next

    drs("beizhu") = "销售反红冲"

    drs("shuliang") = -drs("shuliang")

   

End If

DataTables("kucun").save

 

 

End Select

 

 

 

chuhuo_DrawCell

 

If e.Row("hongchong") = True Then

    e.Style = "红冲"

End If

 

 

 

 

出货单表 1万行 同步该表 大概几秒钟

代码如下

 

 

chuhuodan_StartEdit

 

If e.Col.Name = "chuhuodan" Then

    e.Cancel = True

    Forms("查看出货单").Open()

End If

 

If e.col.name="hongchong" AndAlso e.Row("shoukuan")>0 Then

messagebox.show("已收款账单不能红冲!","提示",messageboxbuttons.ok,messageboxicon.Information)

e.cancel=True

End If

 

If e.Col.Name = "hongchong" AndAlso e.Row("hongchong") = True AndAlso user.name<>"开发者" Then

MessageBox.Show("不能反红冲!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)

e.Cancel= True

 

End If

 

 

 

chuhuodan_DataColChanged

 

'Select Case e.DataCol.Name

    'Case "chuhuodate"

        'Dim dr As DataRow = e.DataRow

        'Dim s As String = dr("_Identify")

        'dr("chuhuodan") = "XS" & s.PadLeft(6,"0")

       

'End Select

 

 

Select Case e.DataCol.Name

      

Case "hongchong"

 

DataTables("chuhuodan").save

DataTables("chuhuo").save

 End Select

 

chuhuodan_DrawCell

 

If e.Row("hongchong") =True Then

    e.Style = "红冲"

End If

 

 

 

chuhuodan_PrepareEdit

 

If User.Group<>"财务部" Then

    Select Case e.col.name

        Case "chuhuodate","kehuname","kehuid","tel1","dizhi","diqu","beizhu","addtime","adduser","wancheng"

            e.cancel=True

    End Select

End If

 

If (e.Row("wancheng") = True Or e.Row("hongchong")=True) AndAlso User.group<> "财务部" Then

    Select Case e.Col.Name

       Case "wancheng","hongchong"

            e.Cancel = True

    End Select

End If

 

 

 

chuhuodan_DataColChanging

 

Select Case e.DataCol.Name

      

Case "hongchong"

 If e.DataRow("hongchong") = False

 

Dim Result As DialogResult

Result = MessageBox.Show("您确定要红冲吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

If Result = DialogResult.no Then

   

e.Cancel = True

 

End If

 

Else

 

 

Dim Result As DialogResult

Result = MessageBox.Show("您确定要反红冲吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

If Result = DialogResult.no Then

   

e.Cancel = True

End If

 

End If

 

End Select

 

 

 

chuhuodan_DataRowAdding

 

Dim dr As DataRow = e.DataRow

        Dim s As String = dr("_Identify")

        dr("chuhuodan") = "XS" & s.PadLeft(6,"0")

        dr("chuhuodate")=mydate

 

 

 

出货记录的代码有问题吗?

 

[此贴子已经被作者于2012-4-23 16:34:12编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/4/23 17:00:00 [只看该作者]


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


加好友 发短信
等级:二尾狐 帖子:532 积分:4020 威望:0 精华:0 注册:2011/6/18 12:41:00
  发帖心情 Post By:2012/4/24 9:56:00 [只看该作者]

这个 SystemReady = False 是放在什么地方呢?


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/4/24 9:57:00 [只看该作者]

SystemReady = False
同步数据的代码
SystemReady = True

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


加好友 发短信
等级:二尾狐 帖子:532 积分:4020 威望:0 精华:0 注册:2011/6/18 12:41:00
  发帖心情 Post By:2012/4/24 10:04:00 [只看该作者]

一样的结果。 按理说 如果代码出现问题。那么打开项目的时候应该也是很长时间的。

可是 情况是 打开项目 大概10多秒。

单单同步一个2万行的表就假死。大概要20分钟以上才可以完成同步。同步其他表很正常。


 回到顶部
总数 12 1 2 下一页