健診DB作成奮闘記

その(1)2000/8/13

さて、診療所の旧98がそろそろアヤしくなって来たことに乗じて、今回OMEC
との通信用に導入した新マシン(提供していただいたKanohさんにちなみ「KANOX
-K6」と命名(^^))で98でやっていた豊中市の市民健診データ管理を移行し
ようと思い立ったのはいいのですが、利用しようと思っていた「THE CARD7
for Windows」がなぜか見つからない(^^;;)ので、やむを得ずAccessを使うこ
とにしました。最終的にはマクロでかなりの部分を自動実行できるようにした
いのですが、そこまでできるには時間もかかりそうだし、皆さんのお知恵を借
りねばならない部分もあるかと思い、こうやって記録を残すことにしました。

さて、今日はその第1回。実は旧98のThe CARD3+で現状で入っているデータ
を全部テキスト化(CSV形式)しておいたので、これをまずは新しいmdbに読み
込ませてテーブルを作るところからスタートしたのですが、やはりAccess初心
者の哀しさでしょっぱなからトラブルにぶつかりました。

インポート→テキストファイルでインポートウイザードに到達し、とりあえず
一気読みさせるとなぜか読み込めないフィールドが出現してエラーテーブルが
できています。中を見ると特定のフィールドだけで、どうやら日付/時間型の
ところのようです。で、よく元のファイルを眺めたら、まず元のデータでは元
号と生年月日が分離していて別フィールドになっているところでエラーが出て
います。またどうやら日付の記載形式が「00- 9- 5」などとスペースの入って
いるのがよくないみたいでした。

元のテキストを秀丸に読み込み、一括で「- 」→「-0」に置換、次に「s,」→
「s」などと置換して元号の後ろのカンマを取り去ってみました。これで再度
試みたら、他は無事インポートできましたが元号の付いた生年月日がやはりエ
ラーでした。そこでちょっと考えて、まずここは「s33-09-15」という書式で
すのでウイザードでは日付型に認識するものの、それをテキスト型としてみま
した。そしてインポートすることでようやく全部エラーなくインポートできま
した。次にこの生年月日のフィールドを複製したフィールドを作り、そのフィ
ールドをAccess上で日付/時間型に変換したところようやくこれも無事西暦に
変換されました。

というわけで、今日はこの形で一般健診と企業健診の二つのテーブルを作り、
それぞれに入力フォームの基本形を作ったところまでやったのですが、ここで
課題が三つ。まず、年齢は直接入力せず生年月日から関数を用いて自動入力さ
せたい。また入力するときはテキスト型で元号付きで入力したものを自動的に
西暦に変換して日付型のフィールドに入力させたい、という二つです。前者は
関数の予想がつくのですが、後者がどうもどの関数を使用していいか判らない
のです。それと、フィールド1はデータ整理番号なのですが、できればこれレ
コードが次に進んだとき自動的に1増えてほしいのですけど・・・このあたり
でよろしければどなたかお知恵拝借できれば幸いです・・・

それにしてもAccessのセットアップでミスったのか、関数のヘルプがでてこな
い(+_+)。定型入力もできない。再セットアップが必要なのでしょうかねぇ・・・

その2 2000/8/14

昨日わきあがった疑問にさっそくいろんな場所でご指導を受けまして、今日で
きるところまでやっちまえと夜診終ったあとに今までごちょごちょやっており
ました。

まずは整理番号連番の件。皆さんレス有難うございました。
よく考えたら今の番号を特別活かす必要がないので、最初からふりなおすこと
にして、まず昨日作成したテーブルのデザインビューを開き、そのまま名前を
付けて新しいテーブルとして保存し、そしてあらためてその番号のところをオ
ートナンバー形式に変更して再保存、そして次に元のテーブルを呼び出して、
番号以外のところをすべて反転させてコピー→新しいテーブルに貼り付け、で、
無事データの移行ができました。そして番号はめでたくオートナンバーとなり
ました(^^)。

