豆仔玩库(26):“管家婆”特训第7课——完善控件建系统

软件世界

  在上期,豆仔为大家介绍了家庭事物管理系统界面的建立,可只有一个简单的界面是远远不够的。这期,豆仔将为大家介绍对控件的具体设置,以便初步完成家庭事物管理系统。

  1.改良窗体控件

  上期最后讲到“文本框”控件的使用,但由于家庭成员的数量不会很多,输入姓名从下拉列表中选择会更加快捷。为此,我们需要将 “姓名”文本框修改为组合框。首先右击 “姓名”文本框,选择快捷菜单“更改为”子菜单下的“组合框”,就可以将文本框更改为组合框。接着给组合框的“行来源”赋值就可以了,如图1所示。

  2.添加操作按钮

  为了方便记录的输入和浏览,我们需要在“成员信息录入”窗体中添加四个命令按钮,以便查看上一条(下一条)记录以及删除和保存当前记录。添加命令按钮只须打开工具箱,单击其中的“命令按钮”在窗体的空白处拖动,就可以打开“命令按钮向导”。由于添加的命令按钮只对所在窗体中的记录有效,所以姓名输入部分的按钮应放在主窗体的主体部分,而收入的输入部分的按钮,可以放在子窗体的主体或页脚部分。根据需要选中向导对话框“类别”下的“记录导航”,一步步就可以完成按钮的设置了。 按照相同的方法,我们就可以给窗体添加“上一条记录”、“删除当前记录”和“保存当前记录”等按钮了。

  3.控制其他窗体

  当我们在“成员信息录入”窗体中选择了某个家庭成员的记录以后,单击“个人收入”等按钮应当打开相应的窗体,完成对该成员的记录输入任务。为此,我们需要在窗体中添加四个控制按钮。

  添加这些按钮的方法与上面介绍的基本相同,只是打开“命令按钮向导”以后应该选择“类别”下的“窗体操作”和“操作”下的“打开窗体”;接下来确定该按钮要打开的窗体,选中向导对话框中列出的某个窗体继续“下一步”。按照提示一步步完成按钮的制作。

  重复上述操作就可以在“成员信息录入”窗体中放入其余几个按钮,从而完成操作和控制按钮的添加任务。为了使窗体更加美观,我们可以在“设计视图”中打开窗体,将窗体中的控件移动到更合适的位置,最后完成如图2所示的“成员信息录入”窗体。

  “匹配字段”直接关系到“成员信息录入”窗体中显示的成员与其他窗体输入的信息能否正确对应,必须使用具有惟一性的字段,例如“成员编号”和“亲友编号”之类的字段。

  4.建立其他窗体

  为简单起见,建立主窗体仍然利用向导。它使用的数据源仍然是“家庭成员”表,“可用字段”选择“成员编号”和“姓名”,选中后单击“>”按钮将它们放入“选定的字段”列表,然后根据向导的提示进行操作就是了。

  在主窗体中插入子窗体需要使用“工具箱”,按下Access 2003工具栏中的“工具箱”按钮即可打开。首先按下“工具箱”中的“控件向导”按钮,然后按下“子窗体/子报表”按钮,鼠标在如图3窗体的空白处(没有控件的位置)拖动,就可以在主窗体中插入一个空白窗体并打开“子窗体向导”。

  使用向导的第一步是选择是否使用现有的窗体,如果是的话就可以在对话框中选择了,这里应该单击“下一步”按钮继续。第二步是从一个或多个表(查询)中选择字段,请打开“表/查询”下拉列表选择“表:个人收入”,然后单击“>>”按钮将所有字段放入右侧的“选定字段”列表中。第三步非常关键,向导会要求用户选择“是自行定义将主窗体链接到该子窗体的字段,还是从下面的列表中进行选择”。在本文的这个实例中,由于主窗体使用的表(家庭成员)已经和子窗体使用的表建立了“一对多”的关系,选中“从列表中选择”继续下一步就可以了。最后一步需要给子窗体命名,然后单击“完成”将带有控件的子窗体插入主窗体。

  此后我们只须选中刚才插入的子窗体,单击“视图”菜单下的“属性”命令,就可以打开对话框修改子窗体的各种属性。

  重复上述操作就可以在主窗体中插入第二个子窗体,如果必要还可以插入第三、第四个子窗体。如果子窗体较多,可以按下“工具箱”中的“选项卡”控件按钮,在窗体中插入一个选项卡。然后按这里介绍的方法给每个选项卡放一个子窗体。

  为了避免用户浏览窗体时不慎破坏数据,只要将窗体属性中的“允许编辑”等关闭,只保留“允许筛选”即可。

  5.计算公式设计

  按照前面的设想, “家庭成员收入明细”子窗体的页脚需要放置公式,以便计算出“个人收入”表中与主窗体“成员编号”对应记录的“收入金额”合计。此时应该在这个子窗体的页脚放置一个文本框,将文本框的标签命名为“收入合计”,然后在文本框内插入公式“=DSum(“[收入金额]”,“[个人收入]”,“[个人收入]![成员编号] = Forms![家庭成员]![成员编号]”)”。该公式使用了域聚合函数DSum,它的参数由三部分组成。第一部分“[收入金额]”用于标志待求总和的数字字段,说明对“收入金额”字段求和;第二部分“[个人收入]”是标志组成域的一组记录,例如表或查询的名称,这里就是对“个人收入”表求和;第三部分是用于约束执行DSum 函数的数据范围,“[个人收入]![成员编号] = Forms![家庭成员]![成员编号]”的意思是计算“个人收入”表中“成员编号”等于“家庭成员”窗体中“成员编号”的那些记录。假如主窗体中的“成员编号”显示“2”,则上述公式就会计算“个人收入”表中“成员编号”等于“2”的所有记录的“收入金额”的合计。

  同理,我们在“家庭成员支出明细表”的子窗体中放置名为“支出合计”的文本框,在其中插入公式“=DSum(“[支出金额]”,“[个人支出]”,“[个人支出]![成员编号] = Forms![家庭成员]![成员编号]”)”,从而计算出某个家庭成员的支出合计。

  最后,在主窗体的页脚插入一个名为“收支合计”的文本框。为简单起见,这里将上面两个公式组合为“=DSum(“[收入金额]”,“[个人收入]”,“[个人收入]![成员编号] = Forms![家庭成员]![成员编号]”)-DSum(“[支出金额]”,“[个人支出]”,“[个人支出]![成员编号] = Forms![家庭成员]![成员编号]”)”,就可以计算出主窗体显示的某个家庭成员的收支合计了。

  如图4所示窗体用作数据输入也是可以的,大家只要将窗体和子窗体属性中的“允许编辑”等属性设置为“是”即可。

  到这期为止,豆仔为大家简单地介绍了一下整个家庭管理系统的建立。虽然像报表的建立等高级主题还未给大家介绍,但豆仔只是想抛砖引玉,更多的实践技巧还需读者们在实践中体会了。