以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 我在后台提取数据速度很慢,如何处理? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=108871) |
||||
-- 作者:有点甜 -- 发布时间:2017/10/31 11:41:00 -- 你重置列了?重复执行sqlSelect很慢的。
多行处理很慢还是处理一行数据也很慢?
如果是多行处理,不要用重置列,请单独做一个按钮处理你的逻辑。不要用sqlSelect。 |
||||
-- 作者:有点甜 -- 发布时间:2017/10/31 13:11:00 -- 新增了多少行?重复多次执行sqlselect会很慢的。
或者你在粘贴的时候,不要触发datacolchanged事件。
或者是粘贴完以后,加载出所有的值查找后,再填充数据。 |
||||
-- 作者:有点甜 -- 发布时间:2017/10/31 19:24:00 -- Try
Dim t As Table = e.Table
If e.Control = True AndAlso t.Current IsNot Nothing Then
Dim r As Integer = t.RowSel
If e.KeyCode = keys.V Then
vars("stop") = true
Dim str As String = ClipBoard.GetText
Dim nr As Integer = str.Replace(vblf,"").Trim(vbcr).Split(vbcr).Length + (t.RowSel) - t.Rows.Count
If nr > 0 Then
t.AddNew(nr)
t.Select(r,t.ColSel)
End If
End If
End If
Catch ex As Exception
MessageBox.Show("追加数据失败")
End Try
DataColChanged事件判断
If vars("stop") = true Then return
粘贴完成后,再设置 vars("stop") = false
|
||||
-- 作者:有点甜 -- 发布时间:2017/11/1 8:57:00 -- 1、KeyDown
\'粘贴新增N行
Try
Dim t As Table = e.Table
If e.Control = True AndAlso t.Current IsNot Nothing Then
Dim r As Integer = t.RowSel
If e.KeyCode = keys.V Then
vars("stop") = True
Dim str As String = ClipBoard.GetText
Dim nr As Integer = str.Replace(vblf,"").Trim(vbcr).Split(vbcr).Length + (t.RowSel) - t.Rows.Count
If nr > 0 Then
t.AddNew(nr)
t.Select(r,t.ColSel)
End If
End If
End If
Catch ex As Exception
MessageBox.Show("追加数据失败")
End Try
2、DataColChanged
If vars("stop") = True Then
Return
Else
Dim dr As DataRow = e.DataRow
\'Dim fdt As DataRow = DataTables("合同清单").Find("专业编号 = \'" & dr("专业编号") & "\' And 项目编码 = \'" & dr("项目编码") & "\'")
Dim fdts As List(of DataRow) = DataTables("合同清单").SQLSelect("专业编号 = \'" & dr("专业编号") & "\' And 项目编码 = \'" & dr("项目编码") & "\'")
For Each fdt As DataRow In fdts
Select Case e.DataCol.Name
Case "项目名称"
If e.DataCol.IsString Then \'判断所有字符串型列
For Each r As Row In CurrentTable.Rows
For Each c As Col In CurrentTable.Cols
r(c.name) = Cstr(r(c.name)).replace("\'", "").replace("""", "") \'删除双引号
Next
Next
End If
Case "项目编码"
If fdt IsNot Nothing Then
dr("项目名称") = fdt("项目名称")
dr("项目特征") = fdt("项目特征")
dr("单位") = fdt("单位")
dr("综合单价") = fdt("综合单价")
dr("清单类别") = fdt("清单类别")
Else
MessageBox.Show("无此清单项目,请核对!")
dr("项目名称") = Nothing
dr("项目特征") = Nothing
dr("单位") = Nothing
dr("综合单价") = Nothing
dr("清单类别") = Nothing
End If
Case "施工单位报审_工程量"
If fdt IsNot Nothing AndAlso dr.IsNull("施工单位报审_工程量") = False Then
dr("施工单位报审_综合单价") = fdt("综合单价")
dr("施工单位报审_合价") = dr("施工单位报审_工程量") * dr("施工单位报审_综合单价")
dr("施工单位报审_人工费") = dr("施工单位报审_工程量") * fdt("单位_人工费")
dr("施工单位报审_机械费") = dr("施工单位报审_工程量") * fdt("单位_机械费")
Else
dr("施工单位报审_综合单价") = Nothing
dr("施工单位报审_合价") = Nothing
dr("施工单位报审_人工费") = Nothing
dr("施工单位报审_机械费") = Nothing
End If
Case "监理单位审核_工程量"
If fdt IsNot Nothing AndAlso dr.IsNull("监理单位审核_工程量") = False Then
dr("监理单位审核_综合单价") = fdt("综合单价")
dr("监理单位审核_合价") = dr("监理单位审核_工程量") * dr("监理单位审核_综合单价")
dr("监理单位审核_人工费") = dr("监理单位审核_工程量") * fdt("单位_人工费")
dr("监理单位审核_机械费") = dr("监理单位审核_工程量") * fdt("单位_机械费")
fdt("累计完成量") = fdt("累计完成量") + e.NewValue - e.OldValue
fdt.Save()
Else
dr("监理单位审核_综合单价") = Nothing
dr("监理单位审核_合价") = Nothing
dr("监理单位审核_人工费") = Nothing
dr("监理单位审核_机械费") = Nothing
End If
Case "造价单位审核_工程量"
If fdt IsNot Nothing AndAlso dr.IsNull("造价单位审核_工程量") = False Then
dr("造价单位审核_综合单价") = fdt("综合单价")
dr("造价单位审核_合价") = dr("造价单位审核_工程量") * dr("造价单位审核_综合单价")
dr("造价单位审核_人工费") = dr("造价单位审核_工程量") * fdt("单位_人工费")
dr("造价单位审核_机械费") = dr("造价单位审核_工程量") * fdt("单位_机械费")
Else
dr("造价单位审核_综合单价") = Nothing
dr("造价单位审核_合价") = Nothing
dr("造价单位审核_人工费") = Nothing
dr("造价单位审核_机械费") = Nothing
End If
End Select
Next
End If |
||||
-- 作者:有点甜 -- 发布时间:2017/11/1 10:44:00 -- 我测试没问题,请问如何测试?
|
||||
-- 作者:有点甜 -- 发布时间:2017/11/1 16:13:00 --
|