访问计算字段

时间:2014-12-23 18:42:13

标签: access-vba ms-access-2007

我很难尝试制作一个我需要的计算字段。所以这就是我想要做的: 我有一个查询,它结合了基于三个表的信息。应用程序最重要的字段如下:

Family Income   Age    Patient
    15,000      18       Yes 
    28,000      25       No
    30,000      1        Yes

从这里开始,我想制作一个计算字段,根据这些字段提供患者登记的正确程序,即:

Program      Minimum Income   Maximum Income   Minimum Age   Maximum Age Patient
Children's       0              20,000            1             19        Yes
Adult            0              12,000            19            65        No
Non Patient      0              20,000            1             19        No
Adult 2       12,000            50,000            19            65        No
Etc.

创建:

Family Income   Age    Patient    Program
15,000          18       Yes      Children's
28,000          25       No       Adult 2
30,000          1        Yes      Children's 2

我知道我可以使用IIf将其硬编码到现场,但随着指南的变化,其他人很难更新信息。是否可以将信息存储在表格中?并使用表格等信息,或者我需要使用IIf

任何想法?是否可以使用VBA动态创建SQL中的IIf,同时从表中提取信息?

EDIT ::: 感谢您的回复和格式化我的表格,我仍然不知道您是如何更改它的,但它看起来很棒!

我尝试添加您在下面添加的SQL,但我无法使其正常工作。我不确定我是否犯了错误,所以我包含了查询的SQL。查询当前返回0值,所以我想我搞砸了。 (真正的查询令人尴尬......我很抱歉)。不幸的是,我已尽力避免使用SQL,现在我付出了代价。

SELECT qry_CombinedIndividual.qry_PrimaryApplicant.[Application Date],
      qry_CombinedIndividual.qry_PrimaryApplicant.[Eligibility Rep],
      qry_CombinedIndividual.qry_PrimaryApplicant.Name,
      qry_CombinedIndividual.qry_PrimaryApplicant.Clinic,
      qry_CombinedIndividual.qry_PrimaryApplicant.Outreach,
      qry_CombinedIndividual.qry_PrimaryApplicant.[Content Type ID],
      qry_CombinedIndividual.qry_PrimaryApplicant.[Application Status],
      qry_CombinedIndividual.qry_PrimaryApplicant.Renewal,
      qry_CombinedIndividual.qry_Enrolled.EthnicityEnr,
      qry_CombinedIndividual.qry_Enrolled.GenderEnr, qry_CombinedIndividual.AgeAtApp,
      qry_CombinedIndividual.[Percent FPL], tbl_ChildrensMedical.MinPercentFPL, 
      tbl_ChildrensMedical.MaxPercentFPL, tbl_ChildrensMedical.MinAge,
      tbl_ChildrensMedical.MaxAge, tbl_ChildrensMedical.Program
 FROM qry_CombinedIndividual 
      INNER JOIN tbl_ChildrensMedical ON qry_CombinedIndividual.qry_Enrolled.Patient = tbl_ChildrensMedical.Patient
    WHERE (((qry_CombinedIndividual.AgeAtApp)>=[tbl_ChildrensMedical].[MinAge] 
    And (qry_CombinedIndividual.AgeAtApp)<[tbl_ChildrensMedical].[MinAge]) 
    AND ((qry_CombinedIndividual.[Percent FPL])>=[tbl_ChildrensMedical].[MinPercentFPL] 
    And (qry_CombinedIndividual.[Percent FPL])<[tbl_ChildrensMedical].[MaxPercentFPL]));

还有许多不同的节目。这是真正的儿童表(最终我想在可能的情况下添加成人)
*请注意,实际表格使用FPL(考虑到家庭规模,但使用与收入相同)。关于你如何形成表格我完全失去了。

Program             Patient   MinPercentFPL MaxPercentFPL   MinAge  MaxAge  
SCHIP (No Premium)    No           0             210          1       19  
SCHIP (Tier 1)        No         210             260          1       19  
SCHIP (Tier 2)        No         260             312          1       19  
Newborn               No           0             300          0       1  
Newborn (Patient)    Yes           0             300          0       1  
Children's Medical   Yes           0             200          1       19  
CHIP (20 Premium)    Yes         200             250          1       19  
CHIP (30 Premium)    Yes         250             300          1       19  

我的表格是否正确?或者我应该改变什么。如果有帮助的话,我也可以发送更多的信息/样本数据。

再次感谢你!

1 个答案:

答案 0 :(得分:0)

我刚刚使用您的示例数据创建了一些表,并使用了以下SQL。您的第3个“患者”与任何范围(1岁,收入$ 30K)都不匹配

SELECT tblPatient.PatName, tblPatient.FamInc, tblPatient.Age, tblPatient.Patient,
 tblPatientRange.Program, tblPatientRange.MinInc, tblPatientRange.MaxInc, tblPatientRange.MinAge,
 tblPatientRange.MaxAge, tblPatientRange.Patient
FROM tblPatient INNER JOIN tblPatientRange ON tblPatient.Patient = tblPatientRange.Patient
WHERE (((tblPatient.FamInc)>=[tblPatientRange]![MinInc] And (tblPatient.FamInc)<=[tblPatientRange]![MaxInc]) 
AND ((tblPatient.Age)>=[tblPatientRange]![MinAge] And (tblPatient.Age)<=[tblPatientRange]![MaxAge]));