用户查询不到表数据,可以看到表结构原创
6人赞赏了该文章
6,546次浏览
编辑于2020年06月28日 18:36:07
最近遇到不少实施人员问某些用户查不到表数据的问题。现提供解决方法。(本方法适用于商贸版,专业版!旗舰版跟K3没有遇到过这样的问题,不过原理应该相同,可能表名不一样)
问题:用户查询表时,查询不到或者是查询后看不到结果!
原因:用户配置表,用户过滤方案表,用户打印设置表出现了错乱。
解决方法:
一,先清 除用户配置表 ,如果清除以后还有问题,请继续清除下面的表数据。 --根据用户名清除用户配置表 delete t_userprofile where fuserid =(select fuserid from t_user where fname='manager'); 二,清除方案表: --根据用户名清除打印设置方案 delete t_LedgerPageSetup where fuserid =(select fuserid from t_user where fname='manager'); --根据用户名清除用户报表方案表 delete icreportprofile where fuserid =(select fuserid from t_user where fname='manager'); ----终极解决方案:触发器解决 。 (慎用!!会导致用户不能保存查询方案或打印方案)。 将以下触发器创建到数据库中去就好了。 --当icreportprofile被写入记录时,触发以下代码 CREATE TRIGGER tri_icreportprofile_Insert ON icreportprofile after INSERT AS DECLARE @fuserid INTEGER; BEGIN -- 取得插入的 @fuserid SELECT @fuserid = fuserid FROM INSERTED; IF EXISTS ( SELECT * FROM icreportprofile WHERE fuserid = @fuserid ) BEGIN -- 不允许记录被写入,删除记录 DELETE FROM icreportprofile WHERE fuserid = (SELECT fuserid FROM INSERTED); delete from t_userprofile where fuserid =(SELECT fuserid FROM INSERTED); delete from t_LedgerPageSetup where fuserid =(SELECT fuserid FROM INSERTED); END END --当t_LedgerPageSetup被写入记录时,触发以下代码 CREATE TRIGGER tri_LedgerPageSetup_Insert ON t_LedgerPageSetup after INSERT AS DECLARE @fuserid INTEGER; BEGIN -- 取得插入的 @fuserid SELECT @fuserid = fuserid FROM INSERTED; IF EXISTS ( SELECT * FROM t_LedgerPageSetup WHERE fuserid = @fuserid ) BEGIN -- 不允许记录被写入,删除记录 DELETE FROM icreportprofile WHERE fuserid = (SELECT fuserid FROM INSERTED); delete from t_userprofile where fuserid =(SELECT fuserid FROM INSERTED); delete from t_LedgerPageSetup where fuserid =(SELECT fuserid FROM INSERTED); END END
推荐阅读