我对OO设计过程很新,所以请耐心等待....
我有两个实体,我需要建模为类,称为父和子(它足够接近实际的问题域).一位家长将有一个或多个孩子 - 在这个申请中,我对没有孩子的父母没有兴趣.
我的大脑出去吃午饭的地方是我需要能够找到另一个.在我的数据库中,我可以使用正常的外键关系实现它,并且SQL的基于集合的特性使得查找给定父项的所有子项或给定子项的父项变得容易.但作为对象......?
我认为家长应携带儿童的集合(列表,无论如何).我还认为每个孩子都应该提及其父母.然而,参考文献的循环性质让我头疼.
我是:
这几乎肯定会在VB.NET中实现,但我还是可以通过切割代码来实现.
8个答案后编辑:
谢谢大家.很难选择一个接受的答案.
澄清答案中提出质疑的几件事:
再次感谢.
MS Access 2007 表单设计视图属性表公开了一些颜色选项,我似乎无法找到用于在代码中使用它们的常量。具体来说:Text Dark
、Text Light
、Background Dark Header
和Background Light Header
。
是否存在这些预定义常量?我在对象浏览器或帮助中似乎没有它们。否则,有没有人知道他们的 RGB 十六进制值?
我使用的技术类似于Remou对这个问题的回答,以操纵子窗体上控件的性能.伟大工程只要父窗体的记录至少有一个记录.如果父表单没有记录,我得到:
错误2455,"您输入的表达式对属性表单/报表具有无效引用."
尝试递归调用时抛出错误.下面是代码的简化版本(我已经删除了错误处理和更多案例,包括其他案例).此代码位于Module中,并从我的应用程序中的大多数表单的Load事件中调用:
Public Sub LockUnlockForm(frmLoad As Form)
Dim ctl As Control
For Each ctl In frmLoad.Controls
With ctl
Select Case .ControlType
Case acTextBox, acComboBox, acCheckBox
.Locked = Not gblnAuthorized
Case acSubform
LockUnlockForm .Form '<--- this line errors
End Select
End With
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
我想在现在给我问题的表单上做的是在父级创建一个新记录,并允许用户将数据添加到子表单(如果gblnAuthorized
为True,或者设置一个简单的消息,如果它是False).在打电话之前我别无选择LockUnlockForm
吗?创建新的父表单级记录是否可以防止此错误?