查看: 2475|回复: 2
ebs不能为更新或删除保留记录
论坛徽章:2
ebs不能为更新或删除保留记录
ebs11.0的form二次开发,在块的触发器on-update中加入更新语句,
& &update sdcd.zdeco_head_all&&
& && & set zdeco_head_id& &&&= 104707,& &
& && & zdeco_head_number = 'lyh_00006',
& && & STATUS_TYPE& && & = '制单'
& &where& &zdeco_head_id& &&&= 104707
& &----此语句在pl/sql developer2000中可执行
运行程序,新增一条记录,此记录会产生zdeco_head_id=104707
单号zdeco_head_number输入:lyh_00006,变更状态STATUS_TYPE输入:新建
按工具栏上的保存按钮,显示新增成功。
在窗口'变更状态'栏位(STATUS_TYPE字段),想把'新建'改为'制单',刚输入'制',就弹出窗口提示:
& &FRM-40501:ORACLE错误:不能为更新或删除保留记录.
& &---------------------------------------
& &ORA-00904:无效列名
这是什么原因呢,哪位帮帮忙呀??????????????????& &
表结构如下:
-- Create table
create table SDCD.ZDECO_HEAD_ALL
&&ZDECO_HEAD_ID& && &&&NUMBER not null,
&&ZDECO_HEAD_NUMBER& & VARCHAR2(15),
&&STATUS_TYPE& && && & VARCHAR2(10) not null
tablespace DEVELOPD
&&pctfree 10
&&pctused 40
&&initrans 1
&&maxtrans 255
& & initial 560K
& & next 56K
& & minextents 1
& & maxextents 500
& & pctincrease 0
-- Create/Recreate primary, unique and foreign key constraints
alter table SDCD.ZDECO_HEAD_ALL
&&add unique (ZDECO_HEAD_NUMBER)
&&using index
&&tablespace DEVELOPX
&&pctfree 10
&&initrans 2
&&maxtrans 255
& & initial 168K
& & next 56K
& & minextents 1
& & maxextents 500
& & pctincrease 0
-- Create/Recreate indexes
create index SDCD.ZDECO_HEAD_ALL_ID on SDCD.ZDECO_HEAD_ALL (ZDECO_HEAD_ID)
&&tablespace DEVELOPX
&&pctfree 10
&&initrans 2
&&maxtrans 255
& & initial 112K
& & next 56K
& & minextents 1
& & maxextents 500
& & pctincrease 0
论坛徽章:0
路过看看了~
论坛徽章:10
& &都说了无效列名,应该是某张表里没这个栏位名啊。
itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有
北京市公安局海淀分局网监中心备案编号: 广播电视节目制作经营许可证:编号(京)字第1149号本帖子已过去太久远了,不再提供回复功能。 下面要说的是网站中一个常见的功能,在客人使用抵用券或者其他来支付的时候需要验证密码,如果密码输入错误5次就锁定,不在让客人使用抵用券了,在这里是使用的cookie来实现的,不太严谨。思路很简单,在输入密码错误的时候,使用cookie保存2个变量,一个是标识当前客人是否已经被锁定,这个只保存30分钟,一个是记录输入错误次数,这个可以长时间保存。函数根据是否锁定弹出相应的信息if(输入密码错误){&&& if(锁定标识为false)&&& {&& & 保存出错次数为1;&& & 返回锁定状态为false;&&& }&&& else&&& {&& & 取出出错次数;&& &if(出错次数小于5)&& &{&& &&&& 累加出错次数并保存;&& &&&& 返回锁定状态为false;&& &}&& &else&& &{&& &&&& 保存锁定状态标识30分钟;&& &&&& 设置出错次数为0并保存;&& &&&& 返回锁定状态为true&& &}&&& }&& &&& &&& &}else{&&& 返回锁定状态为false}
function logInputFaile() {
//var count = document.getElementById("userErrCoun").
//var lockTim = document.getElementById("userPinLocTim").
var uidErrCoun = document.getElementById("Userid").value + "userErrCoun";
var PinLoc = document.getElementById("Userid").value + "userPinLocTim";
var count = getCookie(uidErrCoun);
var lockTim = getCookie(PinLoc);
if (lockTim == null || lockTim == "") {
var expireDate = new Date();
expireDate.setTime(expireDate.getTime() + 24 * 60 * 60 * 1000);
if (count == null || count=="") {
//第一次输入错误
setCookie(uidErrCoun, 1, expireDate.toGMTString(), "/");
return false;
var expireDate = new Date();
expireDate.setTime(expireDate.getTime() + 24 * 60 * 60 * 1000);
var count = getCookie(uidErrCoun);
if (count &= 5) {
//出错小于5次
setCookie(uidErrCoun, ++count, expireDate.toGMTString(), "/");
return false;
//大于5次,锁定账号
var expireDate = new Date();
expireDate.setTime(expireDate.getTime() + 30 * 60 * 1000);
setCookie(PinLoc, "userPinLocTim", expireDate.toGMTString(), "/");
deleteCookie(uidErrCoun, "/");
return true;
return true;
这里很想说明一下设置cookie的过期时间,本来想找到一个类似于adddays()这样的方法,但是javascript中没有类似的方法,只有一个setTime,并且要和getTime搭配之用,其他的方法如setDate(day)是设置当前时间中的天,这个和我们的目的有点差别,一般我们想要设置当前这个cookie多长时间内过期,而不是在一个具体的时间点过期,所以大多数时间我们的思维是:保存用户账号50天,而不是从现在开始计算好50天,然后再当前时间基础上设置天数为50,并且还要考虑50天之后是几号,月份是多少,年份是多少,如果闰年就更麻烦了。
dateObject.getTime():getTime() 方法可返回指定的日期dateObject距 1970 年 1 月 1 日之间的毫秒数。dateObject.setTime(millisec):setTime() 方法以时间据 GMT 时间 1970 年 1 月 1 日午夜之间的毫秒数设置 Date 对象。
所以只要获取当前时间距离格林威治时间的毫秒数,再加上想要过期的时间的毫秒数,在使用setTime设置就可以得到正确的过期时间。
最后调用这个函数,如果返回true就证明锁定了,弹出提示,为false证明未被锁定。代码如下: 方法中用到的工具方法setCookie和getCookie是javascript中读写cookie的包装方法,原型请参考另外一篇随笔
阅读(...) 评论()
作者:Tyler Ning
出处:/tylerdonet
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。