以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  在窗口的timeticker事件加入追载事件,此时双击窗口表的行,跳转的窗口显示的行信息怎么不是已选中的行信息?(目的为了实现实时刷新窗口中符合条件的数据)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=114238)

--  作者:guosheng
--  发布时间:2018/2/1 12:54:00
--  在窗口的timeticker事件加入追载事件,此时双击窗口表的行,跳转的窗口显示的行信息怎么不是已选中的行信息?(目的为了实现实时刷新窗口中符合条件的数据)
窗口表的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

--  作者:有点甜
--  发布时间: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
--  发布时间: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编辑过]

--  作者:有点甜
--  发布时间:2018/2/6 14:22:00
--  
回复楼上,代码不应该报错的。做一个出错的例子发上来测试。
--  作者:guosheng
--  发布时间: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”被约束为是唯一的。
请老师帮忙看看,怎么回事啊!

--  作者:有点甜
--  发布时间:2018/2/7 14:47:00
--  
我测试,没问题,请把你做的实例发上来。
--  作者:guosheng
--  发布时间:2018/2/7 15:42:00
--  
刚测试了一下又没出现错误了,我再研究一下吧。
--  作者:guosheng
--  发布时间:2018/2/7 16:15:00
--  
老师测试依然有问题。
任务栏的 查询报表页面的任务1链接窗口1,任务2链接窗口2。
项目发布后:
A用户登录,点击任务1,打开窗口1
B用户登录,点击任务2,打开窗口2,并删除第二列的8,点击左上角保存;删除第二列的7,点击左上角保存。系统提醒错误了。
请老师帮忙看看吧
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.foxdb


--  作者:有点甜
--  发布时间: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
--  发布时间: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