根据Access

时间:2016-03-30 19:44:23

标签: database ms-access merge fill

我正在寻找有关如何解决问题的帮助,而不是代码解决方案。我是一名军事儿科医生,他试图制作一个Access桌面数据库/应用程序,这样可以轻松识别有特殊需求的患者,但是没有参加特殊需求计划,然后在注册这些患者时自动完成一些苦差事。

我有2个包含患者数据的Excel电子表格。一个是我所有患者的清单,另一个是已经参加特殊需求的患者名单。我对导出的内容没有任何控制权,因此我们必须处理我们得到的内容:

所有患者

  • 患者姓名(“Last,First M”)(字符串)
  • Init Last 4(“A4873” - 姓氏的第一个字母,赞助商SSN的最后4个)(字符串)
  • 家庭电话(字符串)
  • 年龄(int)
  • DOB(日期)
  • 性别(男/女)(字符串)
  • 现役(Y / N)(弦)
  • 提供者(字符串)
  • 地址(字符串)

特殊需要的

  • 名字(字符串)
  • 姓氏(字符串)
  • 中间首字母(字符串)
  • 赞助商SSN(仅限角色=赞助商)(字符串)
  • 角色(赞助商,配偶或子女)(字符串)

CONSTRAINTS: MS Office 2013在高安全性环境中;插件和宏被禁用。我可以运行我自己包含的任何VBA代码,并包含已存在于系统中的引用。不允许使用第三方打包解决方案。

第1步:将这两者都导入到我所有患者及其登记状态的公共表格中。这将需要重复,因为源数据将每月更新一次。

问题1:没有通用标识符。我能够将姓名字段从All-Patients拆分为LastName,FirstName;但是,FirstName(实际上是FirstName + Middle)不一定与其他列表的名字相匹配,我不能保证在两个列表中都会找到一个名称,因为与人们频繁移动相关的数据残羹剩饭军队。

可用于在每个中创建唯一的,匹配的密钥的唯一数据是名称和赞助商的社会安全号码的某种组合。 All-Patients有InitLast4,所以我们至少可以获得赞助商SSN的最后四位数,而Special-Needs拥有完整的赞助商SSN。如果您看到其他方法可以从上述数据中创建独特的匹配密钥,请大声说出来!

问题2:特殊需求仅在赞助商的记录中包含赞助商SSN,因此您最终会得到以下内容:

LastName   FirstName      SSSN      Role
---------------------------------------------
Jones      Mother                   Spouse    
Jones      Daughter                 Child
Jones      Father      555-55-5555  Sponsor
Jones      Son 1                    Child
Jones      Son 2                    Child

为了将赞助商SSN用作密钥的一部分,必须为其他家庭成员填写。我发现的所有“填充缺失数据”教程都谈到了FillDown方法,其中数据是连续的,这在这里不起作用 - 赞助商不是相对于其他家庭订购的。也不能保证赞助商的名字与孩子一样,但没有其他关键想法,这是一种不经常和可接受的数据丢失。

我认为这里的解决方案是通过VBA,通过循环或查询的某种组合以编程方式填充它,但我不知道如何以有效的方式处理它。一种选择是按姓氏排序,存储姓氏,循环并将具有该姓氏的每条记录添加到临时记录集,循环通过它以识别赞助商SSN,然后再次循环以将数据添加到记录中想念它。这危险地取决于从来没有多个具有相同姓氏的家庭 - 例如,它无法区分姓氏为Brown的两个家庭,并且会不加选择地分配SSN。

另一种选择是查询具有SSN的所有记录的特殊需求,然后查找与姓氏匹配并填充SSN的某种更新查询,并具有上述相同的姓氏歧视问题。

结论:如果我可以可靠地组合这些数据源(以可重复,简单的方式),应用程序的其余部分是微不足道的(基本上单击一个按钮并发送包含此人信息的电子邮件)特殊需要协调员)。如果唯一的解决方案是劳动密集型的,那么我们在当前工作流程中没有获得太多收益(手动扫描列表中的患者姓名以查看他们是否在其上,如果没有,请向协调员写一封电子邮件)。

同样,虽然欢迎直接解决方案,但最有用的帮助是如何解决这个问题。我很感激您提供的任何帮助!

0 个答案:

没有答案