Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 基于Access中相同表中的相似记录更新非连续记录_Database_Ms Access_Merge_Fill - Fatal编程技术网

Database 基于Access中相同表中的相似记录更新非连续记录

Database 基于Access中相同表中的相似记录更新非连续记录,database,ms-access,merge,fill,Database,Ms Access,Merge,Fill,我正在寻求有关如何解决问题的帮助,而不是代码解决方案。我是一名军队儿科医生,正在尝试制作一个Access desktop DB/应用程序,该应用程序可以方便地识别有特殊需求但未注册到特殊需求计划的患者,然后自动完成注册这些患者的一些繁重工作 我有2张Excel电子表格,上面有患者数据。一个是我所有病人的名单,另一个是已经登记的有特殊需要的病人名单。我对导出的内容没有任何控制权,因此我们必须处理我们得到的内容: 所有病人: 患者姓名(“最后,第一个M”)(字符串) 初始最后4个(“A4873”-

我正在寻求有关如何解决问题的帮助,而不是代码解决方案。我是一名军队儿科医生,正在尝试制作一个Access desktop DB/应用程序,该应用程序可以方便地识别有特殊需求但未注册到特殊需求计划的患者,然后自动完成注册这些患者的一些繁重工作

我有2张Excel电子表格,上面有患者数据。一个是我所有病人的名单,另一个是已经登记的有特殊需要的病人名单。我对导出的内容没有任何控制权,因此我们必须处理我们得到的内容:

所有病人:

  • 患者姓名(“最后,第一个M”)(字符串)
  • 初始最后4个(“A4873”-姓的第一个字母,赞助商SSN的最后4个字母)(字符串)
  • 家庭电话(字符串)
  • 年龄(整数)
  • DOB(日期)
  • 性别(男/女)(弦乐)
  • 现役(是/否)(字符串)
  • 提供者(字符串)
  • 地址(字符串)
特殊需要:

  • 名字(字符串)
  • 姓氏(字符串)
  • 中间首字母(字符串)
  • 赞助商SSN(仅当角色=赞助商时)(字符串)
  • 角色(担保人、配偶或子女)(字符串)
限制条件:高安全环境中的MS Office 2013;已禁用加载项和宏。我可以运行我自己包含的任何VBA代码,并包含系统上已经存在的引用。不允许使用第三方打包解决方案

步骤1:将这两个导入到一个包含我的所有患者及其注册状态的通用表中。这将需要重复,因为源数据将每月更新一次

问题1:没有公共标识符。我能够将所有患者的姓名字段拆分为LastName,FirstName;然而,FirstName(实际上是FirstName+Middle)不一定会与另一个列表的名字匹配,而且我不能保证两个列表中都会找到一个名字,因为与军队中经常走动的人相关的数据不完整

唯一可以用来在每个数据库中生成唯一的、可匹配的密钥的数据是姓名和赞助人的社会保险号码的组合。所有患者都有InitLast4,因此我们至少可以获得赞助商SSN的最后四位数字,特殊需求有完整的赞助商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用作密钥的一部分,必须为其他家庭成员填写。我找到的所有“填充缺少的数据”教程都谈到了一种填充方法,其中数据是连续的,这在这里不起作用-主办方的顺序与家庭其他成员不同。也不能保证赞助人的姓氏是孩子,但是如果没有其他的关键想法,数据丢失的频率很低,而且是可以接受的

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

另一种选择是查询具有SSN的所有记录的特殊需求,然后进行某种更新查询,该查询将匹配姓氏并填充SSN,具有上述相同的姓氏识别问题

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


同样,尽管欢迎直接解决方案,但最有用的帮助是如何解决这个问题。如果你能提供任何帮助,我将不胜感激

是的,但它们是非唯一值。一个家庭中的每个人都有相同的InitLast4(因为他们有相同的姓氏,每个家庭只有一个赞助商SSN)。直接目标是为所有患者提供一个单独的表格,并添加一个字段(例如“登记在特殊需要中”)。如果患者列在特殊需求数据源中,则他们已经登记。特殊需求来源由患者组织;制作文件的人只将赞助商SSN放在赞助商上,而不是所有家庭成员上,因此我想将该SSN传播给家庭成员。InitLast4开始发挥作用,因为发起人SSN的最后4位数字和名称是导入数据的唯一共同点。由于发起人在数据中的位置不同,我不能假设使用发起人SSN到达记录“启动”了一个系列部分-之前和之后的记录都可能是该系列的一部分,因此导航变得混乱。与其设置有特殊需要的家庭成员的SSN,不如为每个家庭设置一个唯一的ID。通过这种方式,您可以将尽可能多的特殊需要成员绑定到家庭ID,并将更多家庭成员附加到家庭ID。但是,这意味着,对于每个新患者,您必须询问他们是否有任何家庭成员已经在系统中。不管他们是否同意