• ベストアンサー

更新クエリの日付抽出方法について

process9の回答

  • ベストアンサー
  • process9
  • ベストアンサー率29% (81/272)
回答No.7

process9です。 蛇足かもしれませんが、もう1つやり方があったので。。。 ****締め日を指定して更新するクエリ***** UPDATE 受注 SET 請求予定月 = DateAdd("m",1,[請求予定月]) WHERE [受注期間開始日]<=CDATE([締め日]) And CDATE([締め日])<=[受注期間終了日] And FORMAT([請求予定月],"yyyymm")=FORMAT(CDATE([締め日]),"yyyymm") And FORMAT([受注期間終了日],"yyyymm")>FORMAT(CDATE([締め日]),"yyyymm"); ****締め日を指定して更新するクエリの試験用SQL***** SELECT * FROM 受注 WHERE [受注期間開始日]<=CDATE([締め日]) And CDATE([締め日])<=[受注期間終了日] And FORMAT([請求予定月],"yyyymm")=FORMAT(CDATE([締め日]),"yyyymm") And FORMAT([受注期間終了日],"yyyymm")>FORMAT(CDATE([締め日]),"yyyymm"); 上記の更新SQL(選択SQLもですが)であれば、 締め日を実行日でなく、締め日を指定できます。 実行すると 締め日の入力を求められます。 そこで 2006/3/31(3月締め) や 2006/4/30(4月締め) などの締め日を入力すると その月の締め日に指定した月で更新されますよ。 必ず末日又は翌月中に実行するなら、前のSQLの方が入力がない分 簡便ですし、誤入力(締め日とは違う日付でも実行されちゃう)も防げます。

ichigobana
質問者

お礼

重ね重ねご丁寧に教えていただき、本当に ありがとうございます! 教えていただきました、 「請求処理日を実行日の前月の末日とする」更新クエリを使用させていただきました。 これ、これです!!やりたかったことが(涙) なんだかすきっとして気持ちいいいです(^^) 他のやりかたも教えていただき、感激しております。 何度もありがとうございました!!

