私は診療所のAccess 2003データベースの管理を引き継いだ。残念なことに、DBを作成した人はデータベースについてあまり知りませんでしたし、すべてを1つのHUGEテーブルに投げました。だから私は、以下のフィールド(および約40の他のフィールド)を持つAll Clinic Dataというテーブルを持っています:PatientID, First Name, Last Name, Appt Date, OB at Appt, Billing Item #1, Second Appt Date, Reason for Second Appt, OB at Second Appt, Billing Item #2.
MS Access指定した日付範囲に基づいてクエリフィールドを選択
これはデータを整理する最適な方法ではないと私は知っています。未来。しかし、今は、特定の日付範囲で発生した予定の情報のみを含むレポートを作成する必要があります。
これは、現在レポートを入力するために使用しているSQLクエリですが、そのうちの1つが指定された日付範囲内にある場合は、そのテーブルの患者のすべての予定をキャプチャします。
SELECT
Format([Input start date],"mm/dd/yy") & " through " & Format([Input end date],"mm/dd/yy") AS Expr1,
[All Clinic Data].[PatientID], [All Clinic Data].[Last Name],
[All Clinic Data].[First Name], [All Clinic Data].[Appt Date],
[All Clinic Data].[OB at Appt], [All Clinic Data].[Billing Item #1],
[All Clinic Data].[Second Appt Date], [All Clinic Data].[Reason for Second Appt],
[All Clinic Data].[OB at Second Appt], [All Clinic Data].[Billing Item #2]
FROM [All Clinic Data]
WHERE (
(([All Clinic Data].[Appt Date])>[Input start date] And
([All Clinic Data].[Appt Date])<[Input end date])
)
OR
(
(([All Clinic Data].[Second Appt Date])>[Input start date] And
([All Clinic Data].[Second Appt Date])<[Input end date])
)
ORDER BY [All Clinic Data].[Last Name];
メモ入力開始日&入力終了日クエリの実行時にパラメータが入力されます。 私はIIFを使用して余分なデータを削除しようとしましたが、予定日と関連付けられたデータ(OBと請求明細)のみが指定された日付範囲内に表示されるように文を構造化する方法はわかりません。
例:
1, Sally, Jones, 1/04/2010, Dr.A, 2/05/2011, Dr. B, Flu
2, Jennifer, Baker, 7/05/2010, Dr.X, 15/05/2011, Dr. B, Checkup
3, Joe, Smith, 20/06/2010, Dr.S,
4, Tina, Turner, 17/05/2010, Dr.X, 15/06/2011, Dr. B, Checkup
[入力開始日] = 2010年5月1日と[入力終了日] = 2010年5月31日
場合、私は私のレポートが含まれているしたいと思います:
Sally, Jones,
1. 2/05/2011, Dr. B, Flu
Jennifer, Baker,
1. 7/05/2010, Dr.X
2. 15/05/2011, Dr.B, Checkup
Tina, Turner,
1. 17/05/2010, Dr.X
これが十分な情報であることを希望します。ご協力ありがとうございました。
更新日1 マイクが以下に示唆したことを試してみるための最初のステップです。私は後でつかむ患者情報の識別子としてphnを使用しています。私はコンパイルエラーが発生していると私は間違って何をしたのか知るために洗練されていません。何か案は?
SELECT
Format([Input start date],"mm/dd/yy") & " through " & Format([Input end date],"mm/dd/yy") AS Expr1,
[All Clinic Data].PHN AS Phn, [All Clinic Data].[Appt Date] AS Date,
[All Clinic Data].[OB at Appt] AS OBName,
[All Clinic Data].[Billing Item #1] AS Billing
FROM [All Clinic Data]
WHERE ([All Clinic Data].[Appt Date]>[Input start date] And [All Clinic Data].[Appt Date]<[Input end date])
UNION
SELECT
Format([Input start date],"mm/dd/yy") & " through " & Format([Input end date],"mm/dd/yy") AS Expr1,
[All Clinic Data].PHN AS Phn, [All Clinic Data].[Second Appt Date] AS Date,
[All Clinic Data].[OB at Second App] AS OBName,
[All Clinic Data].[Billing Item #2] AS Billing FROM [All Clinic Data]
WHERE ([All Clinic Data].[Second Appt Date]>[Input start date] And [All Clinic Data].[Second Appt Date]<[Input end date]);
MM/DD/YYYYとMM/DD/YYYYの間のアポイントを要求しますが、データはDD/MM/YYYYとして格納されているようです。それを確認できますか? – mikeY
はい、私のデータはDD/MM/YYYYとして保存されています。私の報告書では、MM/DD/YYと書式を設定しています。私は入力パラメータを長い手で入力しましたが、私はAccessがそれをDD/MM/YYYYに変換することができるので、比較を行うことができます。 – Crystal
私はそれを見て、今すぐテストコードを歩く時間がありませんが、これは私が見ているアプローチだと思う:1.あなたが望むすべての最初の予定情報を選択するためのクエリを作成します。 2.すべての2番目の予定情報を選択するためのクエリを作成します。 3.それらの2つを組合わせて、それから選択します。作業にはグループ化の問題があります。 HTH。 – mikeY