以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]关于复制后台数据行 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=120614) |
-- 作者:沪上游客 -- 发布时间:2018/6/20 15:29:00 -- [求助]关于复制后台数据行 老师您好! 我设置了工程合同数据基础表的流程设置,每个用户会根据“流程设置”表中的节点(进度)加载数据到“我的工作台”表,但是我的“工程合同数据基础表”是整个项目的主表,设置了分页加载(每页20条记录),现在以下命令在”我的工作台“表中只会加载第一页的20条记录。 请问在以下命令中怎么样复制附合条件的后台数据行?请指教! 以下是主表DataColChanged代码: For Each sz As DataRow In DataTables("流程设置").Select("姓名 = \'" & User.Name & "\'") If e.DataCol.Name = "进度" AndAlso e.DataRow("进度") = sz("进度") Then Dim nma() As String = {"进度","合同编号","工程名称","所属部门_区域公司","所属部门_分公司","录入日期","记录编号"} \'工程合同数据基础表数据来源列 Dim nmb() As String = {"进度","合同编号","工程名称","所属部门_区域公司","所属部门_分公司","申请日期","记录编号"} \'我的工作台表数据接收列 Dim dr As DataRow = DataTables("我的工作台").AddNew For i As Integer = 0 To nma.Length - 1 dr(nmb(i)) = e.DataRow(nma(i)) “我的工作台”表是内部表,项目每次启动会先清除所有行,然后重新加载。 以下是我的工作台窗口更新按钮代码: \'显示工程合同登记待办 Dim F1 As String = "(进度 <> \'SLHT2B\')" If User.Type = UserTypeEnum.Administrator Then DataTables("工程合同基础数据").LoadFilter = F1 Else If User.Type = UserTypeEnum.Developer Then DataTables("工程合同基础数据").LoadFilter = F1 Else If User.Group = "总公司" Then DataTables("工程合同基础数据").LoadFilter = F1 Else If User.Group Like "*区域" Then DataTables("工程合同基础数据").LoadFilter = "所属部门_区域公司 = \'" & User.Group & "\' And" & F1 Else If User.Group Like "*分公司" Then DataTables("工程合同基础数据").LoadFilter = "所属部门_分公司 = \'" & User.Group & "\'And" & F1 Else If User.Group = "项目部" Then Dim dr As DataRow dr = DataTables("操作人员").SQLFind("[姓名] = \'" & User.name & "\'") If dr IsNot Nothing DataTables("工程合同基础数据").LoadFilter = "项目部全称 = \'" & dr("项目部全称") & "\'" End If End If DataTables("工程合同基础数据").Load() DataTables("工程合同基础数据").DataCols("进度").RaiseDataColChanged() Dim t As Table = Tables("我的工作台") Dim n As Integer = t.DataTable.GetValues("记录编号", t.filter).count Dim lbl As WinForm.Label Dim lb2 As WinForm.Label lb2 = e.Form.Controls("Label2") lb2.Text = "您的待办事项有" & n & "条" If n = 0 Then e.Form.Controls("Label1").Visible = True lbl = e.Form.Controls("Label1") lbl.Text = "没有数据" Else e.Form.Controls("Label1").Visible = False End If |
-- 作者:有点甜 -- 发布时间:2018/6/20 16:16:00 -- 重置列代码改成
For Each cdr As DataRow In DataTables("工程合同基础数据").sqlselect("") |
-- 作者:沪上游客 -- 发布时间:2018/6/20 21:18:00 -- 老师您好!我按照您代码做了,代码如下: For Each cdr As DataRow In DataTables("工程合同基础数据").sqlselect("进度 <> \'SLHT2B\'") For Each sz As DataRow In DataTables("流程设置").Select("姓名 = \'" & User.Name & "\'") If cdr("进度") = sz("进度") And sz("所属表名") = "工程合同基础数据" Then Dim nma() As String = {"进度","合同编号","工程名称","所属部门_区域公司","所属部门_分公司","录入日期","记录编号"} \'工程合同数据基础表数据来源列 Dim nmb() As String = {"进度","合同编号","工程名称","所属部门_区域公司","所属部门_分公司","申请日期","记录编号"} \'我的工作台表数据接收列 Dim dr As DataRow = DataTables("我的工作台").AddNew For i As Integer = 0 To nma.Length - 1 dr(nmb(i)) = cdr(nma(i)) dr("所属表名") = "工程合同基础数据" dr("窗口名") = "待办编缉收入合同" If dr("进度") = "SLHT1A" Then dr("事项") = "收入合同登记录入" & "(合同价款:" & cdr("合同价款") & "元)" ElseIf dr("进度") = "SLHT1B" Then dr("事项") = "收入合同待审批" & "(合同价款:" & cdr("合同价款") & "元)" End If Next End If Next Next 但是每条记录重复了20条,这是怎么会事?导致复制很慢,复制完后系统速度很慢。请老师指教,谢谢!
|
-- 作者:有点甜 -- 发布时间:2018/6/20 21:22:00 -- For Each cdr As DataRow In DataTables("工程合同基础数据").sqlselect("进度 <> \'SLHT2B\'")
Dim nma() As String = {"进度","合同编号","工程名称","所属部门_区域公司","所属部门_分公司","录入日期","记录编号"} \'工程合同数据基础表数据来源列
Dim nmb() As String = {"进度","合同编号","工程名称","所属部门_区域公司","所属部门_分公司","申请日期","记录编号"} \'我的工作台表数据接收列
Dim dr As DataRow = DataTables("我的工作台").AddNew
For i As Integer = 0 To nma.Length - 1
dr(nmb(i)) = cdr(nma(i))
dr("所属表名") = "工程合同基础数据"
dr("窗口名") = "待办编缉收入合同"
If dr("进度") = "SLHT1A" Then
dr("事项") = "收入合同登记录入" & "(合同价款:" & cdr("合同价款") & "元)"
ElseIf dr("进度") = "SLHT1B" Then
dr("事项") = "收入合同待审批" & "(合同价款:" & cdr("合同价款") & "元)"
End If
Next
Next
|
-- 作者:沪上游客 -- 发布时间:2018/6/20 21:26:00 -- Dim nma() As String = {"进度","合同编号","工程名称","所属部门_区域公司","所属部门_分公司","录入日期","记录编号"} \'工程合同数据基础表数据来源列 Dim nmb() As String = {"进度","合同编号","工程名称","所属部门_区域公司","所属部门_分公司","申请日期","记录编号"} \'我的工作台表数据接收列 Dim dr As DataRow = DataTables("我的工作台").AddNew For i As Integer = 0 To nma.Length - 1 dr(nmb(i)) = cdr(nma(i)) 老师这个复制行的命令如果设置在窗口的AfterLoad 或者 按钮中,怎么指定来源表列?
|
-- 作者:有点甜 -- 发布时间:2018/6/20 22:12:00 -- 不理解你的意思。你现在不是指定了?如果要修改,直接修改代码。 |
-- 作者:沪上游客 -- 发布时间:2018/6/20 22:53:00 -- 我的意思 是如果在窗口中设置命令,指定来源表列复制到另一个表应该怎么做? |
-- 作者:有点甜 -- 发布时间:2018/6/20 23:11:00 -- 直接用4楼代码,不可以? |