以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  保存按钮的的保存速度问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=129722)

--  作者:whx007
--  发布时间:2019/1/4 16:15:00
--  保存按钮的的保存速度问题
数据库采用access,目前数据库有2万多条记录,当点击保存按钮非常慢,有时超过5秒。请问以下代码能怎么优化提高效率。
按钮1代码:

Dim rq As String = e.Form.Controls("DateTimePicker1").Value

Dim cpxh As String = e.Form.Controls("dropbox2").Value

Dim dj As String = e.Form.Controls("textbox5").Value

Dim sl As String = e.Form.Controls("NumericComboBox2").Value

If rq = "" Then

    MessageBox.Show("请输入销售日期,不能为空!", "错误提示")

ElseIf cpxh = "" Then

    MessageBox.Show("The product model cannot be empty,please enter产品型号不能为空,请输入!", "错误提示")

ElseIf sl = "" Then

    MessageBox.Show("The quantity cannot be empty,please enter(请输入数量,不能为空!)", "错误提示")

Else

    Dim tbl As Table = Tables("销售明细表")

    Dim r As Row = tbl.AddNew()

    r("订单号") = e.Form.Controls("TextBox2").Text

    r("产品型号") = e.Form.Controls("dropbox2").Text

    r("产品类别") = e.Form.Controls("产品类别").Text

    r("单价成本") = e.Form.Controls("单价成本").Text

    r("销售单价") = e.Form.Controls("TextBox5").Text

    r("数量") = e.Form.Controls("NumericComboBox2").Text

    If e.Form.Controls("NumericComboBox1").Value <> 0 Then

        Dim r1 As Row = Tables("订单出库明细表").AddNew

        r1("提货日期") = e.Form.Controls("datetimepicker1").Text

        r1("订单号") = e.Form.Controls("TextBox2").Text

        r1("产品型号") = e.Form.Controls("dropbox2").Text

        r1("数量") = e.Form.Controls("NumericComboBox2").Text

        r1("已提数量") = e.Form.Controls("NumericComboBox1").Text

    End If

End If

 

e.Form.Controls("DropBox2").Value= ""

e.Form.Controls("textbox5").Value= ""

e.Form.Controls("NumericComboBox2").Value = ""

e.Form.Controls("未提数量").Text = ""

销售明细表和订单出库明细表通过订单号关联


按钮2代码:

Dim fs As String = e.Form.Controls("ComboBox1").Value

If fs = "" Then

    MessageBox.Show("The payment cannot be empty,please enter 支付方式不能为空,请输入!", "错误提示")

    Return

End If


Dim dr As Row = Tables("销售订单").Current

If dr IsNot Nothing AndAlso dr.DataRow.RowState = DataRowState.Added Then

    If Tables("销售明细表").Current Is Nothing Then

        MessageBox.Show("No details cannot be saved 无订单明细,无法保存!", "Error 错误提示")

        dr.Delete

    Else

        dr("客户名称") = e.Form.Controls("DropBox3").Text

        dr("客户电话") = e.Form.Controls("DropBox1").Text

        dr("折扣") = e.Form.Controls("TextBox3").Text

        dr("备注") =dr("备注") & vbcrlf & e.Form.Controls("TextBox4").Text

        dr.Save

        Tables("销售订单").AllowEdit = False

        Tables("销售明细表").save

        Tables("订单出库明细表").Save

    End If

End If


If User.Group <> "经理" Then

    e.Form.Controls("textbox9").text = 0

End If


If e.Form.Controls("TextBox9").Value <> 0 Then

    Dim tbl As Table = Tables("订单付款明细表")

    Dim r As Row = tbl.AddNew()

    r("付款日期") = e.Form.Controls("datetimepicker1").Text

    r("订单号") = e.Form.Controls("TextBox2").Text

    r("付款金额") = e.Form.Controls("TextBox9").Text

    r("付款方式") = e.Form.Controls("ComboBox1").Text

    If tbl.Current IsNot Nothing Then

        tbl.Current.Save()

    End If

End If


Dim khmc As WinForm.DropDownBox = e.Form.Controls("DropBox3")

