Foxtable(狐表)用户栏目专家坐堂 → 在窗口的timeticker事件加入追载事件,此时双击窗口表的行,跳转的窗口显示的行信息怎么不是已选中的行信息?(目的为了实现实时刷新窗口中符合条件的数据)


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

主题:在窗口的timeticker事件加入追载事件,此时双击窗口表的行,跳转的窗口显示的行信息怎么不是已选中的行信息?(目的为了实现实时刷新窗口中符合条件的数据)

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
在窗口的timeticker事件加入追载事件,此时双击窗口表的行,跳转的窗口显示的行信息怎么不是已选中的行信息?(目的为了实现实时刷新窗口中符合条件的数据)  发帖心情 Post By:2018/2/1 12:54:00 [只看该作者]

窗口表的doubleclick事件:
Dim tbl As Table = Tables("完善签约审批窗口_Table1")
If tbl.Current IsNot Nothing Then
If user.group=tbl.current("承办部门")
    Dim wz As Integer = Tables("合同基本信息表").FindRow(tbl.current.DataRow)
    If wz >=0 Then
        Tables("合同基本信息表").position= wz
        MainTable=Tables("合同基本信息表")
        forms("完善一条签约审批窗口").open()
    End If
Else
e.cancel=True
End If
End If

窗口的timeticker事件:
If user.group="服务管理中心"  Or  user.group="公司领导"   Or  user.group="企管部"
    Forms("完善签约审批窗口").StopRedraw()
    LockBaseMainForm()
    DataTables("合同基本信息表").StopRedraw()
    DataTables("合同基本信息表").RemoveFor("承办部门 is not null and 承办人 is null")
    DataTables("合同基本信息表").AppendLoad("承办部门 is not null and 承办人 is null")
    DataTables("合同基本信息表").ResumeRedraw()
    UnLockBaseMainForm()
    Forms("完善签约审批窗口").ResumeRedraw()
    Tables("完善签约审批窗口_Table1").filter="承办部门 is not null And 承办人 Is null"
Else
    Forms("完善签约审批窗口").StopRedraw()
    LockBaseMainForm()
    DataTables("合同基本信息表").StopRedraw()
    DataTables("合同基本信息表").RemoveFor("承办部门='"& user.group &"' and 承办人 is null")
    DataTables("合同基本信息表").AppendLoad("承办部门='"& user.group &"' and 承办人 is null")
    DataTables("合同基本信息表").ResumeRedraw()
    UnLockBaseMainForm()
    Forms("完善签约审批窗口").ResumeRedraw()   
    Tables("完善签约审批窗口_Table1").filter="承办部门='"& user.group &"' and 承办人 is null"
End If

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/1 14:34:00 [只看该作者]

要记录位置,刷新好重新定位,如

 

Dim id = Tables("合同基本信息表").current("_Identify")
DataTables("合同基本信息表").StopRedraw()
DataTables("合同基本信息表").RemoveFor("承办部门 is not null and 承办人 is null")
DataTables("合同基本信息表").AppendLoad("承办部门 is not null and 承办人 is null")
DataTables("合同基本信息表").ResumeRedraw()
Tables("完善签约审批窗口_Table1").filter="承办部门 is not null And 承办人 Is null"
Dim i = Tables("合同基本信息表").findrow("_Identify = " & id)
If i >= 0 Then
    Tables("合同基本信息表").position = i
End If


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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2018/2/6 12:57:00 [只看该作者]

系统提示错误:列“_Identify”被约束为是唯一的。值“24”已存在。该如何解决啊?
即使不加入追载确定当前位置的代码,也会出现以上错误。测试结果,问题出在红色阴影的两行代码上。如果单用户登录不会提示错误,但是如果多用户同时登录会提示以上错误。
窗口的timeticker事件:
If user.group="服务管理中心"  Or  user.group="公司领导"   Or  user.group="企管部"
    Dim id=Tables("完善签约审批窗口_Table1").current("_identify")
    Forms("完善签约审批窗口").StopRedraw()
    LockBaseMainForm()
    DataTables("合同基本信息表").StopRedraw()
    DataTables("合同基本信息表").RemoveFor("承办部门 is not null and 承办人 is null")
    DataTables("合同基本信息表").AppendLoad("承办部门 is not null and 承办人 is null")
    DataTables("合同基本信息表").ResumeRedraw()
    UnLockBaseMainForm()
    Forms("完善签约审批窗口").ResumeRedraw()
    Tables("完善签约审批窗口_Table1").filter="承办部门 is not null And 承办人 Is null"
    Dim i=Tables("完善签约审批窗口_Table1").findrow("_identify="& id)
    If i>0
        Tables("完善签约审批窗口_Table1").position=i
    End If
