在Oracle Form中,如何实现自动编号(行号)的功能

方法一、
只需要将“序号”定义成公式,并将公式设置为:get_block_property(‘block_name‘,current_record)就可以实现了,或者把这行语句放到“When-Create-Record”触发器中。
缺点:增改删时,行号不能自动刷新。

方法二、
在block的三个触发器中添加相应的代码:
Key-Crerec:

DECLARE
  LINE NUMBER;
BEGIN
  LINE := :SYSTEM.CURSOR_RECORD;
  LOOP
    IF :SYSTEM.LAST_RECORD = ‘TRUE‘ THEN
      EXIT;
    ELSE
      NEXT_RECORD;
      :blk.ID := :SYSTEM.CURSOR_RECORD + 1;
    END IF;
  END LOOP;
  GO_RECORD(LINE);
  CREATE_RECORD;
  :blk.ID := :SYSTEM.CURSOR_RECORD;
END;

Key - Delrec:

DECLARE
  LINE NUMBER;
BEGIN
  DELETE_RECORD;
  LINE := :SYSTEM.CURSOR_RECORD;
  LOOP
    :blk.ID := :SYSTEM.CURSOR_RECORD;
    IF :SYSTEM.LAST_RECORD = ‘TRUE‘ THEN
      EXIT;
    ELSE
      NEXT_RECORD;
    END IF;
  END LOOP;
  GO_RECORD(LINE);
END;

When - Create - Record:

:blk.ID := :SYSTEM.TRIGGER_RECORD;

缺点:对于记录数很少的table适用,当table中的记录很多时,由于使用了循环操作,所以会影响效率。
为了防止按F11时也生成序号,影响查询,可以在生成前加入以下条件:
IF (:SYSTEM.MODE != ‘ENTER-QUERY’) THEN

时间: 2024-10-06 00:30:16

在Oracle Form中,如何实现自动编号(行号)的功能的相关文章

转: Oracle Form 中commit 与do_key('commit_form')区别

1.commit_form针对form上面的数据变动进行commit,对于代码中的类似update,insert语句也进行提交:如果form上面的数据变动和代码中的数据变动有冲突,最后以界面上的为准.2.do_key('commit_form')会首先寻找form下的triggers中的KEY-COMMIT这个trigger,并执行KEY-COMMIT中所写的代码.如果没有KEY-COMMIT这个trigger,则会针对form和代码一起提交.如果form上面的数据变动和代码中的数据变动有冲突,

vim配置文件 高亮+自动缩进+行号+折叠+优化

配置文件是网上找的,我把出错的几个地方改了下 将一下代码copy到 用户目录下 新建文件为  .vimrc保存即可生效: 如果想所有用户生效 请修改 /etc/vimrc (建议先cp一份) "========================================================================= " DesCRiption: 适合自己使用的vimrc文件,for Linux/Windows, GUI/Console " "

vim 配置文件 ,高亮+自动缩进+行号+折叠+优化

vim 配置文件 ,高亮+自动缩进+行号+折叠+优化 将一下代码copy到 用户目录下 新建文件为  .vimrc保存即可生效: 如果想所有用户生效 请修改 /etc/vimrc (建议先cp一份)"=========================================================================" DesCRiption: 适合自己使用的vimrc文件,for Linux/Windows, GUI/Console""

SQL Server之 (四) ADO增删查改 登录demo 带参数的sql语句 插入自动返回行号

SQL Server之 (四) ADO增删查改  登录demo  带参数的sql语句  插入自动返回行号 自己学习笔记,转载请注明出处,谢谢!---酸菜 1.什么是ADO.NET ADO.NET是一组类库,这组类库可以让我们通过程序的方式访问数据库,并以各种方式操作存储在其中的数据; ADO.NET是基于.NET FrameWork,与.NET FrameWork类库的其余部分是高度集成的 2.连接数据库的步骤 ①创建连接字符串 Data Source=XXX-PC; Initial Catal

EXTJS中的grid显示实际行号

添加一个新的功能 [javascript] view plaincopy Ext.grid.PageRowNumberer = Ext.extend(Ext.grid.RowNumberer, { width : 40, renderer:function(value, cellmeta, record, rowIndex, columnIndex, store){ if(store.lastOptions.params!=null){ var pageindex=store.lastOptio

Microsoft Office Word 中的公式自动编号

先插入公式,#,插入题注(交叉引用),生成了标号.此时整个公式是题注样式.在公式和标号之间插入一个样式分隔符. __________________________________________________ 作者:知乎用户链接:https://www.zhihu.com/question/19689000/answer/48425000来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 最终的效果或者这样 或者公式在行的最中间,序号在行的最右边,且序号在垂直位置

<原创>engine中地块的自动编号函数

/// <summary> /// 地块自动编号 /// </summary> /// <param name="cmbNumber">嘎查村编号</param> /// <param name="maxBlockNumber">SDE中查出的最大编号</param> /// <returns>返回地块编号</returns> private string GetBloc

Sqlite中使用rowid来表示行号,用于分页。

在SQLite的查询结果中显示行号,可以使用select rowid as RowNumber ,* from WSCLanguage: select rowid as RowNumber ,* from WSCLanguage ORDER BY CreateTime; select distinct keyword from articlecontent;  /* select last_insert_rowid()  aaa   返回最后一条记录ID*/ select *  from (se

修改VIM编辑器使其自动显示行号缩进

1.临时修改 在vi中,set tabstop=4 或 set ts=4 2.永久修改 vi --version 查看要修改的文件 如果是vim的话,修改~/.vimrc 如果是vi,修改~/.exrc 加上:set tabstop=4 set nu //显示行号 set nonu //不显示行号 3.vi /root/.bashrc 加入:alias vi=vim 4.set expandtab //把tab转换成空格 set shiftwidth=4 //When auto-indentin