以文本方式查看主题
- 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
-- 关于单据记录删除后的定位
如题:此主题相关图片如下:3.jpg
[此贴子已经被作者于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
--
具体情况应具体分析。 个人觉得应该没问题(不应有两人同时做这样的操作吧)。 你可以做个简单的试试呀。
看看其他老鸟有什么看法。
|