以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 自动复制 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=42988) |
||||
-- 作者:Liangcai -- 发布时间:2013/11/27 16:26:00 -- 自动复制 固定资产入库表有数量列,当输入3时固定资产库存表增加3行,固定资产库存表:入库单号、名称、规格 等于固定资产入库:入库单号、名称、规格,如果修改固定资产入库表数量列能自动更新,数量列输入2时固定资产库存表为2行。 我写了代码,只能增加行不能更新,并且 入库单号、名称、规格 只能复制增加的第一行 If e.DataCol.Name = "数量" Then 请指教代码,谢谢 [此贴子已经被作者于2013-11-27 16:28:38编辑过]
|
||||
-- 作者:Bin -- 发布时间:2013/11/27 16:32:00 -- If e.DataCol.Name = "数量" Then If e.DataRow.Isnull("数量") = False Dim n As Integer = e.DataRow("数量") Dim nma() As String = {"入库单号","名称","规格"} Dim nmb() As String = {"入库单号","名称","规格"} dim drlist as List(of datarow) = DataTables("固定资产库存").select("入库单号=\'" & e.datarow("入库单号") & "\'") if drlist is nothing then for i as integer = 1 to n then Dim dr As DataRow = DataTables("固定资产库存").AddNew() For i As Integer = 0 To nma.Length - 1dr(nmb(i)) = e.DataRow(nma(i)) Next next
else if drlist.count>n then for i as integer=0 to drlist.count-n-1 drlist(i).Delete next end if end if End If End If |
||||
-- 作者:狐狸爸爸 -- 发布时间:2013/11/27 16:35:00 -- 建议: 1、两个表通过入库单号建立关联,固定资产入库表为父表,固定资产库存表为子表。 2、固定资产库存表的名称、规格改为表达式列,用表达式引用父表数据: http://www.foxtable.com/help/topics/0106.htm
3、自动增加删除行的代码改为:
If e.DataCol.Name = "数量" OrElse e.DataCol.name = "入库单号" Then
|
||||
-- 作者:Liangcai -- 发布时间:2013/11/27 18:13:00 -- 出现错误
|
||||
-- 作者:有点甜 -- 发布时间:2013/11/27 19:04:00 -- 呃,楼主,你把 then 去掉就行了
|
||||
-- 作者:Liangcai -- 发布时间:2013/11/27 19:18:00 -- For i As Integer = 1 To n 去掉出现这样
[此贴子已经被作者于2013-11-27 19:18:30编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2013/11/27 19:25:00 -- 试试这样 If e.DataCol.Name = "数量" Then If e.DataRow.Isnull("数量") = False Dim n As Integer = e.DataRow("数量") Dim nma() As String = {"入库单号","名称","规格"} Dim nmb() As String = {"入库单号","名称","规格"} dim drlist as List(of datarow) = DataTables("固定资产库存").Select("入库单号=\'" & e.DataRow("入库单号") & "\'") If drlist Is Nothing Then For i As Integer = 1 To n Dim dr As DataRow = DataTables("固定资产库存").AddNew() For j As Integer = 0 To nma.Length - 1 dr(nmb(j)) = e.DataRow(nma(j)) Next Next Else If drlist.count>n Then For i As Integer=0 To drlist.count-n-1 drlist(i).Delete Next End If End If End If End If |
||||
-- 作者:Liangcai -- 发布时间:2013/11/27 19:35:00 -- 也不行
|
||||
-- 作者:有点甜 -- 发布时间:2013/11/27 20:08:00 -- 代码如下 If e.DataCol.Name = "数量" Then If e.DataRow.Isnull("数量") = False Dim n As Integer = e.DataRow("数量") Dim nma() As String = {"入库单号","名称","规格"} Dim nmb() As String = {"入库单号","名称","规格"} dim drlist as List(of datarow) = DataTables("固定资产库存").Select("入库单号=\'" & e.DataRow("入库单号") & "\'") If drlist.count <= n Then For i As Integer = 1 To n - drlist.count Dim dr As DataRow = DataTables("固定资产库存").AddNew() For j As Integer = 0 To nma.Length - 1 dr(nmb(j)) = e.DataRow(nma(j)) Next Next Else For i As Integer=0 To drlist.count-n-1 drlist(i).Delete Next End If End If End If [此贴子已经被作者于2013-11-27 20:11:43编辑过]
|
||||
-- 作者:Liangcai -- 发布时间:2013/11/27 20:15:00 -- 太谢谢 |