首页 文章

访问:表单,子表单和查询

提问于
浏览
0

根据我在过去几天所做的搜索,我想要实现的目标应该相当简单,但我发现的任何东西都没有解决我的问题 . 这是我第一次使用Access或SQL . 对问题的长度提前道歉 .

基本上我需要从一个表中获取一个值并将其与另一个表中的另一个表相乘,然后通过表单和子表单将结果存储在第二个表中 .

The Problem:

我正在尝试创建项目数据库,其中一部分是报价工具 . 该数据库有几个表,涵盖了我们项目经理的所有必需输入,其中大多数都链接到其父表的PK .

我当前的尝试有一个表单( frmJobDetails ),提供每个项目的详细信息(链接到 tblJobs ) . 此表单有两个子表单:

  • frmJobRolesSubform 详细了解谁在项目中扮演什么角色(特别是他们的销售率 .

  • frmJobProcessesSubform 详细说明了任务,分配给哪个任务以及估计完成的小时数 .

两个子表单都链接到它们自己的表(分别为 tblJobs_RolestblJobs_Processes ) .

frmJobProcessesSubformfrmJobRolesSubform 获取处理项目及其角色的人员,以便经理可以将人员分配给 frmJobProcessesSubform 上的任务 . 这是通过组合框完成的: cboRole .

到现在为止还挺好 .

我喜欢子窗体上的字段来计算任务的成本,然后将其存储在 tblJobs_Processes 中 .

My Attempts

我试图构建一个调用 cboRole 的查询( qryProcessCost ),作为Field单元格或Criteria单元格中的表达式( [Forms]![frmJobsProcessesSubform]![cboRole] ) .

当表单从子表单中选择时,'m aware this can'm获取了对于 [Forms]![frmJobsProcessesSubform]![cboRole] 的输入请求 . 当示例值硬编码到查询中时,查询成功运行 . 显然,查询应该只返回一个值 .

我已经尝试将文本框的ControlSource设置为 [qryProcessCost]![dblProcessCost] (其中 dblProcessCost 是计算字段),但是这不能写入表格(据我可以推断) . 此外,我在单元格中出现 #Name? 错误,我似乎无法深究这一点 .

我已经尝试将组合框的RecordSource属性设置为 SELECT [qryProcessCost]![dblProcessCost] FROM [qryProcessCost] ,将ControlSource设置为表的相关字段 . 虽然这将是一个笨重的解决方案,它实际上无论如何都无法工作,因为它无法获得 [Forms]![frmJobsProcessesSubform]![cboRole] 的值 .

我已经尝试使用中间文本框来确定 cboRole 传递的值,我很满意 - 在 frmJobsRolesSubform 中分配的角色的主键 .

The Question:

我猜我现在可能不得不求助于VBA以获得我想要的东西,但我不熟悉Access VBA结构(尽管我已经使用了Excel VBA) .

任何人有任何想法,提示,建议或指针?

提前干杯,

亚伦

1 回答

  • 0

    如果其他人有类似的问题,我在下面发布了我的完整解决方案:

    我对我的引用实现了Gene的更正,它提供了一些东西,但是当表单上的字段被更改时,查询不会更新 . 正如我在问题中所提到的,出于可用性的原因,我也非常希望它是一个文本框而不是一个组合框,但不确定如何为文本框创建一个记录源和控制源 .

    我最终绕圈子,通过VBA和宏以及几种类型的错误发生了一个建议使用 DLookUp here . 我以前无法让他们为这个特殊问题工作,但这次我设法让它工作了 . 具体来说,我将 DLookUp 放在以下宏中:

    SetProperty
       Control Name  txtBudgetCost
       Property      Value
       Value         =DLookUp("[dblCostRate]","[tblJobs_Roles]","[pkJobs_RoleID]="[cboRole])*[txtBudg‌​etHours]
    

    此宏用于子窗体上相关字段的 After Update 事件 .

    将字段的value属性设置为 DLookUp 意味着我可以将文本框 txtBudgetCost 的Control Source属性设置为表中的相关字段,以获得所需的行为 .

    cboRoletxtBudgetHours 都是与字段 txtBudgetCost 在同一子窗体上的字段 .

    此解决方案的唯一问题是,在数据表视图中查看子窗体时,会为新记录行提供 #Name? 错误 . 我可能只需要在某个地方输入一些错误处理,尽管我还没有考虑到它应该是什么 .

    干杯,

    亚伦

相关问题