Else
    Dim id=Tables("完善签约审批窗口_Table1").current("_identify")
    Forms("完善签约审批窗口").StopRedraw()
    LockBaseMainForm()
    DataTables("合同基本信息表").StopRedraw()
    DataTables("合同基本信息表").RemoveFor("承办部门 is not null and 承办人 is null")
    DataTables("合同基本信息表").AppendLoad("承办部门 is not null and 承办人 is null")
    DataTables("合同基本信息表").ResumeRedraw()
    UnLockBaseMainForm()
    Forms("完善签约审批窗口").ResumeRedraw()
    Tables("完善签约审批窗口_Table1").filter="承办部门='"& user.group &"' and 承办人 is null"
    Dim i=Tables("完善签约审批窗口_Table1").findrow("_identify="& id)
    If i>0
        Tables("完善签约审批窗口_Table1").position=i
    End If 
End If
[此贴子已经被作者于2018/2/6 13:13:19编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/6 14:22:00 [只看该作者]

回复楼上,代码不应该报错的。做一个出错的例子发上来测试。

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2018/2/7 14:28:00 [只看该作者]

用一个外部表,两个窗口进行数据追载测试,依然报类似的错误。
1)通过sqlserver数据源建立的外部表,表名字:表1
2)窗口1:主窗口,所有者表为表1,表控件table1 绑定表1,副本,只读。
窗口的timeticker事件:
DataTables("表1").RemoveFor("第一列 is not null and 第二列 is null")
DataTables("表1").AppendLoad("第一列 is not null and 第二列 is null")
Tables("窗口1_Table1").filter="第一列 is not null and 第二列 is null"

3)窗口2,主窗口,所有者表为表1,表控件table1 绑定表1,副本,并可编辑。

4)A用户登录并打开窗口1

5)B用户登录并打开窗口2,将某行第二列的内容删除,点击系统左上角 保存按钮,提示错误:列“_Identify”被约束为是唯一的。
请老师帮忙看看,怎么回事啊!

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/7 14:47:00 [只看该作者]

我测试,没问题,请把你做的实例发上来。

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2018/2/7 15:42:00 [只看该作者]

刚测试了一下又没出现错误了,我再研究一下吧。

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2018/2/7 16:15:00 [只看该作者]

老师测试依然有问题。
任务栏的 查询报表页面的任务1链接窗口1,任务2链接窗口2。
项目发布后:
A用户登录,点击任务1,打开窗口1
B用户登录,点击任务2,打开窗口2,并删除第二列的8,点击左上角保存;删除第二列的7,点击左上角保存。系统提醒错误了。
请老师帮忙看看吧
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.foxdb


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/7 16:42:00 [只看该作者]

改成

 

DataTables("表2").load
DataTables("表2").RemoveFor("第一列 is not null and 第二列 is null")
DataTables("表2").AppendLoad("第一列 is not null and 第二列 is null")
Tables("窗口1_Table1").filter="第一列 is not null and 第二列 is null"


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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2018/2/8 10:57:00 [只看该作者]

还的麻烦老师看看。
在原来的追载中加入DataTables("合同基本信息表").load(),解决了系统提示列唯一的错误。但是出现了新的问题:
1、窗口一直在闪烁。
2、刷新后重新定位的红色底纹代码失效。

如果将DataTables("合同基本信息表").load()代码去掉,不会出现1和2的问题。

If user.group="服务管理中心"  

 Dim id=Tables("合同基本信息表").current("_identify")
    Forms("完善签约审批窗口").StopRedraw()
    DataTables("合同基本信息表").StopRedraw()
    DataTables("合同基本信息表").load()
    DataTables("合同基本信息表").RemoveFor("承办部门 is not null and 承办人 is null")
    DataTables("合同基本信息表").AppendLoad("承办部门 is not null and 承办人 is null")
    DataTables("合同基本信息表").ResumeRedraw()
   Forms("完善签约审批窗口").ResumeRedraw()
    Tables("完善签约审批窗口_Table1").filter="承办部门 is not null And 承办人 Is null"
    
    Dim i=Tables("合同基本信息表").findrow("_identify="& id)
    If i>0
        Tables("合同基本信息表").position=i
         Tables("合同基本信息表").position=i
    end if
end if

 回到顶部
总数 16 1 2 下一页