以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]如何让窗口sqlTable表中记录与后台主表同步 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=92745) |
-- 作者:chh2321 -- 发布时间:2016/11/11 16:04:00 -- [求助]如何让窗口sqlTable表中记录与后台主表同步 老师,请教一个问题:窗口1中插入的SQLTable,我想双击SQLTable(窗口1_Table1)中的记录,弹出的编辑窗口(窗口2)中记录是我双击的那条记录。如何让sqlTable的记录与后台主表记录同步呢?因为我的编辑窗口(窗口2)字段绑定的是主表Table2。 已加载数据定位好像还可以,但未加载数据无法正确定位。代码如下,不知错在哪里?(当前表是Table2的sqlTable(窗口1_Table1),Table2已分页加载) 1 If e.Table.Current
Is Nothing Then \'如果Current为Nothing 2 Return \'则返回 3 End If 4 Dim wz As Integer 5 Dim dr As DataRow 6 dr =
DataTables("Table2").Find("[编号] = \'" &
e.Table.Current("编号") & "\' And [日期] = #" &
e.Table.Current("日期") & "#") 7 If dr IsNot
Nothing Then 8 wz =
Tables("Table2").FindRow(dr) 9 If wz >= 0 Then 10 Tables("Table2").Position = wz 11 End If 12 End If [此贴子已经被作者于2016/11/11 16:05:27编辑过]
|
-- 作者:有点蓝 -- 发布时间:2016/11/11 16:53:00 -- If e.Table.Current Is Nothing Then \'如果Current为Nothing Return \'则返回 End If Dim wz As Integer Dim dr As DataRow dr = DataTables("Table2").Find("[编号] = \'" & e.Table.Current("编号") & "\' And [日期] = #" & e.Table.Current("日期") & "#") If dr Is Nothing Then Dim drs = DataTables("Table2").AppendLoad("[编号] = \'" & e.Table.Current("编号") & "\' And [日期] = #" & e.Table.Current("日期") & "#"). If drs.count > 0 Then dr = drs(0) Else Return End If End If wz = Tables("Table2").FindRow(dr) If wz >= 0 Then Tables("Table2").Position = wz End If
|
-- 作者:chh2321 -- 发布时间:2016/11/11 21:45:00 -- 非常感谢“有点蓝”老师,运行上述代码解决了追加后台数据的问题。 但是还有一点小问题,就是双击sqlTable中的记录后,弹出窗体记录总是定位在找到记录集第一个记录上,我想问题应该是出在“dr = drs(0)”代码上。
|
-- 作者:chh2321 -- 发布时间:2016/11/11 21:55:00 -- 我的检索可能有问题,因为有可能出现编号相同,日期相同的多个记录 如果我将代码 dr = DataTables("Table2").Find("[编号] = \'" & e.Table.Current("编号") & "\' And [日期] = #" & e.Table.Current("日期") & "#")改写如下是否可以避免出现这种情况? dr = DataTables("Table2").Find("[编号] = \'" & e.Table.Current("编号") & "\' And [_Identify] = \'" & e.Table.Current("_Identify") & "\'")
|
-- 作者:chh2321 -- 发布时间:2016/11/11 22:13:00 -- 最终代码改成如下,问题得到解决。 非常感谢“有点蓝”老师的帮助! If e.Table.Current Is Nothing Then \'如果Current为Nothing Return \'则返回 End If Dim wz As Integer Dim dr As DataRow dr = DataTables("Table2").Find("[_Identify] = " & e.Table.Current("_Identify")) If dr Is Nothing Then Dim drs = DataTables("Table2").AppendLoad("[_Identify] = " & e.Table.Current("_Identify")) If drs.count > 0 Then dr = drs(0) Else Return End If End If wz = Tables("Table2").FindRow(dr) If wz >= 0 Then Tables("Table2").Position = wz End If |
-- 作者:chh2321 -- 发布时间:2016/11/11 22:39:00 -- 不好意思,上述代码使连锁的其他表出现问题,看来还是不能用[_Identity]来查找定位数据。 请老师指教!
|
-- 作者:有点蓝 -- 发布时间:2016/11/12 8:54:00 -- 应该不是[_Identity]的问题,如果是关联表,相关的父子表的记录要同步加载 |