元号形式から西暦への変換はまだ確認していませんが、そのまま入力したら変
換されそうな気がするのでベンディングとして、問題の年齢自動入力にとりか
かりました。

Accessに取り組む上でクエリーというものが理解できないと困るなとは思って
いましたが、さっそくここでクエリーを駆使する必要に迫られました。ただい
ろいろいじるうちに少し理解したのですが、クエリーというのはデータの選択、
フィールド間の計算、その結果のフィールド書き込み後データ更新、などデー
タやフィールドをさまざまにいじる手順を作っておいて他で使用するためのも
の、とでも言えばいいのでしょうかね。TheCARD3+の中で言えば「手順書」に
相当するものの様な印象です。

徳島県阿波郡の笠井先生のご助言にのっとり、MSのアクセスヘルプから

IIf(Right(Format([生年月日2],"yyyy/mm/dd"),5)>Right(Format(Now(),
"yyyy/mm/dd"),5),DateDiff("yyyy",[生年月日2],Now())-1,DateDiff
("yyyy",[生年月日2],Now()))
(実際は1行ですが3行に分かち書きました)

をもらってきて選択クエリを新規作成して生年月日2をまず貼りつけ、次に新
規フィールド行に上記の式を代入して年齢2に書き換えて・・・とやってみた
ら、そのクエリ上では入力した西暦にしたがって年齢が自動計算されるのです
が、実際に入力フォームで入力してみると生年月日を入力しても自動計算され
ないのです(;_;)。これはフィールド定義でこのクエリを実行してやるとかが
必要なのかな?うーん、まだよくわからんぞ(?_?)

Try & Error!先は長いな。今月中にできるのだろうか・・・

 その2の後日談
 
その後、「スターチャンネルさん」にご指導いただき、入力フォームのデザイン
ビューで生年月日2のプロパティで更新後処理のところにイベントプロシージャを
割り当て、そこの内容として
[年齢2]=IIf(Right(Format([生年月日2],"yyyy/mm/dd"),5)>Right(Format(Now(),
"yyyy/mm/dd"),5),DateDiff("yyyy",[生年月日2],Now())-1,DateDiff
("yyyy",[生年月日2],Now()))
(実際は1行ですが3行に分かち書きました)
を書込んだら取りあえず入力フォームで生年月日入力をして年齢が自動入力できる
ようになりました。有難うございました>スターチャンネルさん

なお、生年月日入力は元号で書込んだらそのまま西暦に変換してくれました。

やれやれ・・・


その32000/8/16

さて、第3回で少し佳境に入って来ました。
年齢の自動処理についてはいろいろなアイデアを戴き有難うございました。年
齢、年齢2という二つのフィールドを作成していたことを利用して、一方を入
力時、あるいは更新時の年齢、他方を検査施行時の年齢とすることであとあと
データをいろいろ利用できそうなのでこのアイデアを採用することとしました
が、どこで更新するかと言うことで少し頭を使いました。

当初H.Kanohさんにご指導いただいたようにフォームの更新時の処理として更
新クエリをマクロで実行されるようにしたのですが、データ入力して行くとき
には1件終了ごとに全データが更新される形になりますので一生懸命続けて入
力しているときにはややうるさいかなと。そこで、[生年月日2]の更新後処理
のイベントプロシージャに

[年齢2] = IIf(Right(Format([生年月日2], "yyyy/mm/dd"), 5) > Right
(Format(Now(), "yyyy/mm/dd"), 5), DateDiff("yyyy", [生年月日2], Now())
- 1, DateDiff("yyyy", [生年月日2], Now()))
[年齢] = IIf(Right(Format([生年月日2], "yyyy/mm/dd"), 5) > Right
(Format([検査施行日], "yyyy/mm/dd"), 5), DateDiff("yyyy", [生年月日2],
[検査施行日]) - 1, DateDiff("yyyy", [生年月日2], [検査施行日]))
(例によって分かち書きしています)

