以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于单据记录删除后的定位  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=29669)

--  作者:jinruan
--  发布时间:2013/3/11 15:07:00
--  关于单据记录删除后的定位
如题:

图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:3.jpg
图片点击可在新窗口打开查看

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


[此贴子已经被作者于2013-3-11 15:12:23编辑过]

--  作者:狐狸爸爸
--  发布时间:2013/3/11 15:54:00
--  

1、你用关联不是更好吗?

2、为什么要动态加载? 用筛选就行了,例如:

http://www.foxtable.com/help/topics/2222.htm

 


--  作者:jinruan
--  发布时间:2013/3/11 16:04:00
--  
用户想在浏览页中的这个表格中,
尽可能多的看到表主表及明细表中的信息,这样方便查找
如果用模拟关联表方式,只能在选择了主表后才看到相关的明细表记录


--  作者:jinruan
--  发布时间:2013/3/11 16:06:00
--  
采购用当前浏览面中的数据展现方式,单据信息可以很全面,用户可以同时用主表及明细表中的信息筛选及排序
--  作者:jinruan
--  发布时间:2013/3/11 17:27:00
--  
更改为上述代码,删除后还是与原来一样的啊
[此贴子已经被作者于2013-3-11 17:28:37编辑过]

--  作者:jinruan
--  发布时间:2013/3/11 17:35:00
--  
删除本是没问题的,
想要删除后记录定位到上一单据或下一单据中的第一条记录
如图:

图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看



--  作者:jinruan
--  发布时间:2013/3/12 10:59:00
--  
大家有无遇到过类似需求,垦请指点
--  作者:e-png
--  发布时间:2013/3/12 18:05:00
--  

试试=删除按钮:


If Tables("表B").count =0
    Return
End If
If Tables("表B").current("B1") =  Tables("表A").current("A1")
    Dim n0,n1,n3 As Integer
    Dim n As Integer = Tables("表B").current("B1")   \'====
    n0 = Tables("窗口1_Table1").Compute("max(a1)", "b1 < " & n)
    Dim drs0,drs1 As List(Of DataRow)
    drs0 = DataTables("窗口1_Table1").Select("[a1] = " & n0)
    drs1 = DataTables("窗口1_Table1").Select("[a1] > " & n)
    Dim nn As Integer = drs0.count
    n1 = DataTables("窗口1_Table1").DataRows.count
    \'------------------------------------------------------
    If n1 > 0 And drs1.count > 0 Or n1 > 0 And drs0.count > 0
        Dim dr As DataRow
        If nn > 0
            dr = DataTables("窗口1_Table1").Find("a1 = " & n0 )
        Else
            dr = DataTables("窗口1_Table1").Find("a1 > " & n)
        End If
        n3=dr(("a1") )
        \'=========
        Tables("表A").Current.Delete
        DataTables("表B").DeleteFor("B1 = " &  Tables(Forms("窗口1").name &"_Table1").Current("a1"))
        DataTables("表A").Save
        DataTables("表B").Save
       
        DataTables(Forms("窗口1").Name &"_Table1").Load
        Forms("窗口1").StopRedraw
        Forms("窗口1").Controls("TabControl1").SelectedIndex = 0
        Forms("窗口1").ResumeRedraw
        \'===============
        dr = DataTables("窗口1_Table1").Find("a1 = " & n3 )
        If dr IsNot Nothing Then
            Dim wz As Integer = Tables("窗口1_Table1").FindRow(dr)
            If wz >= 0 Then
                Tables("窗口1_Table1").Position = wz
            End If
        End If
    ElseIf n1 > 0 And drs1.count = 0 Or n1 > 0 And drs0.count = 0
        \'=========
        Tables("表A").Current.Delete
        DataTables("表B").DeleteFor("B1 = " &  Tables(Forms("窗口1").name &"_Table1").Current("a1"))
        DataTables("表A").Save
        DataTables("表B").Save
       
        DataTables(Forms("窗口1").Name &"_Table1").Load
        Forms("窗口1").StopRedraw
        Forms("窗口1").Controls("TabControl1").SelectedIndex = 0
        Forms("窗口1").ResumeRedraw
        \'===============
    End If
    MainTable = Tables("窗口1_Table1")

    Forms("窗口1").Controls("TabControl1").SelectedIndex = 1

Else
    msgbox("两表中没有相同的纪录")
End If

[此贴子已经被作者于2013-3-12 18:10:43编辑过]

--  作者:jinruan
--  发布时间:2013/3/13 10:46:00
--  
测试通过!感谢分享!

探讨下:
如果是网络环境下多用户操作这两个表
如果【浏览】页中有按B2(或其他多列同时)排序时
能不能很好的控制下记录定位?

--  作者:e-png
--  发布时间:2013/3/13 11:35:00
--  

具体情况应具体分析。 个人觉得应该没问题(不应有两人同时做这样的操作吧)。 你可以做个简单的试试呀。

看看其他老鸟有什么看法。