以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]转表的同步删除问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=14082)

--  作者:dqlgood
--  发布时间:2011/11/7 17:17:00
--  [求助]转表的同步删除问题

Select Case e.DataCol.name
    Case "科室_签收"
        If e.DataRow.IsNull("科室_签收") Then

            \'应该在此加入同步删除但写不上来了,请帮忙写一下.谢谢!
        Else
            Dim p() As String = e.DataRow("检验项目").split(",")
            Dim dr As Row = Tables("表B").AddNew()
            dr("检验项目") = p(0)
            dr("样品编号") = e.DataRow("样品编号")
            If p.length > 1 Then
                Dim dr1 As Row = Tables("表B").AddNew()
                dr1("检验项目") = p(1)
                dr1("样品编号") = E.DataRow("样品编号")
                If p.length > 2 Then
                    Dim dr2 As Row = Tables("表B").AddNew()
                    dr2("检验项目") = p(2)
                    dr2("样品编号") = E.DataRow("样品编号")
                    If p.length > 3 Then
                        Dim dr3 As Row = Tables("表B").AddNew()
                        dr3("检验项目") = p(3)
                        dr3("样品编号") = E.DataRow("样品编号")
                        If p.length > 4 Then
                            Dim dr4 As Row = Tables("表B").AddNew()
                            dr4("检验项目") = p(4)
                            dr4("样品编号") = E.DataRow("样品编号")
                            If p.length > 5 Then
                                Dim dr5 As Row = Tables("表B").AddNew()
                                dr5("检验项目") = p(5)
                                dr5("样品编号") = E.DataRow("样品编号")
                            End If
                        End If
                    End If
                End If
            End If
        End If
End Select

 

问题见附件。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目9.table


--  作者:狐狸爸爸
--  发布时间:2011/11/7 17:25:00
--  

呵呵,不做任何解释,一段代码贴出来,让人猜谜吗?

至少说明一下自己的设计目的吧,系统是你自己设计的,旁人是不清楚你在干什么的,


--  作者:dqlgood
--  发布时间:2011/11/7 18:37:00
--  
本编码的目的是将“表A”中“检验项目”的分项目,在流程中,分拣到“表B”的不同行,这个功能在附件中已通过验证,现在的问题是如果要改签,如何实现“表B”的同步删除问题,看一下附件演示应该会明白的,我认为已经做的很详细了。
[此贴子已经被作者于2011-11-7 19:30:10编辑过]

--  作者:mr725
--  发布时间:2011/11/7 20:43:00
--  
Tables("表A").Current("科室_拒签或退回") = User.Name
Tables("表A").Current("科室_签收") = Nothing
DataTables("表B").DeleteFor("[样品编号] = \'" & Tables("表A").current("样品编号") & "\'")
With Tables("表A")
    .Position = .Position + 1
End With

--  作者:dqlgood
--  发布时间:2011/11/7 22:30:00
--  
   

谢谢!就是这个语句不会写了,一直套用For Each但就是不成;测试发现不是很流畅,掐头去尾,仅保留:

DataTables("B").DeleteFor("[样品编号] = \'" & Tables("A").current("样品编号") & "\'"),并改写为:

DataTables("B").DeleteFor("[样品编号] = \'" & e.DataRow("样品编号") & "\'")就流畅了。

在此之前,我也应用如:“dr("样品编号") = Tables("A").Current("样品编号")”,单个签字可以,一用全签就出问题了,

不知“Tables("A").Current("样品编号")”与“e.DataRow("样品编号")”,的区别在那里。


--  作者:mr725
--  发布时间:2011/11/7 23:07:00
--  

e.DataRow 是你操作的行,

Tables("A").Current 是焦点跑到任何一行的“当前行”

你用了position+1,所以不知道是否先跑到下一行后,才执行current,此时的current就不是原来的current了。。