この二つを記載することで入力時に一気にまず二つの年齢情報が自動入力され
るようにしてみました。データ参照時のNow()との関連で言えば、そのテーブ
ルへの入力を行う際にマクロで全データが自動更新されるようにしておけば良
いのではないかと思っていますが・・・

先は長いですが一山こえた印象ですね


その42000/8/20

〜〜使いやすいフォームの作成〜〜

今日の目標は副題の通りの使いやすいフォームの完成です。これまで入力して
いたTheCARD3+はもともとベストセラーのカード型データベースであっただけ
あって、その帳票画面(いわゆるカード入力画面)は作成しやすく、しかも入
力を簡単にする工夫がいくつもありました。入力を担当する事務はあまりPC
には慣れていませんから簡単であればあるほどいいわけです。

一般健診データと企業健診データがあるのですが、後者はフィールドが多いの
でとりあえず前者で作ることにしました。ポイントはいくつかありますが、入
力更新時及び検査施行時の年齢入力に関してはもうできあがっていますから、
あとは

(1)TABでなくENTERで各フィールドの入力を進めていきたい
(2)日本語入力の必要なところでは自動的にIMEを起動したい
(3)性別・健診種類・癌検診など入力すべき内容が決まっているものは書き
   込まず選択入力したい
(4)判定フィールドは1(正常)2(要精査、再検)3(要加療)しかなく、
   それぞれに再検呼び出し日時を12ヵ月後、3ヵ月後、1ヵ月後と決めていま
   すので、その呼び出し日時を自動入力したい

などが重要なところでした。

(1)(2)に関してはフォームでのそれぞれのテキストボックスのプロパティの設
定ですぐにできましたが、まず(3)は、最初コンボボックスを作って対処し
ました。次に(4)は、これはまず1→12、2→3、3→1と対応させたテーブル
を作り、これを用いたDlookup関数を利用したマクロを作成してまずフォロー1
というフィールドに○ヶ月後呼び出しの数字を格納。次にDateAdd関数を用い
てフォロー2というフィールドに検査施行日から○ヶ月後の日付を代入、とい
う手順で実現できました。

ところで(3)ですが、うまく選択入力できるようにもなったものの、どうし
てもマウスでの作業になります。そこでオプショングループとオプションボタ
ンを作ることにしました。オプションで扱えるのは数値型だけですので(4)
でやったことを応用して代入内容と対応する数字のテーブルを作成し、オプシ
ョングループの更新後処理にやはりDlookup関数を用いたマクロを指定しても
ともとのフィールドに選択内容が入力されるようにしました。

なんとかこれで一般健診の方のフォームが完成しました。今日やったことを応
用すれば企業健診の方も作れるでしょう。フォームさえ完成すればとりあえず
入力作業はできますので、なんとか秋の健診シーズンに間に合いそうです(^^)。

でもこれでようやく30%程度の到達かな。最終的にはマクロ組んでボタンワンタ
ッチで入力画面、健診レポート印刷、健診まとめ作成などができるようにして
いきたいですからねぇ・・・


その5 2000/8/29

前回、使いやすいフォームまで作成しておいた一般健診DBですが、これまで
あのTheCARD3+しか操作したことのない事務に入力を任せる以上、なるべくい
ろいろ工夫をして彼が間違いなく入力できるようにしないとと思い、まず
kensin1.mdbそのものをフリーソフトのランチャーの「Special Launch」に登
録して1クリックで起動できるようにしました。

そして次にやったのがメインメニュー画面の作成です。アドインとして組み込
まれているメニュー用フォームビルダを用いて一般健診入力、企業健診入力、
DBの終了の3つのボタンを作成して、前2者にはフォームオープン用のマク
ロを組んでそれを指定することにしました。オープン用のマクロはそれぞれの
入力用フォームに関して「フォームを編集で開く/新しいレコードへ移動」と
したものです。そして「Autoexec」マクロでそのメニューフォームを開く設定
にして、これでめでたく(^^)ランチャーのボタンクリックでメニュー画面が現
れました。

