2017-07-11 18 views
0

私は12時間ごとに更新する必要がある患者関連情報を持つデータベースを用意しています。更新を実行する2つのシフト(日:&夜間)があり、各シフトは、シフトごとに患者ごとに1回タスクを実行する必要があります。私の目的は、シフト中にデータベースを見ているすべてのユーザーが、タスクがその患者に対して実行されたかどうかを知ることができるようにすることです。現在の予定時刻を確認する

タスクは、患者ごとに1回ずつ実行する必要があるため、日シフト(6:30 am - 6:30 pm)のユーザーはサブフォームを見て、そのタスクが彼らはそれを知っているので完了しました。午後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]) 
+0

最も簡単な方法は、ユーザーが必要とするレコード(複数可)を検索することです - 多分ちょうど最後の1つのまたは2つのレコードを - そしてそれらを見て持って決めますそれが終わったならば。可能?関連するテーブルを降順(最新のもの)のタイムスタンプでソートし、トップ1または2を返すことができます。 – wazz

+1

私はあなたの質問を3回読んだことがあります。あなたの質問を明確にしてください。レコードが編集されている場合は、ユーザーを表示する必要があります。なぜこれは午後7時から午前7時の間にのみ問題ですか?ユーザーはレコード(フォーム/テーブル/その他)をどのように編集していますか? 12時間ごとに更新すると何かリセットされますか?その更新は何を伴いますか?十分な情報を提供していないことが分かっている場合は、最初に尋ねるときにもっと情報を提供してください。 –

+0

タスクは生存に不可欠ですか(プログラムが失敗してタスクが完了していない場合、人が死ぬか負傷する可能性がありますか?それからプロに任せて(解決策を買う)!それ以外の場合は、より良い情報を残してください(https://stackoverflow.com/help/how-to-ask)。 – BitAccesser

答えて

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 
+0

これまでのすべての回答をありがとう、明日この機能を試して、それが役立つかどうかを確認します。 –

+0

これは+ 12hのために次の問題を修正しています。実際のシフトで完了したかどうかを確認したいと思うでしょう。しかし、私は2つの会費の間にマイナスの違いがあるはずだと思う(前回のシフトの最後の分に行われたもので、実際のシフトの最初の1分間に行われたものが望んでいないと思われる) – BitAccesser

+0

はい、これを試しましたが、私が望むもの開業医は、たぶんシフトしたらデータベースをチェックするだけです。このチェックは、シフト内でいつでも実行できます。日時シフトが、その12時間の時間と何らかの形で重なるタイムスタンプを置くと、完了したように見えます。 6時30分に12時間のクロックを1日に2回リセットする方法はありませんか?リセット時間後に日付/時刻が入力された場合は、ユーザーに通知しますか? –

関連する問題