知识大全 [范例]怎样判断画布中有重复记录(Forms 6i)

Posted

篇首语:金鞍玉勒寻芳客,未信我庐别有春。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 [范例]怎样判断画布中有重复记录(Forms 6i)相关的知识,希望对你有一定的参考价值。

[范例]怎样判断画布中有重复记录(Forms 6i)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  最完美的解决方法 自己编写代码 可以产生精确的报错信息 及检查出新输入数据内的重复问题     由于when validate item 不能使用go_item() first_record等 而when new item instance却允许 所以 可以这样处理   以基本表(id主键 name remark 行每页界面)     在id(主键)的下一导航项 设置为check_uniqueness_button   check_uniqueness_button为这个块内的一个按钮 它的when new item instance担任检查该行的重复情况的功能 代码见本贴附录     另外 手工按check_uniqueness_button 也会执行这段代码 产生手工检查重复情况的功能       附录代码     declare   temprecord number;   tempval varchar ( );   temp_count number := ;     BEGIN   go_item( base_table id );     temprecord := :system cursor_record;   tempval := :base_table id;      first_record;      if :system current_value is not null then 如果有记录 开始运算    loop    if :base_table id = tempval and :system cursor_record <> temprecord then    temp_count := temp_count + ;    message( 代码有重复 请检查第 || :system cursor_record    || 行 代码: || :base_table id || 名称: ||:base_table name);    message( 代码有重复 请检查第 || :system cursor_record    || 行 代码: || :base_table id || 名称: ||:base_table name);      end if;    next_record;    if :system current_value is null then    exit;    end if;    end loop;       if temp_count = then    message( 该行代码没有重复 );    end if;    go_record(temprecord);   go_item( base_table name );   else    message( 光标所有行没有代码为空 请先将光标放在有数值的地方 );    message( 光标所有行没有代码为空 请先将光标放在有数值的地方 );   end if;   END;   附录   check_record_uniqueness 可以检查一个数据块(Data Block)内 主键有无重复的记录     使用方法举例    Block 上 先设定一个item是主键    在主键字段的 when validate item trigger 上 加入如下代码      check_record_uniqueness;   if not form_sucess then    clear message;    message(数据有重复! );   end if;     以上代码 可以使用户每输入一条记录时 系统自动检查主键有无重复     优点 速度快 代码简单     缺点 只能应用于主键     最致命的缺点 经测试后我发现 它只能检查新输入的数据 与已存盘的数据有无重复 如果新输入的记录与未存盘的记录重复 它不会报警!     使用建议      只可用于比较简单的场合 及用户每次输入的资料数目比较少的情况 如果用户大批量输入 如每次输入几十条 甚至上百条 使用check_record_uniqueness便会心惊胆跳了 因为谁也不能保证 新输入的数据内会否有重复      如果不是应用于主键 如果每次用户输入量可能比较大 建议自行编写查重复的代码        本文为原创 by armok cha138/Article/program/Oracle/201311/17307

相关参考

知识大全 oracle中利用merge语句防止重复插入

  由于项目中需要用到批量插入为了防止用户插入重复的数据需要先判断插入的数据是不是已经存在如果存在则忽略这次插入否则插入这条数据刚开始的时候是先用一条SQL语句判断如果返回结果是真(记录已经存在)则忽

知识大全 删除完全重复和部分关键字段重复的记录

  重复记录分为两种第一种是完全重复的记录也就是所有字段均重复的记录第二种是部分关键字段重复的记录例如Name字段重复而其它字段不一定重复或都重复  第一种重复很容易解决不同数据库环境下方法相似  M

知识大全 oracle删除重复记录方法

  删除重复记录方法实例  假设有一个员工表emp有字段emp_noDELETEFROMEMPE WHEREEROWID>(SELECTMIN(XROWID) FROMEMP

知识大全 有关重复记录地删除(SQLSERVER)

有关重复记录地删除(SQLSERVER)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!以下就重复记

知识大全 Oracle删除重复记录

Oracle删除重复记录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  经过测试最高效的一种(万

知识大全 Oracle中查找重复记录

Oracle中查找重复记录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一背景  一张pers

知识大全 在SQL中删除重复记录(多种方法)

在SQL中删除重复记录(多种方法)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  学习sql有一

知识大全 求助,从画布怎么拖拽到另一个画布

求助,从画布怎么拖拽到另一个画布PS中直接用鼠标左键按住要拖动图片,直接拖动到目标文档释放就可以了。painter怎么把一个画布上的移到另一个画布上你不会是直接在画布上画的吧?要新建一层画画布是默认锁

知识大全 在SQL Server中快速删除重复记录

在SQLServer中快速删除重复记录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishixi

知识大全 Oracle数据库删除重复记录的方法

Oracle数据库删除重复记录的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  做项目的时候