以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于多表、多窗口协同工作的例子  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=555)

--  作者:贺老六
--  发布时间:2008/9/17 12:13:00
--  关于多表、多窗口协同工作的例子
下面是cpayinyuan提出的要求和文件
 

关于列表框功能的事例说明

1、假设系统中有两个表,其中工资表管理工资数据,员工表中保存的是员工的信息。

2、需要重点说明的是员工表,这个表的结构虽然简单,但却是一个目前的管理系统中非常流行非常经典的一种新形式的存储表结构,它能实现无级分层。即同一个表中既保存有层次信息,又保存有最底层的员工信息。在本表中,只有最底层的(即“是否末级”为 True的行,注意它不一定是第3层)的姓名才是真正的员工姓名,而其他的行记录,它只是一个员工类别的名,并不是真正的员工姓名,这就需要在使用本表的员工姓名时,只能选择“是否末级”为True的行,而不能选择为False的行,因为它是层次信息。采用这种表结构的好处是在同一个表中实现了对大量数据的分层管理,日常维护非常方便。

在实际的用户看到的员工列表窗口是这样的,打开员工列表窗口,默认情况只显示层次为1的职员(注意,层次为1的可能是一个层次,但也可能是一个真正的职员,若是否末级为True,则为职员,否则,是一个层次),当用户在某个数据行上双击(或点击打开下级按钮时),若这行数据的是否末级为False,则在窗口中打开当前行的所有下层(即查询“上层ID”等于当前行的“员工ID”的行),再双击,再打开下层,直到显示的是最下层为止(即是否末级为True).

或许您会说,这样的表结构这么复杂,有什么必要呢?在数据量很少的时候,看起来的确很麻烦,也没有多大用途,但在数据量非常大的时候,这种表结构就表现出非常大的灵活性,这么固定层次的管理方式要方便、灵活得多。目前一些比较出名的财务软件,ERP软件的基本信息的表结构,基本上都采取这种方式,或者与之类似。

2、我想实现的功能是:在窗口1中需要输入一个员工姓名时,通过按钮打开窗口2,窗口2中有一个大的列表框,列表框中缺省先显示员工表中层次为1的记录,当用户在某一行上双击时,若当前行的“是否末级”为True,则把当前行的员工姓名输入窗口1的姓名框中,如果当前行的“是否末级”为False,则重新刷新窗口2中的列表内容,把列表框中的内容刷新为刚才光标行的所有下层(即上层ID等于刚才光标行的员工ID的行),再双击,依次类推,直到选择到一个末级的姓名为止(即是否末级为True的一行记录),把姓名读入窗口1的姓名输入框中。

另外,在选定一个真正的员工之前,如果操作员点击“返回上层”按钮,则刷新列表框中的内容,刷新为当前显示记录的上一层(若原来显示的是第3层,则改为显示第2层,若若原来显示第2层,则改为显示第1层)。

在窗口2中,若操作员想增加一个新员工,点击“添加员工”按钮,自动打开“员工添加”窗口(员工表的窗口3),添加新员工,注意只允许用户输入“姓名”字段,员工ID,层次,上层ID,是否末级字段都是由系统根据添加的员工的位置自动产生的。添加完成后,返回到窗口2,继续选择员工。


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:员工管理1.table


--  作者:贺老六
--  发布时间:2008/9/17 12:14:00
--  
这是我根据他的要求设计的例子:

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:员工管理.table

[此贴子已经被作者于2008-9-17 12:25:25编辑过]

--  作者:zhuxiangji
--  发布时间:2008/9/17 12:19:00
--  

学习中!


--  作者:kylin
--  发布时间:2008/9/17 12:22:00
--  
学习先!
--  作者:smileboy
--  发布时间:2008/9/17 12:24:00
--  
学习
--  作者:lxl
--  发布时间:2008/9/17 12:42:00
--  

感觉这种层次关系,用TreeView 比 ListBox 好一点点.


--  作者:狐狸爸爸
--  发布时间:2008/9/17 12:44:00
--  
以下是引用lxl在2008-9-17 12:42:00的发言:

感觉这种层次关系,用TreeView 比 ListBox 好一点点.


呵呵,同感,我更喜欢TreeView,方便多了。
不过cpayinyuan要求这样的,之前我也提出过用TreeView会方便很多。


--  作者:cpayinyuan
--  发布时间:2008/9/17 12:54:00
--  
以下是引用狐狸爸爸在2008-9-17 12:44:00的发言:


呵呵,同感,我更喜欢TreeView,方便多了。
不过cpayinyuan要求这样的,之前我也提出过用TreeView会方便很多。

      呵呵,的确很好用,感谢贺老师的辛勤工作!我也对狐表更充满信心了!可能有很多用户更喜欢用TreeView,其实我个人认为用TreeView也许更好,层次更清晰,但我这儿的很多操作员在使用很多软件的过程中已经习惯了这种方式,而且目前也有很多知名软件采取这种方式,的确很不错,我再稍微把它改进一下,同时显示多列,就更完美了!同时,也希望大家注意认真学习这种多层次表的表结构,这是一个很有用的实现方式,也是我以前认真研究其他软件的表结构才发现的,望大家共同学习!
    另外,贺老师,晚一会我再做一个要求多窗口查询的表结构和要求,麻烦贺老师再辛苦一下,谢了!我想,如果多窗口查询的事例也能做得像这个窗口输入这么好用,相信大家对狐表会更有信心的!!!

--  作者:lxl
--  发布时间:2008/9/17 13:16:00
--  
以下是引用cpayinyuan在2008-9-17 12:54:00的发言:
      呵呵,的确很好用,感谢贺老师的辛勤工作!我也对狐表更充满信心了!可能有很多用户更喜欢用TreeView,其实我个人认为用TreeView也许更好,层次更清晰,但我这儿的很多操作员在使用很多软件的过程中已经习惯了这种方式,而且目前也有很多知名软件采取这种方式,的确很不错,我再稍微把它改进一下,同时显示多列,就更完美了!同时,也希望大家注意认真学习这种多层次表的表结构,这是一个很有用的实现方式,也是我以前认真研究其他软件的表结构才发现的,望大家共同学习!
    另外,贺老师,晚一会我再做一个要求多窗口查询的表结构和要求,麻烦贺老师再辛苦一下,谢了!我想,如果多窗口查询的事例也能做得像这个窗口输入这么好用,相信大家对狐表会更有信心的!!!

恩,这种层次结构有一个很大的好处,就是可以通过自联接进行查询.比如:
Select a.姓名 AS 主管部门,b.姓名 As 下属 FROM {员工表} a INNER JOIN {员工表} b ON a.员工ID = b.上层ID WHERE a.层次 = 1 
当然最后的条件也可以是a.层次 = 2  或者 3或者4。 可以查询各个层次的部门,及其下属.

通过关联也能实现这种结构,但是层次比较多,或者层次数目不定的时候,关联就有心无力了.


--  作者:狐仙
--  发布时间:2008/9/17 13:18:00
--  

我也比较喜欢树状目录,那样会比较清晰点,不知那些个大软件为何要做成这样的方式。