Foxtable(狐表)用户栏目专家坐堂 → [求助]如何让窗口sqlTable表中记录与后台主表同步


  共有2536人关注过本帖树形打印复制链接

主题:[求助]如何让窗口sqlTable表中记录与后台主表同步

帅哥哟,离线,有人找我吗?
chh2321
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:253 积分:2573 威望:0 精华:0 注册:2016/8/8 9:50:00
[求助]如何让窗口sqlTable表中记录与后台主表同步  发帖心情 Post By:2016/11/11 16:04:00 [只看该作者]

老师,请教一个问题:窗口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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:253 积分:2573 威望:0 精华:0 注册:2016/8/8 9:50:00
  发帖心情 Post By:2016/11/11 21:45:00 [只看该作者]

非常感谢“有点蓝”老师,运行上述代码解决了追加后台数据的问题。
但是还有一点小问题,就是双击sqlTable中的记录后,弹出窗体记录总是定位在找到记录集第一个记录上,我想问题应该是出在“dr = drs(0)”代码上。

 回到顶部
帅哥哟,离线,有人找我吗?
chh2321
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:253 积分:2573 威望:0 精华:0 注册:2016/8/8 9:50:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:253 积分:2573 威望:0 精华:0 注册:2016/8/8 9:50:00
  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:253 积分:2573 威望:0 精华:0 注册:2016/8/8 9:50:00
  发帖心情 Post By:2016/11/11 22:39:00 [只看该作者]

不好意思,上述代码使连锁的其他表出现问题,看来还是不能用[_Identity]来查找定位数据。

       请老师指教!

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/12 8:54:00 [只看该作者]

应该不是[_Identity]的问题,如果是关联表,相关的父子表的记录要同步加载


 回到顶部