Dim khdh As WinForm.DropDownBox = e.Form.Controls("DropBox1")

Dim zk As WinForm.TextBox = e.Form.Controls("textbox3")

Dim cpxh As WinForm.DropDownBox = e.Form.Controls("DropBox2")

Dim sl As WinForm.NumericComboBox = e.Form.Controls("NumericComboBox2")

Dim dj As WinForm.TextBox = e.Form.Controls("textbox5")

Dim sfje As WinForm.TextBox = e.Form.Controls("textbox9")

Dim ytsl As WinForm.NumericComboBox = e.Form.Controls("NumericComboBox1")

Dim bz As WinForm.TextBox = e.Form.Controls("textbox4")

Dim zffs As WinForm.ComboBox = e.Form.Controls("ComboBox1")

khmc.Text = ""

khdh.Text = ""

cpxh.Text = ""

sl.Text = ""

dj.Text = ""

sfje.Text = ""

zk.Text = "0"

ytsl.Text = ""

bz.Text = ""

zffs.Text = "Cash"


Dim t As Table = Tables("销售主界面_Table2")

With Tables("销售订单")

    If .Current Is Nothing Then

        t.Filter = "False"

    Else

        t.Filter = "订单号 = \'" & .Current("订单号") & "\'"

    End If

End With


With Tables("销售明细表")

    Tables("销售明细表").Filter = "1=2"

    .Cols("数量").GrandTotal = True

    .Cols("金额").GrandTotal = True

    .GrandTotal = False

End With


Dim xzcp As WinForm.Button = e.Form.Controls("新增产品")

xzcp.Enabled = False

Dim bc As WinForm.Button = e.Form.Controls("保存")

bc.Enabled = False

销售订单和销售明细表通过订单号关联,销售订单和订单付款明细通过订单号关联。



--  作者:有点甜
--  发布时间:2019/1/4 16:26:00
--  

 

保存多少行数据?如果保存的数据量大,耗时是肯定的。

 

或者看看 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=98689&replyID=680089&skin=1

 


--  作者:whx007
--  发布时间:2019/1/4 17:13:00
--  
大多数情况下每次少于10行,通常就是4-5行一次。
甜老师,你给的例子下载来我打不开,我是开发版,不能打开非开发版本的项目。

还有一个问题是,局域网使用的时候也很慢,数据库保存在A电脑上,A共享数据库给B,C电脑,B,C电脑在保存的时候非常慢,保存的速度完全不能接受。

--  作者:有点甜
--  发布时间:2019/1/4 17:28:00
--  

1、做一个对应的实例发上来测试;

 

2、你在下载开发版的地方,下载一个商业版安装使用。


--  作者:whx007
--  发布时间:2019/1/7 1:27:00
--  
这两天上传不了附件,这么回事
--  作者:有点甜
--  发布时间:2019/1/7 9:31:00
--  
以下是引用whx007在2019/1/7 1:27:00的发言:
这两天上传不了附件,这么回事

 

文件大小不能超过2M,用ie浏览器访问论坛再上传。

 


--  作者:whx007
--  发布时间:2019/1/7 14:46:00
--  
使用的是ie浏览器,点击添加附件没有任何反应,没有弹窗出来.

--  作者:有点甜
--  发布时间:2019/1/7 15:26:00
--  
以下是引用whx007在2019/1/7 14:46:00的发言:
使用的是ie浏览器,点击添加附件没有任何反应,没有弹窗出来.

 

试试ie里面的兼容模式。


--  作者:whx007
--  发布时间:2019/1/7 15:30:00
--  


甜老师,这是实例,帮我测试一下代码,测试方法:


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20190104230139.png
图片点击可在新窗口打开查看
1:点击按钮1新增订单,填入name,cell,model产品型号,quanty数量,再点2 add product

2:重复填入name,cell,model产品型号,quanty数量,再点2 add product,5-6次

3:点击3save

 

现在数据库2万行,点击按钮2和3越来越慢

[此贴子已经被作者于2019/1/9 4:08:52编辑过]

--  作者:有点甜
--  发布时间:2019/1/7 15:46:00
--  
具体项目和数据一起发上来测试。