网站建设| 数据库类| 图形图象| 程序设计| 现代办公| 操作系统| 考试认证| 网络技术| 软件工程| 电脑相关| 文学作品
网站开发| 网页制作| 操作系统| 图象图形| 考试认证| 数据库类| 程序设计| 硬件技术| 现代办公| 网络技术| 笑话频道
 
您的位置: 电脑书库首页-> 电脑文摘-> 程序设计-> Basic/VB类-> 利用VB动态设计多“主细表”应用

利用VB动态设计多“主细表”应用
作者:佚名 来源:InterNet 加入时间:2003-7-24
相关文章
  • VB图像处理之图像的亮度对比度调整
  • VB实现文件数据对SQL Server上传下载
  • 用VB6.0编写磁盘格式化程序
  • VB图像处理之图像的色彩纠正
  • VB图像处理之铅笔画算法和木雕算法
  • VB图像处理之几个常用滤镜的实现
  • VB图像处理之二次线性插值的应用
  • VB图像处理之像素的获取和输出
  • VB实现图像在数据库的存储与显示
  • 利用VB6.0开发基于IIS的应用程序
  • 相关书籍:
  • VBScript语言参考
  • VBScript函数速查手册
  • VBScript5.5脚本语言参考
  • VB上机考试综合应用题选讲
  • vb另外两套教案
  • VB光盘资料库
  • VB、C快速进阶 2.0
  • Web 对象 VB参考
  • VB编程技巧集(中)--站长推荐
  • VB编程技巧集(上)--站长推荐
  •  在开发人事管理软件的工程中,当我们建立一个职工档案记录时,通常都会遇到设计职工履历表、职工家属情况的问题,我这里介绍一种用“主细表”方法的开发思路。

      一.数据库的建立

      一个设计合理的数据库就是管理软件成功的一半。因此我们在开发之初就应该先慎重设计好数据库的结构。笔者在开发人事管理软件时建立一个名为:HR.mdb的数据库,该库包括下面三个表:
     

    职工的自然情况一般是下面这些内容的:(Employee)
    职工姓名性别出生日期民族政治面貌婚否……
    职工履历表的内容一般是下面这些内容的:(Vita)
    起始时间终止时间所在单位及部门任职情况……
    职工家属情况一般是下面这些内容的:(Relative)
    亲人姓名与本人关系所在单位及部门任职情况……

      很显然,Employee与Vita和Relative表之间是“一对多”的关系。即一条Employee记录对应多条Vita和Relative记录,亦即Employee为主表,Vita和Relative为细表。由于在设计ACCESS数据库时每个表必须要有一个主关键字(PrimaryKey),因此笔者设计了一个“职工ID”字段作为三个表相互连接的字段,同时也作为Employee表的主关键字。而另外两个表的主关键字就采用自动编号(AutoNum)字段了。

      二.建立表之间的连接

      数据库设计好之后就可以着手设计各种应用,但程序设计中关键的问题是如何建立“主细表”之间的连接。

      建立“主细表”之间的连接有两种方法:

      1、利用VB的数据窗体向导生成“主细表”的连接。

      根据向导,可以生成一个主表和一个细表的连接。但是这种方法生成的连接有它的缺陷。首先是它只能生成两个表的连接,对我们上面所说的情况就无能为力了;其次是开发者在为向导提供数据库时,系统把数据库的绝对路径加入了DATA控件,非常不利于程序的分发。下面介绍笔者使用的一种方法。

      2、动态创建“主细表”的连接

      新建一个Form,然后添加三个DATA控件和三个DBGRID控件。三个DATA控件的名称分别为:datPrimaryRS,datSecondaryRS,DatThirdRS;三个DBGRID控件的名称分别为:grdPrimaryRS,grdSecondaryRS,grdDatThirdRS。三个DATA控件Form上既没有指定DatabaseName,也没有指定RecordSource,只是在Form调用时才动态赋值。三个DBGRID控件倒是指定了所对应的DATA控件。下面是Form_Load()函数:
     

    PrivateSubForm_Load()
    datPrimaryRS.DatabaseName=App.path&“ HR.mdb”
    datPrimaryRS.RecordSource=
    "select*from[Employee]Orderby[职工ID]"
    datSecondaryRS.DatabaseName=App.path&“ HR.mdb
    datThirdRS.DatabaseName=App.path&“ HR.mdb
    '创建主表网格记录集
    datPrimaryRS.Refresh
    EndSub

      这里只是创建和显示了主表的数据,那么两个细表的数据如何创建和显示呢?从主细表的概念我们知道,我们查看主表的任何一条记录,细表必须同时显示出对应的多条记录。因此我们必须对主表的任何一条记录成为当前记录时触发的事件编码。而该事件就是Reposition。
     

    PrivateSubdatPrimaryRS_Reposition()
    Screen.MousePointer=vbDefault
    OnErrorResumeNext
    datSecondaryRS.Refresh
    DatThirdRS.Refresh
    '使网格与主表记录集同步
    datSecondaryRS.RecordSource="select[职工ID],
    [起始日期],[终止日期],[所在单位及部门],[任职情况]
    from[Vita]where[职工ID]="&datPrimaryRS.Recordset!
    [职工ID]&"Orderby[起始日期]"
    DatThirdRS.RecordSource="select[职工ID],[亲人姓名],
    [关系],[所在单位及部门],[任职情况]
    from[Relative]where[职工ID]="&
    datPrimaryRS.Recordset![职工ID]&""
    datSecondaryRS.Refresh
    DatThirdRS.Refresh
    '为dynasets和快照显示当前记录位置
    datPrimaryRS.Caption="当前记录:"&
    (datPrimaryRS.Recordset.AbsolutePosition+1)
    EndSub

      很显然,如果有三个、四个…等多个细表也可以如法炮制。

      至此,一个灵活的,表数不限的主细表连接就建立起来了。只要将三个DBGRID的AllowAddNew、AllowDelete和AllowUpdate三个属性设置为TRUE,那么就可以对这些主细表进行各种数据库表作了。

     

    [文章录入员:lpc]

    相关文章
  • VB图像处理之图像的亮度对比度调整
  • VB实现文件数据对SQL Server上传下载
  • 用VB6.0编写磁盘格式化程序
  • VB图像处理之图像的色彩纠正
  • VB图像处理之铅笔画算法和木雕算法
  • VB图像处理之几个常用滤镜的实现
  • VB图像处理之二次线性插值的应用
  • VB图像处理之像素的获取和输出
  • VB实现图像在数据库的存储与显示
  • 利用VB6.0开发基于IIS的应用程序
  • 相关书籍:
  • VBScript语言参考
  • VBScript函数速查手册
  • VBScript5.5脚本语言参考
  • VB上机考试综合应用题选讲
  • vb另外两套教案
  • VB光盘资料库
  • VB、C快速进阶 2.0
  • Web 对象 VB参考
  • VB编程技巧集(中)--站长推荐
  • VB编程技巧集(上)--站长推荐
  • 本站推荐内容

    近期主机类热搜关键词:
    美国服务器 美国服务器租用 海外服务器租用 国外服务器租用

    Basic/VB类
    C/C++/VC
    C++Builder
    Basic/VB类
    Delphi/Pascal
    Java编程
    FORTRAN
    其它
    电脑教程阅读排行
    ·VB学习一点通
    ·VB设计动画时钟
    ·在Visual Basic 6....
    · 用VB6.0编写手机短信发送 ...
    ·VB实现文件数据对SQL Ser...
    ·利用Visual Basic操作...
    ·VB实现图像在数据库的存储与显示
    ·用Visual Basic6.0...
    ·Visual Basic代码优化...
    · VB中实现“无标题”窗体的移动...