【问题标题】:Checking due time against now date根据现在日期检查到期时间
【发布时间】:2017-07-13 15:47:30
【问题描述】:

我有一个包含患者相关信息的数据库,必须每 12 小时更新一次。有两个班次执行更新(白天和晚上),每个班次必须为每位患者每班执行一次任务。我的目标是让任何在轮班期间查看数据库的用户都能够知道该任务是否已在该患者身上执行。

由于应为每位患者在每个班次执行一次任务,因此白班(上午 6:30 - 下午 6:30)的用户需要能够查看子表单并查看任务是否已完成的指示所以他们知道这样做。下午 6 点 30 分,指示灯应重置,向夜班指示该班的任务尚未完成,当然,一旦任务完成,该指示灯将被解决。

** For example: The current date/time is 7/12/2017 14:00 

Patient                Last timestamp           Due
Patient A             7/12/2017 03:40          True
Patient B             7/12/2017 10:40          False
Patient c             7/12/2017 11:40          False

Then, when the next shift arrives at 6:30PM, those same patients will reset

Patient                Last timestamp           Due
Patient A             7/12/2017 03:40          True
Patient B             7/12/2017 10:40          True
Patient c             7/12/2017 11:40          True

** During the night, as they perform the task

Patient                Last timestamp           Due
Patient A             7/12/2017 21:20          False
Patient B             7/12/2017 23:40          False
Patient c             7/13/2017 03:58          False

我认为提供每位患者最近的时间戳的查询将帮助我确定该问题的部分答案。

SELECT [Pt-VAP_1].IntubationIDNumber, Max([Pt-VAP_1].VapDateTimeStamp) AS 
MaxOfVapDateTimeStamp, Last([Pt-VAP_1].VapIDNumber) AS LastOfVapIDNumber
FROM [Pt-VAP] INNER JOIN [Pt-VAP] AS [Pt-VAP_1] ON [Pt-VAP].VapIDNumber = 
[Pt-VAP_1].VapIDNumber
GROUP BY [Pt-VAP_1].IntubationIDNumber;

我遇到的问题是找到一种在晚上 7 点到早上 7 点之间正确给出这个答案的方法,日期会发生变化。有没有办法做到这一点?

希望我对问题的编辑能够提供更多信息来帮助我找到解决方案。同样,如果需要,我将非常乐意更新这篇文章。我还使用以下 Dlookup 公式来获取值以提供我认为需要的一些信息。

任何帮助将不胜感激。

vapCK = DLookup("[VapCharted]", "[03-LastVapCharting]", "[IntubationIDNumber]=" & [IntIDNo])
vapDTStamp = DLookup("[MaxOfVapDateTimeStamp]", "[03-MaxDateVap]", "[IntubationIDNumber]=" & [IntIDNo])
vapLastRCP = DLookup("[Last RCP]", "[03-LastVapCharting]", "[IntubationIDNumber]=" & [IntIDNo])

【问题讨论】:

  • 最简单的方法是查找用户需要的记录(可能只是最后一两条记录),然后让他们查看并确定是否已完成。可能的?您可以按时间戳按 desc 顺序(最新的优先)对相关表进行排序并返回前 1 或 2。
  • 我已经阅读了您的问题 3 次,但仍然不知道您到底想要什么。请澄清你的问题。如果记录已被编辑,您想向用户显示。为什么这只是晚上 7 点到早上 7 点之间的问题?用户如何编辑记录(表单/表格/其他?)?每 12 小时更新一次是否会重置某些内容?该更新意味着什么?如果您知道自己没有提供足够的信息,请在最初询问时提供更多信息。
  • 任务对生存至关重要(如果您的程序失败且任务未完成,人们会死或受伤)吗?然后将其留给专业人士(购买解决方案)!否则留下更好的信息how to ask

标签: ms-access vba ms-access-2016


【解决方案1】:

如果我正确理解了您的问题,您可以尝试这样的方法。

获取上次更新的日期时间,通过在上次更新后加上 12 小时来计算下一次更新到期,并将其与 Now() 进行比较。

Public Function IsUpdateRequired() As Boolean

    Dim lastUpdatedOn As Date
        lastUpdatedOn = #7/11/2017 6:30:00 AM#  'DLookup("DateLastUpdated", "TableName")

    Dim nextUpdateOn As Date
        nextUpdateOn = DateAdd("h", 12, lastUpdatedOn)

    IsUpdateRequired = (nextUpdateOn <= Now())
End Function

紧凑形式:

Public Function IsUpdateRequired() As Boolean
    IsUpdateRequired = (DateAdd("h", 12, DLookup("DateLastUpdated", "TableName")) <= Now())
End Function

【讨论】:

  • 感谢到目前为止的所有答案,我明天将尝试此功能,看看是否有帮助。
  • 这修复了下一个由于+12h,我猜他只是想检查它是否在实际班次中完成。但我认为两个会费之间应该有一个最小的差异(似乎不需要在上一班的最后一分钟完成和在实际班次的第一分钟完成)
  • 是的,我已经尝试过了,但它不能做我想做的事。从业者很可能只在一个班次中检查一次数据库。这种检查可以在他们轮班内的任何时间进行。如果白班放置了一个与 12 小时时间重叠的时间戳,它似乎已经完成。是否无法每天在 6:30 重置两次 12 小时制时钟,并向用户指示是否在重置时间之后输入了日期时间/戳记?
  • 在回答之前,我需要确认您不会因应用程序故障而伤害任何人(请参阅我对您的问题的评论),因为Intubation 听起来像病人无法呼吸,这表明严重如果您的应用错过了监控,则会出现问题。
  • @BitAccesser 不用说,如果任务对生存至关重要,OP 必须将其交给专业人士。对于这些事情,有很多更好的解决方案。
猜你喜欢
  • 1970-01-01
  • 2017-02-15
  • 1970-01-01
  • 2011-06-09
  • 2011-05-11
  • 2022-01-03
  • 1970-01-01
  • 2013-08-01
  • 1970-01-01
相关资源
最近更新 更多