Date: Wed, 19 May 2004 19:38:41 +0900
From: "kk" <who@sub.example.jp>
こんにちは、ストアドプロシージャで日付での抽出について
アドバイスお願いしたくメールします。
windowsXP+Access2000+MSDEの環境で、
受注管理システムを作って運用しています。
1日の受注100件ほどを受注テーブルに保存しています。
受注先の締め日が20日、25日、月末などあり、
毎月締め日が過ぎたら締め処理を行い、締め日までの
該当受注データを受注保存テーブルに移動させて集計などしています。
1年ほどは問題なく動いていたのですが、4月20日締めの
締め処理(3/21〜4/20まで)をしたら、4月20日分の受注データだけが
受注保存テーブルに移動されず、受注テーブルに残ってしまいました。
末締めなどの締め処理は正常に終わっていました。
VBAやストアド記述のミスかと思いテストや確認するも、
ミスが発見できず、20日締めも末締めも同じ処理を使っており、
今まで正常だった事もあり悩んでいます。
VBAからストアドプロシージャに締め処理する期間の日付を渡して、
ストアドで締め処理をしています。
ストアドの記述で下記のようにしております。(一部抜粋)
INSERT INTO T受注保存 SELECT * FROM T受注
WHERE T受注.受注日 <= CAST(@ST_締め日 AS datetime) AND
T01受注.締め日 = @ST_締め種類
「@ST_締め日」には今回の例では2004/04/20、
「@ST_締め種類」は20、などと締め日の種別が入ってきます。
このような記述で、20日締め顧客の受注日4月20日の分だけが
漏れるって考えられませんよね・・・?
WHERE T受注.受注日 <= CAST(@ST_締め日 AS datetime) AND
上記の記述を <= でなく、 < にして@ST_締め日に1日加算して
WHERE T受注.受注日 < CAST(@ST_締め日 AS datetime) AND
のようにするべきだったのでしょうか?
ちなみに受注保存テーブルには4万件以上データが入っていますが
受注テーブルは5千件程度です。
20日締めの顧客は2社だけなので締め処理も軽いです。
4月20日分が漏れたのは1回だけで、その後のテストでは
再現できませんでした。漏れたケースも初めてです。
長々と大変すみません、チェックすべき点などアドバイスありましたら
なにとぞ宜しくお願い致します。
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|