云广

云广的blog
随笔 - 5, 评论 - 12 , 引用 - 15

2004年12月18日

创建一个自动增量序列生成器

在oracle中

 

CREATE SEQUENCE

Emp_sequence

 

INCREMENT BY 1

 

START WITH 1

 

NOMAXVALUE

 

NOCYCLE

 

CACHE 10;

然后在插入数据时候可以通过如下代码实现:

insert into users (U_Id,u_username,u_password,u_level)

values

(Emp_sequence.NEXTVAL,'yunguang','haha','0')

 

其中U_Id为表users的主键。

这样就可以实现在U_Id上产生自动增量效果!

 

 

具体的可视化操作还没有找到,晕!!!

posted @ 16:27 | Feedback (5)

使用TreeView实现无限级扩展节点

功能实现要求:

操作环境vb.net和oracle9i

 

由于数据量很大,所以不能利用rs结果集一次读出,在往treeview节点上填充。

需要填充树型节点的字段内数据形式为以"."分割

如:01   01.01 01.02 01.01.01 02 02.01 02.01 ............................

利用oracle自身instr函数,可以按"."数分割。并返回所需要的结果集,初始化加载读取不带"."字段,第一次读取带一个"."…………

至于sqlserver数据库与oracle的函数书写略有不同,可以到google,csdn等地方去查找。

sql语句的大致写法如下:

If pDotCount = 0 Then
                    sqlString = "select t.需要分割的字段,t.cname from 表名 t where Instr(t.icsn, '.', 1, 1)=0"
                Else
                    sqlString = "select t.需要分割的字段,t.cname from 表名 t where Instr(t.icsn, '.', 1," & pDotCount & ")>0 and Instr(t.icsn, '.', 1, " & (pDotCount + 1) & ")=0 and Instr(t.icsn,'" & pParent & "',1,1)=1"
                End If

pDotCount为需要读取的字段中"."的个数

然后通过双击事件获得父节点(即为选中节点),sql语句中pParent,返回属于该父节点的子节点,这样一级一级双击即可实现无限扩展,直至走到数据最后一层为止

检索定位任一节点

主要是在于初始选择节点的定位。此处略去,如有兴趣,可以直接和我联系,互相学习。

 

MSN:yun15291li@hotmail.com

Email:ygyunguang@yahoo.com.cn

posted @ 2:16 | Feedback (3)

根据部门判断进入版块的权限

Segment表中,有三个字段,segmentIdsegmentNamesegmentRight

分别表示权限序号(从1开始),模块名,访问权值。其中segmentRight=2segmentId-1次方,

  

     segmentId=1segmentRight=1 (对应二进制1

     segmentId=2segmentRight=2(对应二进制10

     segmentId=3segmentRight=4(对应二进制100

     segmentId=4segmentRight=8

     segmentId=5segmentRight=16

 

     ......

     相当于 segmentRight 的第0位代表segmentId=1的模块访问权限,

            segmentRight 的第1位代表segmentId=2的模块访问权限,

            segmentRight 的第2位代表segmentId=3的模块访问权限,

            segmentRight 的第3位代表segmentId=4的模块访问权限,

            ......

     而在部门表里的Segment=上面segmentRight之和,比如,Segment=7,其二进制为0111

则表示该部门对segmentId123的模块具有访问权。换句话说,测试部门表里的Segment

字段的各个二进制位,即可知该部门是否具有对某模块的访问权。

 

    Segment表进行单独管理,增、删、改操作。

 

    对部门表的管理,增加权限的设置,即显示已有的可操作模块,操作者进行选择,然后

将选中的各模块的 segmentRight 值加起来,赋予部门表里的Segment字段。

 

    访问模块的权限判断流程如下:

 

    用户点击某模块-->Segment表中通过segmentName(模块名)取出该模块的segmentRight值,

                     同时从部门表中取出该部门的segment

                  -->segment值和segmentRight值进行“位与”操作,即 segment & segmentRight,

                  -->如果“位与”的结果等于segmentRight,则该部门具有操作该模块的权限,

                     使用户进入该模块的操作。

                  -->如果“位与”的结果等于0,则拒绝该用户进入该模块的操作。

相关代码以及讨论者请按如下方式联系:

MSN:yun15291li@hotmail.com

Email:ygyunguang@yahoo.com.cn

posted @ 2:00 | Feedback (3)

京ICP备 05050892号