まだ検索だとか、印刷用レポートの作成だとか課題は多いのですが、とりあえ
ずこれで入力作業は可能になったので、夕方から件の事務に起動と一通りの入
力の手ほどきをして20件ばかり入力してもらい、無事入力完了。相当工夫して
あったから入力も楽だったですと言ってもらえてちょっと報われた気がしまし
た(^^)。

ところで、データを圧縮・バックアップして自宅に持って帰ってさきほど検討
していたのですが、チェックボックス選択にした性別のところにバグ発見(^^)。
選択にて入力された数字をDlookUp関数を用いて「値の代入」をするマクロで男
/女の文字データに変換するのですが、このマクロをチェックボックスの「更
新後処理」にだけ指定していたら、最初にデフォルトでフォーカスが移動した
ときのデータのままでENTERで進んだときに文字データへの変換が行われない事
が判明したのです。テーブルの中身確認したら案の定デフォにしている「男」
が入力されていませんでした。でもまぁこれは「フォーカス取得時」にも上記
マクロが動くようにしただけで解決しましたけどね。

というわけで、なんとか秋の健診シーズンに間に合いました。あとは企業健診
の方でフォームをもう少し工夫する必要がありますが、入力の方はなんとかな
りそうです。今後の課題ですが、実施日と健診種類をダイアログボックスで入
力すればその条件でレコードが検索され、それを一括してレポート印刷する、
あるいは一覧表印刷することを実現したいのです。クエリでの選択条件の書き
方と、レポートのデザインがポイントかと思っていますがまたこれは明日以降
に。


その6 2000/8/31

いよいよ今日は夕食後にちょっと気合いを入れてとりかかり、なんとか企業健
診の方も入力フォームをほぼ完成しました。

すでにこれまで入力したデータが、レ線所見、心電図所見などでも使えそうな
状態でしたので、本来なら一から入力になるフィールドですけどほとんどすべ
てをコンボボックス入力としてみました。そのおかげで多分かなり入力時間は
短くできると思います。

ところで今日ちょっと苦労したのは身長、体重からBMIを計算し、その結果
で肥満、やせ、普通を判定するところです。BMIの自動計算については、慎
重を入力し、次に体重を入力した時点で[体重]の更新後処理にイベントプロシ
ージャでコードを書いて

[BMI]=Int([体重]*100000/([身長]*[身長]))/10

Accessには少数点2桁以下で四捨五入という関数(123などではround関数にあ
たるもの)がないらしいので、本来のBMIを10倍したものを求めてそれを
Int関数通してから1/10するという姑息な手段使ってます。

ところがそのあと[評価]にBMI>24で肥満、BMI<19でやせと代入したいのだけ
ど、そこでかなり時間食ってしまいました。BMIが入力された段階でそこから
フォーカスが移るタイミング(つまりフォーカス喪失時)のイベントプロシー
ジャにIIf関数で入れ子作って

Private Sub BMI_Exit(Cancel As Integer)
[評価] = IIf([BMI]>24, "肥満", "IIf([BMI]<19, "やせ", "普通")")
End Sub

としたら旨くいくと思ったのだけど、これがどうしてもエラーがでます。IIf
入れ子ができないのかな?で、いろいろ考えて

Private Sub BMI_Exit(Cancel As Integer)
[評価] = IIf([BMI] > 24, "肥満", "普通")
If [BMI] > 24 Then Exit Sub
[評価] = IIf([BMI] < 19, "やせ", "普通")
End Sub

こうやることでようやく解決しました(^^)。

これで入力はほぼ大丈夫でしょう。
あとは検査結果返し用レポートの作成です・・・

<後日談>
その後、H.Kanohさんから教えていただき、ここを

