本帖最后由 kimi 于 2013-9-5 12:01 编辑
Q:不是通过平台创建的表,如果到数据库客户端操作直接往该表单查询数据后,在平台前台数据显示不出来,需要在后台映射表单中点击同步数据后,才能显示,能否在前台视图点击同步后,数据也能在前台显示呢?
A:您好:在平台创建映射表单时,会选择一个主键,后台同步数据的逻辑上判断该表单中这个主键的值,在t_document表单中是否存在,这里的主键和t_document表的MAPPINGID字段进行关联的,所以在视图的操作按钮中可以写脚本判断,具体代码类似如下:
- var sql="select id as item_mappingid,'"+getDomainid()+"' as domainid,id from userinfo where id not in (select MAPPINGID from t_document)";//获取在映射表单存在的数据但是在t_document表不存在
- println(sql+"======sql======");
- var datas=queryBySQL(sql);
- if(datas!=null && datas.size()>0){
- for(var iter = datas.iterator();iter.hasNext();){
- var doc = iter.next();
- if(doc!=null){
- println(doc+"=====doc===");
- var uuid = new Packages.cn.myapps.util.sequence.Sequence().getSequence();
- var MAPPINGID=doc.getItemValueAsString("MAPPINGID");
- println(MAPPINGID+"====MAPPINGID===");
- var FORMNAME='映射表单';
- var AUTHOR=getWebUser().getId();
- var CREATED=$TOOLS.DATE_UTIL.getDateTimeStr(getToday());
- var FORMID='11e3-15d3-48fa6953-849b-afffaa71b5a1';
- var APPLICATIONID=getApplication();
- var LASTMODIFIER=getWebUser().getId();
- var DOMAINID=getDomainid();
- var sql2="INSERT INTO kimisp8test.dbo.T_DOCUMENT (ID,LASTMODIFIED,FORMNAME,AUDITDATE,AUTHOR,CREATED,FORMID,ISTMP,VERSIONS,APPLICATIONID,LASTMODIFIER,DOMAINID,MAPPINGID) VALUES ('"+uuid+"',null,'"+FORMNAME+"',null,'"+AUTHOR+"','"+CREATED+"','"+FORMID+"',0,1,'"+APPLICATIONID+"','"+LASTMODIFIER+"','"+DOMAINID+"','"+MAPPINGID+"')";
- println(sql2+" ======sql2====");
- insertByDSName("kimisql",sql2);
- }
- }
- }
复制代码 第一步:配置映射表单如下图所示:
第二步:在映射表单对应视图的按钮中写代码实现同步数据:
第三步:前台进行同步数据如下图:
通过sql语句查询没有在t_document表中不存在的数据,如下图所示:
前台映射表单中,也没有显示这条数据,如下图所示:
前台同步后效果如下图所示:
|