普达建站快车,网站建设与管理收获,高密网站制作,android开发工具箱专业版【问题记录】在编辑数据信息时发现辩护的数据无法保存#xff0c;提示
“ORA-01799: 列不能外部联接到子查询”
仅展示的数据来自主表#xff0c;这部分都是关联子表重点内容#xff0c;编辑时无法保存 于是想将扩展表作为主表#xff0c;在主表进行修改试试
新的报错提示
“ORA-01799: 列不能外部联接到子查询”
仅展示的数据来自主表这部分都是关联子表重点内容编辑时无法保存 于是想将扩展表作为主表在主表进行修改试试
新的报错
ORA-01779: 无法修改与非键值保存表对应的列
看来单表可以使用Oracle APEX原生的联表增删改只能手敲SQL 【问题记录】展示的是主表数据关联扩展子表无数据点击编辑会报错究其原因编辑的是子表最新一条数据子表无数据自然查不到了 【解决方法】新建项给编辑按钮加上条件判断子表有数据则显示编辑按钮
项-源-类型“SQL查询”返回单个值-已使用“始终替换会话状态中的任何现有值”
给编辑入口添加标识符P261_IS_DATA
select COUNT(PLATFORM_DEMAND_HIS_ID)
from DIGITAL_PLATFORM_DEMAND Dleft join DIGITAL_PLATFORM_DEMAND_HIS Hon D.PLATFORM_DEMAND_ID H.PLATFORM_DEMAND_IDand D.TENANT_ID H.TENANT_ID
where H.PLATFORM_DEMAND_ID :P261_PLATFORM_DEMAND_ID
order by H.PLATFORM_DEMAND_HIS_ID desc; 判断子表有数据则显示编辑按钮
想要显示/隐藏的按钮-服务器端条件-类型 “项不为零”-项 “P261_IS_DATA” 效果如图所示
没有子表记录就不显示编辑按钮 有子表记录就显示编辑按钮 同理想要根据用户身份控制需求等级字段的显示/隐藏新增一个标帜项P271_IS_SHOW
select distinct count(1) from DIGITAL_USER_GROUP_DETAILS where upper(USER_ID) upper(:U_ID) and USER_GROUP_ID in (300018,300121,300120); 【开发小技巧】多个条件合并成一个
之前提到创建项并根据项值判断是否展示按钮/项值/页面但是如果要判断多个条件直接判断单项显然不够这里有两个方案表达式或函数体点击要设置条件的按钮- 服务器端条件- 类型 “表达式” 语言“PL/SQL” PL/SQL表达式 将新建的条件项作为判断写入
(:P261_IS_DATA ! 0 and :P261_IS_SHOW ! 0 and :P261_IS_EDIT ! 0)
(:P261_IS_DATA ! 0 and :P261_IS_SHOW ! 0 and :P261_IS_EDIT ! 0)
新建项P261_IS_DATA 项-源-类型“SQL查询”返回单个值-已使用“始终替换会话状态中的任何现有值”
select COUNT(PLATFORM_DEMAND_HIS_ID)
from DIGITAL_PLATFORM_DEMAND Dleft join DIGITAL_PLATFORM_DEMAND_HIS Hon D.PLATFORM_DEMAND_ID H.PLATFORM_DEMAND_ID-- and D.TENANT_ID H.TENANT_ID
where H.PLATFORM_DEMAND_ID :P261_PLATFORM_DEMAND_ID
order by H.PLATFORM_DEMAND_HIS_ID desc;P261_IS_SHOW
select distinct count(1) from DIGITAL_USER_GROUP_DETAILS
where upper(USER_ID) upper(:U_ID)
and USER_GROUP_ID in (300018,300121,300120);P261_IS_EDIT
select distinct count(1) from DIGITAL_USER_GROUP_DETAILS
where upper(USER_ID) upper(:U_ID)
and USER_GROUP_ID in (300018,300120); 【问题记录】使用APEX原生交互式网格编辑报错
ORA-01799: 列不能外部联接到子查询 ORA-02014: 不能从具有 DISTINCT, GROUP BY 等的视图选择 FOR UPDATE 破案了 【交互式网格】使用了共享组件类型无法设置为“仅显示”问题的解决 对应的项-只读 设置为“始终” 执行“每一行”
效果 在函数里套函数
场景
需求负责人有的带工号有的不带工号要求全都不带工号
逻辑1.0
业务方提报需求的时候会有一个需求负责人扩展表在需求更新中也会更新需求负责人在展示时优先展示扩展表中的数据当扩展表中无需求负责人数据时会展示主表数据
COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON) AS OWNER
COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON) AS OWNER --需求负责人 对应代码
select * from (
select D.PLATFORM_DEMAND_ID, --需求idD.DEMAND_TITLE, --需求名称D.INITIATOR_NAME,--提出人D.DEMAND_CONTENT,--需求描述D.INITIATOR_DEPT_NAME,--业务提出方D.IS_SHOW,--是否在需求进度中展示 1展示 0不展示H.DEMAND_GRADE,--需求等级H.DEMAND_CP,--业务对接人COALESCE(H.DEMAND_OWNER,D.CHARGE_PERSON) AS OWNER, --需求负责人H.PROGRESS,--进度COALESCE(H.STATUS,D.STATUS) AS STATUS, --状态H.CREATED_BY,--创建人H.CREATION_DATE,--创建时间H.UPDATED_BY,--更新人用户IDH.UPDATOR,--更新人文本H.UPDATED_DATE--更新时间
from DIGITAL_PLATFORM_DEMAND Dleft join (select * from (select rank() over (partition by s.PLATFORM_DEMAND_ID order by PLATFORM_DEMAND_HIS_ID desc ) rn,s.PLATFORM_DEMAND_HIS_ID,s.PLATFORM_DEMAND_ID,s.TENANT_ID,s.DEMAND_GRADE,s.DEMAND_CP,s.DEMAND_OWNER,s.PROGRESS,s.STATUS,s.IS_UPGRADE,s.UPDATOR,s.CREATED_BY,s.CREATION_DATE,s.UPDATED_BY,s.UPDATED_DATE,s.DEL_FLAGfrom DIGITAL_PLATFORM_DEMAND_HIS swhere s.DEL_FLAG 0) where rn1) Hon D.PLATFORM_DEMAND_ID H.PLATFORM_DEMAND_ID
-- and D.TENANT_ID H.TENANT_IDwhere D.SOURCE PLATFORM --中心级需求and to_char(D.CREATED_DATE, yyyy) 2024and D.DEL_FLAG 0)
逻辑2.0
出现 时截取截取括号前的人名
SELECT SUBSTR(COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON), 1,INSTR(COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON), () - 1) AS result --只截取有的数据select D.PLATFORM_DEMAND_ID, --需求idD.DEMAND_TITLE, --需求名称
SUBSTR(COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON), 1,INSTR(COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON), () - 1) AS result --只截取有的数据
from DIGITAL_PLATFORM_DEMAND Dleft join DIGITAL_PLATFORM_DEMAND_HIS Hon D.PLATFORM_DEMAND_ID H.PLATFORM_DEMAND_ID-- and D.TENANT_ID H.TENANT_IDand H.PLATFORM_DEMAND_HIS_ID (select MAX(e.PLATFORM_DEMAND_HIS_ID)from DIGITAL_PLATFORM_DEMAND_HIS ewhere e.PLATFORM_DEMAND_ID D.PLATFORM_DEMAND_ID);
缺点是只能截取有 的数据之前没有工号的数据直接不截取也不显示 逻辑3.0
在最外面再套一层DECODE函数DECODE函数里加一个函数来判断 出现次数
select (length(10,CLARK,MANAGER)-length(replace(10,CLARK,MANAGER,,,)))/length(,) as result from dual; --返回结果2 -- 1、统计字符出现次数 -- 如统计以下字符串逗号出现次数 -- 字符串的总长度减去去掉逗号之后的字符串长度就得到了逗号的个数 -- 第 1 行调用 LENGTH 函数获取字符串总长 第 2 行仍然调用 LENGTH 函数获取不含逗号的字符串长度而逗号的删除则借助了REPLACE 函数 -- 版权声明本文为博主原创文章遵循 CC 4.0 BY-SA 版权协议转载请附上原文出处链接和本声明。 -- 原文链接https://blog.csdn.net/jungeCSND/article/details/123875365
select decode((length(COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON)) -length(replace(COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON), (, ))) / length((), 0, 没有工号, 1,有工号) 若为0则没有工号执行逻辑1.0为1则有工号执行逻辑2.0。
select decode((length(COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON)) -length(replace(COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON), (, ))) / length((), 0, COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON), 1,SUBSTR(COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON), 1,INSTR(COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON), () - 1)) AS OWNERS, --真正的需求负责人
select decode((length(COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON)) -length(replace(COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON), (, ))) / length((), 0, COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON), 1,SUBSTR(COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON), 1,INSTR(COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON), () - 1)) AS OWNERS, --真正的需求负责人 代码
--DESCRIBE:P232 需求概览去除需求负责人工号
select D.PLATFORM_DEMAND_ID, --需求idD.DEMAND_TITLE, --需求名称COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON) AS OWNER, --需求负责人
-- SUBSTR(COALESCE(H.DEMAND_OWNER,D.CHARGE_PERSON),1,instr(COALESCE(H.DEMAND_OWNER,D.CHARGE_PERSON),(,-1))OWNER2,decode((length(COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON)) -length(replace(COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON), (, ))) / length((), 0, 没有工号, 1,有工号),decode((length(COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON)) -length(replace(COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON), (, ))) / length((), 0, COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON), 1,SUBSTR(COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON), 1,INSTR(COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON), () - 1)) AS OWNERS, --真正的需求负责人SUBSTR(COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON), 1,INSTR(COALESCE(H.DEMAND_OWNER, D.CHARGE_PERSON), () - 1) AS result --只截取有的
from DIGITAL_PLATFORM_DEMAND Dleft join DIGITAL_PLATFORM_DEMAND_HIS Hon D.PLATFORM_DEMAND_ID H.PLATFORM_DEMAND_ID-- and D.TENANT_ID H.TENANT_IDand H.PLATFORM_DEMAND_HIS_ID (select MAX(e.PLATFORM_DEMAND_HIS_ID)from DIGITAL_PLATFORM_DEMAND_HIS ewhere e.PLATFORM_DEMAND_ID D.PLATFORM_DEMAND_ID); 【出现问题】筛选展示列的时候只能看到部分字段无法看到全部
【问题原因】未打开该项的“排序”等
【问题解决】找到对应的项在 列 -“使用户可以 ” 打开排序就可以看到该条件 【小技巧】获取当前时间的两种方式
方式一选中项-默认值 SQL表达式 select sysdate from dual 方式二选中项-默认值 函数题 :sysdate 【小技巧】使用自定义编辑后页面设置刷新失败
原
使用 动态操作 时间 事件-对话框已关闭 选择类型-JavaScript表达式 JavaScript表达式-window 真操作 刷新 新
使用 动态操作 时间 事件-对话框已关闭 选择类型-区域 区域-需求详情 真操作 执行JavaScript代码 设置 代码- window.location.reload() 【问题记录】明明有值但是新加了需求方对接人就报错
ORA-02014: 不能从具有 DISTINCT, GROUP BY 等的视图选择 FOR UPDATE解决方法为表中的项添加别名 在用户开始更新过程以后, 数据库中数据的当前版本已经更改。 学到了了测试方法
sql报错处理ora-01722:invalid number_ora01722无效数字报错-CSDN博客
-- 检查您的数据库中是否存在无法转换为数字的字符串值,记得将【】换成英文’[]’
SELECT mycolumn
FROM mytable
WHERE REGEXP_LIKE(mycolumn, [^0-9]);
正常转换 无法正常转换 好像知道怎么个事儿了STATUS状态在数据库里存的是number类型0和1表示状态但是apex中存的是文本字段自然冲突 破案了是STATUS类型转换有问题 修改后 修改成功
【问题记录】
长文本长度过长无法完全展示
【解决方法】
设置CSS样式
参考
oracle apex 交互式网格自动换行_oracle自动换行-CSDN博客https://blog.csdn.net/qq_45808673/article/details/133992353
/* 悬浮样式 */
.longlinedots{max-width: 900px; /*设置容器最大宽度*/white-space: nowrap; /* 设置段落文本不换行(不换行才有可能行溢出)*/overflow: hidden; /* 关闭滚动条超出部分隐藏*/text-overflow: ellipsis; /* 超出部分添加省略号*/
}
/*给该选择器添加悬浮事件实现悬浮显示全部内容*/
.longlinedots:hover {overflow: visible;white-space: inherit;
}/* 直接显示为换行 */
.a-GV-table td {word-wrap: break-word;overflow-wrap: break-word;overflow: initial;white-space: initial;text-overflow: initial;
} 效果展示 通过CSS设置文本内容自适应换行 交互式网格编辑报错 【开发方法】图表默认未选择条件时默认展示所有
之前的做法是给两个筛选条件设置默认值展示默认数据 默认条件一专项 默认条件二P0 代码
select
project_owner,
COUNT(project_owner) 数量
from jas_project_masterwhere
to_char(start_date,yyyy) 2024
and project_class :P205_CONDITION_1
and important_grade :P205_CONDITION_2
GROUP BY project_owner
ORDER BY 数量 desc改造后条件项不用给默认值
代码
select
project_owner,
COUNT(project_owner) 数量
from jas_project_masterwhere
to_char(start_date,yyyy) 2024
and (project_class :P205_CONDITION_1 or nvl(:P205_CONDITION_1 ,ALL) ALL)
and (important_grade :P205_CONDITION_2 or nvl(:P205_CONDITION_2 ,ALL) ALL)
GROUP BY project_owner
ORDER BY 数量 desc;
关键函数
NVL()
直接在条件中做判断若是为空则默认全选