関連するQ&A

  • メイン・サブフォームの内容を更新クエリで更新したい

    お世話になります。 現在、 tb受注日報(親)、tb受注伝票(子)で、受注伝票をサブフォームという形で組み込んだ【受注日報フォーム】と tb作業表(親)、tb作業表明細(子)で、作業表明細をサブフォームという形で組み込んだ【作業表フォーム】 があります。 【受注日報フォーム】上にあるコマンドボタンのマクロに、親同士、子同士での追加クエリを設定し、ボタンを押せば【受注日報フォーム】に入力した内容を【作業表フォーム】に反映させられるようにしています。 この要領でコマンドボタンを押せば以前に入力した【受注日報フォーム】の更新内容を【作業表フォーム】に反映させられるようにしたいと考えています。 そこで、親同士、子同士で更新クエリを作ってみた結果、親同士の更新は大丈夫でしたが、子同士の更新が一番目のレコードしか更新されませんでした。 更新クエリの抽出条件 親 フィールド 「識別番号」(オートナンバーです)   テーブル 「作業表」   抽出条件 [forms]![受注日報]![識別番号] 子 フィールド 「受注伝票番号」   テーブル 「作業表明細」   抽出条件 [forms]![受注日報]![受注伝票Sub].[form]![受注伝票番号] ちなみに親同士の追加クエリの抽出条件に使用した主キーは「識別番号」とは別の番号で、オートナンバーではなく、最大値に+1するやり方で振っている番号を使用していて、子同士の主キーは追加クエリも更新クエリもおなじ[受注伝票番号]を使用しています。 抽出条件かこの主キーの設定が問題なのかなあと思いますが、わからないのでどなたかご回答宜しくお願い致します。

  • Accessで期間抽出方法

    アクセスの検索フォームで 期間の抽出をしたいと思っています。 クエリではできるのですが、クエリではなく、コードビルダを使用しています。 「検索フォーム」で条件を入力し、「T_マスタテーブル」から作成した 「検索結果フォーム」に表示したいのです。 検索フォームの 「取得日1」に1999/3/6、「取得日2」に2002/4/25 と入力した場合、1999/3/6~2002/4/25の間が表示されるようにしたいのです。 どのように入力すればいいのでしょうか? 宜しくおねがいがします。 Ac2000

  • クエリーの抽出について

    今回初めて質問させていただきます。 所持しているゲームソフトが増えてきたので、ACCESSで管理したいと思いました。 テーブル、追加クエリー等は作成したのですが、フォーム上でメーカー名と頭文字という二つのテキストボックスを作成し、クエリーにて FORM!検索フォーム!テキストボックスという感じで作成し、抽出をしようとしたところ、両方のテキストボックスに検索条件を入力しないと抽出されないことに気づきました。 これを、一つの検索条件を入力した時にも抽出できるようにできませんか?説明がわかりにくいかもしれませんが、よろしくお願いします。

  • ACCESS2000 更新クエリで文字を追加・変更したい

    ACCESS2000のマクロでCSVファイルをインポートし、Excelに出力しています。 そこで途中に更新クエリを使い、文字の追加・変更を行いたいのですが何故かうまくいきません。。。 【テーブルA】 フィールド/受注番号(910004292) 【テーブルB】 フィールド/出荷番号(910005232)/製造番号(910005451) 【テーブルC】 フィールド/受注番号(910005232)/製造番号(910005451)/納期(1021) 受注、出荷、製造の各フィールドは先頭に"0"を追加したいです。 910004292→0910004292 納期は2009/10/21となるように、現在の西暦(できれば自動)/と3桁目にスラッシュを入れて、yyyy/mm/dd形式にしたいです。 更新クエリで フィールド:受注番号 テーブル:テーブルA レコードの更新:"0"&[受注番号] と入力してやるとうまくいきました。 同じように横のフィールドに フィールド:受注番号 受注番号 ・・・ テーブル:テーブルA テーブルB ・・・ レコードの更新:"0"&[受注番号] "0"&[受注番号] ・・・ と各テーブルの全てのフィールドを入力して更新すると、 レコードに物凄い数の"0"が追加されてしまいます。 例:0000000000000000910004292 何度も繰り返しているようなのですが、なぜなんでしょうか? 更新クエリを別々に作ればそれぞれうまくいきました。 ひとつのクエリに複数のテーブルのフィールドを入れると駄目です。 また、納期について1021→2009/10/21にうまく変更する方法はありますでしょうか? 分かりにくくて申し訳ありませんが宜しくお願いいたします。

  • フォーム入力、更新後処理で指定テーブルへのバックアップ方法

    受注DBを作成しています。 テーブル1:受注テーブル (受注日,受注訂正日,得意先名・・) テーブル2:受注テーブル履歴テーブル     (受注日,受注訂正日,得意先名・・) フォーム :受注入力フォーム があります。 受注を受けたら受注入力フォームへ入力します。 受注が変更になった場合、受注訂正日に入力後、 最初に入力したデータを受注テーブル履歴テーブル へ自動的にバックアップをとりたいと考えています。 更新後処理で、「値の代入」で処理するのでしょうか?イベントプロシージャーで入力するのでしょうか? バックアップは、初回受注入力フォームへ入力した データをすべてバックアップしておきたいと 考えております。 よろしくお願いいたします。

  • クエリで抽出したものに日付を入力して更新したい

    素人質問です。よろしくお願いします。 クエリで発注データを抽出し、それに対して入荷日などを入力し更新したいのですが、今の状況だとbefore updateなどで設定して更新しますか?とメッセージを出していますが、 たとえば5件抽出して5件入力が終わったところで「変更データがあります。更新してもよろしいですか?」とメッセージを出して更新するかしないか…と進めたいのですが、どうしていいかわかりません。 助けてください!よろしくお願いします。

  • 更新クエリがわからない

    windows-xp、Access2003を使っています。 参考書に載っている更新クエリは「同一のテーブル内でデータを更新する」という内容で載っているのを見ました。 が、そうではなく・・・ 更新クエリを作成すると「レコードの更新」という欄が出てくるのですが、そこに、別のテーブルや別のクエリのデータを”ビルド”で作成することはできないのでしょうか? 試みたのですが、”パラメータの入力”というものが出てきてしまいました。 ついでにおわかりになれば、これも教えてください。 ↓↓↓ テーブルAとテーブルB(或いはクエリB)に、同じIDをもつデータがあります。そこで、テーブルAの指定するフィールドへ、テーブルBの新しいデータを入れ込みたい(更新)させたい。 すみませんが、宜しくお願い致します。

  • Access2007 クエリが読み取り専用になってしまう

    Access初心者です。 3つのテーブルのデータ(全て)をクエリに抽出して、そのクエリからフォームを作成し、フォーム上からデータ入力をしていきたいと考えております。 しかし、上記方法で作成したフォームは入力ができなく、ヘルプで調べたらフォームが読み取り専用になっているようでした。 いろいろ検索したのですが、どうやら更新可能なクエリにする必要があるみたいなのですが、その方法が分かりません。 宜しくお願いします。

  • アクセスのクエリで更新できるようにしたいんですが、

    アクセス2000を使っています。クエリから、作ったフォームを更新したいのですが、できません。どなたか教えて下さい。 二つのテーブルがあります。 ・テーブル1=顧客番号、顧客名、初来店日、来店日2・・・ ・テーブル2=顧客番号、顧客名、アンケートの有無、カードの有無・・・ というようなもので、エクセルから外部データの取り込み→テーブルのリンクで作ってます。 この二つのテーブルから ・クエリ1=顧客番号(テーブル1)、顧客名(テーブル1)、初来日店(テーブ ル1)、アンケートの有無(テーブル2) を作り、これをもとにフォームを作ってフォーム上でアンケートの有無を更新できるようにしたいのですが・・・。 初心者で説明も上手くできなくてごめんなさい。 宜しくお願いいたします。

  • テーブル間の更新クエリにおいて

    Access2010で入力フォームを作成しています。 一時データとしてテーブルAを連結サブフォームとして編集します。保存ボタンをクリックするとメインのテーブルB(Aとフィールド構成は同じ)へA、Bのフィールド間で値が異なる場合、上書き保存をするという更新クエリを用意しています。 質問はテーブルAでフォーム上、オプショングループのラジオボタン(項目はテキスト型 値リストは0と1)に設定した項目が初期値のnullから入力したデータがメインのテーブルBに更新できないので困ってます。 連結フォームなので、テーブルAに値が入っており且つBと値が異なるのはデータビューで確認しています。ただ更新クエリでの選択(データビュー)に載ってこない。 この項目がテーブルBに反映されるのは予めインポートで0もしくは1が入力されていた状態から変更した場合と他の項目も合わせて値に変更があった場合のみでした。 クエリの抽出条件はテーブルA.項目<>テーブルB.項目としています。他の項目もor条件で同じ設定にしています。切り分けのため、このオプショングループの項目だけを変更した場合のクエリにしても反映はされませんでした。 考慮すべき点あればご教示ください。 よろしくお願いいたします。 どうかお助けくださいませm(__)m