Private Sub BMI_Exit(Cancel As Integer)
[評価] = Switch(
     [BMI] > 24, "肥満",
     [BMI] <= 24 And [BMI] >= 19, "普通",
     [BMI] < 19, "やせ"
        )
End Sub

と書き換えて、無事動くことを確認しました・・・


その7 2000/9/8

いよいよ今週の日曜日には日曜健診です。今後の日程や私の都合もあって、今
回の健診の診察はパートの先生にお願いするのですが、判定と患者さんへの健
診レポート作成は私の仕事です。つまり、いよいよこのデータベースを本格稼
働する日がやって来るわけです。

今日は夜診が終わってから今までかかってその健診報告をレポートデザインで
作っておりました。まずは企業健診データのテーブルをソースデータにしてレ
ポートに必要なフィールドを選択してオートデザインで一気に一画面に展開し、
それをA4に収まるように配置しながら、身体測定だとか生理検査だとかをひ
とまとめにして箱の中に入れたりして見た目がなるべく良くなるようにしまし
た。そうやってできたのがこれです。

プレビューで見てもなかなかいいできで(^^)、そしたら一度試し印字してみる
かなとなにげなく印字命令を送ったら、なんと1から順番に全部のレコードを
印刷し始めるではないですか。慌てて印刷中止してページプリンタをリセット
しました。で、よく考えたらこのレポート、レコードソースをテーブルにした
からなんですね。マズイマズイ(^^;;

でもまだ患者検索のクエリは作ってないし、それからまた一からのやりなおし
もいやだし(^^;;)できるだけ楽できんかなと考えて、まずはソースなしのデザ
インビューで新規作成を選び、そのフォーマットを今作ったものと同じにして、
そこへ先に作ったものから

編集→すべてを選択→コピー

として全部コピーして新しい方に貼りつけました。これのレイアウトビューを
見てみると、データのところが全部「#Name?」になってますけど、ここで

編集→レポート全体を選択

としたうえでプロパティをだしたらソースを選択できそうなので、これで検索
用クエリ作ってそのクエリをソース指定すればいいのかなと思っております。
(間違ってればまた指摘してやってください(__))。

さて、患者検索用のクエリ作るのは明日にするべ

その8 2000/9/9

今日、最後に完成させるべきは、これらの一連の作業の自動化です。まず、昨
日一生懸命完成させたレポートを活かすために、まずそのデータソースとなる
クエリ(Q手帳)の作成を行いました。レポート(R手帳)への出力項目をデ
ザイングリッドへコピーしたあと、検査実施日と検査種類で抽出条件に

[Forms]![F手帳検索][実施日入力]
[Forms]![F手帳検索][検査種類]

と入力しいったん保存。そしてR手帳のデータソースをQ手帳に変更しました。
次に上記で利用することにしているF手帳検索を作成しました。これは上記2
項目をコンボボックスで選択できるようにしました。そして、あとはこれらを
一連の作業化するマクロの作成となります。メニューフォームのボタンをクリ
ックするとそのマクロが起動するようにするといいわけです。

1.フォーム(F手帳検索)のオープン→入力後最小化
2.レポート(R手帳)の起動
3.確認後印刷
4.F手帳検索のクローズ

という手順です。
なんとか明日中に完成させたいと思います・・・

その9 2000/9/10

今日も一日アクセス三昧でした。なにせもう明日からは完全実用せねばならな
いという事情がありますから結構プレッシャーでしたが、ここまで来るともう
完成後のイメージがいろいろ浮かんで来て作っていて面白いのですから、アク
セス食わず嫌いだった私としてはたいそうな進歩ですね(^^)。

今日は最後の作業、つまり各種作業の自動実行のためのマクロ作成でしたが、
選択クエリにパラメータを与えるためのフォームは昨日作成したので要領は判
っています。同じように、健診呼び出し月を指定して一覧表を作るクエリも少
し改造しました。抽出条件を

Format([フォロー月],'yy/mm')=[Forms]![F呼び出し]![呼び出し月]

としてフォロー月のフィールドに書込み、クエリを開くと自動的に別フィール
ドに分割されました。これで[F呼び出し]の非連結テキストボックス[呼び出
し月]に00/08などと月までを書込むことで00/08/01-00/08/31までのレコード
を呼び出すことができるようになりました。

あとはメニューからこのへんのフォーム、クエリを順序よくオープン、クロー
ズ、最小化とならべることで自動化して行くマクロを作成したのですが、これ
が慣れてないせいか結構試行錯誤で(^^;;)。手帳の印刷には、一応印刷すべき
手帳を表示させた上で印刷開始のYES/NOを選択できるようなフォームも作成し
て万全を期したりして結構苦労しましたが、最終的にはメニューから

1.一般健診新規入力
2.企業健診新規入力
3.企業健診手帳作成印刷
4.月例呼び出し一覧表
5.手帳住所ラベル作成
6.データベースの終了

までが可能になりました。

これで終わりにしようと思っていたのですが、夕食後参考書を見ていたら、コ
ンボボックスに入力させる列以外の列を表示させることができることに気が付
きました。そこで以前入手していた郵便番号MDBを利用して豊中市の分で郵
便番号と町名だけのテーブルを作ってこちらにインポートし、入力フォームの
郵便番号のコントロールをコンボボックスにしてそのテーブルをソースにして
クエリを作成し列幅、リスト幅などを変更したところ、郵便番号を町名を参照
して入力することができるようになりました。これは最後の最後に非常に有用
な変更ができたと思います。

というわけで、9回にわたり奮闘記を残して来ましたが、ようやく大団円に到
達しました。それほど大したものではないし、きっとプロならば半日ほどで作
成するものかも知れませんけど、全く一から勉強し始めてここまでできたと言
うのは非常に得がたい経験でした。

データを少なくし、名前などを仮名にしたこのデータベースの評価版をここ
に置いてありますのでもしよろしければ見ていただいてご感想いただければと
思います。なお、この評価版、月齢呼び出しの印刷は突然始まりますのでご注
意を(^^)

・・・〜fin〜・・・

☆★実用開始後のバージョンアップ
その1 2000/9/12

一昨日完成したと喜んでさっそく実用し始めた健診DBですが、実用してみる
と早くも要望がでてしまいました。というのも、今回集団健診があったときの
事を考えて、あとで手帳を一括して印刷できるような工夫はしたのですけど、
事務に聞いてみると結構単発で入力してそのまま印刷したくなることもあると
いうことですし、またもう一回印字が欲しいということでレコードごとに選択
して印刷したくなることもあるということだったのです。

そこで、先日作成した印刷レポートの複写を二つ作り、一つは入力フォーム上
の[番号]フィールドをレポートの同名フィールドに一致させるクエリをデータ
ソースにし、もうひとつは[番号]と[名前]にパラメータを設定してorで繋いだ
クエリをデータソースにしました。

ところでその後者をメインメニュー上からマクロで起動するのは造作もないこ
とだったのですが、前者はあるレコードを一件打ち込んだ直後に印刷したいわ
けですから、入力フォームに印刷用のボタンを置かねばなりません。でも、フ
ォーム上のテキストボックスに代入するのと異なり、このクエリに[番号]を代
入するためにはレコードが保存される必要があります。しかしそうすると次の
レコードに移ってしまいますね。ここがヤヤコしかった(^^;;)。結局そのボタ
ンクリックに

レコードの移動(→次のレコード)
レコードの移動(→前のレコード)
レポートを開く(印刷モード)
レポートを閉じる
レコードの移動(→次のレコード)
コントロールの移動(→[番号])

というマクロを割り当ててようやく実現できました。
なんか最初の2行がスマートじゃないですけど(^^;;)まぁ仕方がないかなと。

なお、あとになってH.Kanohさんよりレコード更新のためのコーディングの実際
を教えていただきました。


その2 2000/9/13

今日はついに日曜日の民商健診19件の入力と手帳出力、及びその送付用の住所
ラベルの出力とマシンが働きました。小手調べの19件だけだったので自分で入
力しておればもう少し早かったと思うのですが、今日は事務のO氏に入力をあ
えてしてもらって、入力支援がどこまで効を奏するかをチェックする必要があ
りましたので・・・

とりあえず癌検診やウロビリノーゲン値、心電図所見などには既定値として正
常、あるいは「正」をしておいたのでこれだけでもずいぶん楽だったと彼は言
うのですが、それでも一人分の入力に結構時間がかかっています。どこで時間
がかかるかを見ていると、やはり住所や名前などの日本語入力を要するところ
でした。当たり前と言えば当たり前ですけどね。

そこであとの改善点として考えられたのは
(1)やはりあのT豊中の住所、郵便番号の表は有効に用いて住所の先行入力
をやりたい
(2)何項目か、前のレコードの入力値を次のレコードの既定値にできないか
どうか(つまりデータの「リピート」機能)
の2点でした。

(1)は結局DlookUp関数で実現できました。郵便番号をT豊中からのコンボ
ボックスで入力したあとに、更新後処理のイベントプロシージャに

Private Sub 郵便番号_AfterUpdate()
[住所] = DLookup("[町]", "T豊中", "[郵便番号]=forms![kensin2_入力]![郵便番号]")
End Sub

これで[住所]に町名が入力されて大幅な入力支援になります。丁目などの追加
入力のためには

ツール→オプション→キーボード

にて、フィールド移動時のカーソル動作をフィールド最後の文字に設定してお
くだけでOKでした。

ただ(2)がどうしたらよいかが判らなくて・・・
相変わらず奥が深いですわ。しかしこの1週間、このDBの話ばかりでしたね
ぇ・・・

その3 2001/2/8

ひさしぶりに診療所の健診DBをいじってみました。きっかけは今週末に控え
ている大阪民医連の学術運動交流集会です。私自身は慢性疾患医療の分科会の
座長なのですが、うちの事務が昨年1年間の健診のまとめと、特に6月以降制
度が変わっての影響をまとめる発表をする事になっているので、夕方にいろい
ろいじくってデータの抽出を行っていたのです。

要するに制度変更のあった6月1日の前後で受診者数やその内訳が変化したか
どうかを知りたかったわけですが、単純にクロス集計して検査施行日を行見出
しにしたら日付の方は一日単位でグループ化されてしまいます。本当はある期
日の前後、みたいな分類ができてそれが行見出しになればいいのだけれど、そ
う言うのが無理みたいなので、せめて月別に出したいと知恵を絞りました。

そうなると半ば当然のように検査施行日の日時データから年、月のデータだけ
取りだすというアイデアがでてくるわけで、ヘルプを探しまくって(急な事で
せっかく購入した参考書が手元になかったのです)datepart関数にたどり着き
ました。

もとの表データに検査施行年、検査施行月という数値型のフィールドを新たに
作成し、更新クエリでそれぞれ
datepart("yyyy",[検査施行日])、datepart("m
",[検査施行日])
をレコードの更新のところに代入して一括変換する事で一気
に入力を行います。そのうえで、あらためて行見出しとしてその年、月を設定
し、年齢や性別、判定などを列見出しとして設定してクロス集計を実行。その
月のデータに抽出条件として>5、<6と入力してその都度実行してできた表を
印刷して行くという力わざで(^^;;)だいたい目的のものを得る事ができまし
た。

おそらく今後も月別の集計はしたくなる事があるだろうから、このフィールド
を作成したのは意義のあった事だろうと思います。しばらくぶりに触って鈍り
がちだったカンも取り戻せました。

やっぱり日常的に触ってなきゃダメだね(^^;;;;



←BACK