You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MS Access中基于年份、年日数生成患者就诊自动序列号

MS Access诊所就诊自动序列号生成方案

一、明确序列号规则

你需要的8位序列号格式:两位年份+三位年日数+三位当日就诊序号,比如2023年1月31日第12位患者是23031012,拆解细节:

  • 两位年份:取就诊年份后两位(2023→23)
  • 三位年日数:若按自然年计算则取当日在当年的天数(1月31日是第31天→031);若按自定义起始日(比如诊所财年)计算,则用你原公式算出天数后补前导零
  • 三位当日就诊序号:当天已录入的患者数+1,补前导零(第12位→012)

二、YearStartDate的优化输入方式

不要直接在表或查询中写固定值,建议做全局设置表方便修改:

  1. 创建表Setting_T,仅需一个字段:YearStartDate(日期/时间类型)
  2. 往表里录入一条记录,比如填01-Jan-2023(自然年起始)或你需要的自定义起始日
  3. 创建表单frm_Setting,绑定Setting_T表,只放一个日期控件绑定YearStartDate,后续修改起始日直接打开这个表单操作即可

三、自动生成VisitNumber的两种实用方法(无需复杂编码)

方法1:更新查询批量补录(适合已有记录或手动触发)

  1. 新建查询,选择VisitList_T表
  2. 切换到「更新查询」模式
  3. 选中VisitNumber字段,在「更新到」行输入以下公式:
    Format([VisitDate],"yy") & Format([VisitDate]-DLookup("YearStartDate","Setting_T")+1,"000") & Format(DCount("*","VisitList_T","VisitDate = #" & [VisitDate] & "#"),"000")
    
    若按自然年算年日数,直接替换为:
    Format([VisitDate],"yy") & Format(Format([VisitDate],"y"),"000") & Format(DCount("*","VisitList_T","VisitDate = #" & [VisitDate] & "#"),"000")
    
  4. 运行查询,所有记录的VisitNumber会自动填充

方法2:表单自动填充(新增记录时自动生成,推荐)

假设你用表单frm_VisitList录入患者信息:

  1. 打开表单的设计视图
  2. 右键表单空白处→「属性」→切换到「事件」选项卡
  3. 找到「Before Insert」事件,点击右侧的...按钮,选择「代码生成器」
  4. 在弹出的VBA编辑器里,粘贴以下代码(直接复制使用,无需修改):
    Private Sub Form_BeforeInsert(Cancel As Integer)
        ' 获取自定义起始日
        Dim startDate As Date
        startDate = DLookup("YearStartDate", "Setting_T")
        
        ' 计算年日数(补零到3位)
        Dim dayCount As String
        dayCount = Format(Me.VisitDate - startDate + 1, "000")
        ' 如果按自然年算,替换成下面这行:
        ' dayCount = Format(Format(Me.VisitDate, "y"), "000")
        
        ' 计算当日就诊序号(补零到3位)
        Dim dailySeq As String
        dailySeq = Format(DCount("*", "VisitList_T", "VisitDate = #" & Me.VisitDate & "#") + 1, "000")
        
        ' 组合生成最终序列号
        Me.VisitNumber = Format(Me.VisitDate, "yy") & dayCount & dailySeq
    End Sub
    
  5. 保存代码,关闭编辑器,回到表单视图。以后新增患者记录时,VisitNumber会自动生成

四、注意事项

  • 为避免多人同时录入导致序号重复,可在VisitList_T表的VisitNumber字段设置唯一索引:打开表设计视图,选中VisitNumber→右键→「索引」→设置「唯一」为是
  • 测试时先录入几条记录,核对序列号是否符合预期,比如按自然年计算的话,2023年1月31日第12位患者应生成23031012

内容的提问来源于stack exchange,提问作者Nouman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 16:25:21