【復活求む!】惜しくも解散してしまったバンド|J-ROCK編 >>

いつもお世話になっております。

Accessで、Today関数を使った条件式を指定したいのですが、うまくいきません。どうすればよいでしょうか?
やりたいことは以下の2点です。

(1)「期日」フィールドがあり、日付が入っています。そこで、「Today」から「期日」を引いて、プラスになるもの。つまり、期日が過ぎているものを抽出したい。
(2)「期日」から「Today」を引き、0~3になるもの。つまり、期日当日~3日前のものを抽出したい。

です。
よろしくお願いします。m(_ _)m

このQ&Aに関連する最新のQ&A

A 回答 (3件)

他の方も指摘してますが、AccessにToday関数はありません。


Date関数が現在の日にち、Now関数が日にちと時間を表示します。

(1)期日がプラスになるもの(0を含まない)
[期日] > Date()
(2)期日当日~3日前
[期日] Between Date() - 3 And Date()
※期日に時間が含まれる場合は
[期日] Between Date() - 3 And Date() + #23:59#
    • good
    • 0
この回答へのお礼

返答ありがとうございました。上記の方法で、こちらの要望をすべて満たせました。

お礼日時:2007/11/19 13:21

tab1:



I__期日________案件名
1__2007/11/19__A
2__2007/11/20__B
3__2007/11/21__C

クエリ1:

ID_期日________案件名__期日までの日数
1__2007/11/19__A_______0
2__2007/11/20__B_______1
3__2007/11/21__C_______2

SELECT [ID], [期日], [案件名], DateDiff("d",Date(),[期日]) AS 期日までの日数
FROM tab1;

つまり、Today関数ではなくDate関数を使えば成功すると思います。
Today関数は、エクセルの関数。
    • good
    • 0
この回答へのお礼

返答ありがとうございました。No.3のやり方ですべてうまくいきました。

お礼日時:2007/11/19 13:22

Today関数は、Excelのワークシート関数と思います。



Date関数を使ったら如何でしょうか。
    • good
    • 0
この回答へのお礼

返答ありがとうございました。No.3のやり方で対応することにしました。

お礼日時:2007/11/19 13:22

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

QACCESS 今日の日付のデータ抽出 他

よろしくお願いします。多分基本的なことなんだと思いますが。
クエリでデータ抽出を試みています。
クエリのフィールドは

授業  クラス  日付  個人番号  
こくご  A   11/9   101
こくご  B   11/9   102
こくご  A   11/13   101
こくご  B   11/13   102

抽出には2つの条件が必要であり、個人番号と日付が必要です。
日付は基本的に「今日」の日付のものを自動的に抽出したいです。
★↓のように今日の日付のものを自動的に抽出するにはどうしたらいいのでしょうか?

授業  クラス  日付  個人番号  
こくご  A   11/9   101
こくご  B   11/9   102


表示方法として、フォームで表示させたいです。
検索用のフォームの中に、「個人番号」を入力するテキストボックスを作り、コンボボックスで表示の指示を出すと、「今日」の日付の検索した「個人番号」の「授業」「クラス」が表示したいのです。
個人番号と前述の、今日の日付のデータが一致したものの抽出となります。
★↓のように個人番号入力後、指示( 「101」入力 )ですが、これは、前述の「クエリの実行」をさせればいいのでしょうか??

授業  クラス  日付  個人番号  
こくご  A   11/9   101


どのようにステップを踏めばいいのか迷っています。

よろしくお願いします。多分基本的なことなんだと思いますが。
クエリでデータ抽出を試みています。
クエリのフィールドは

授業  クラス  日付  個人番号  
こくご  A   11/9   101
こくご  B   11/9   102
こくご  A   11/13   101
こくご  B   11/13   102

抽出には2つの条件が必要であり、個人番号と日付が必要です。
日付は基本的に「今日」の日付のものを自動的に抽出したいです。
★↓のように今日の日付のものを自動的に抽出するにはどうしたらいいの...続きを読む

Aベストアンサー

どうもです。
テーブルの構成が解かりませんが日付フィールドは日付/時刻型
って思って書きます。

作成したクエリーの抽出条件に
Format(Now(),"yyyy/mm/dd")
を入れてみて下さい。
これで当日のデーターが全て出ていればOKです。
後はフォーム上のコンボのイベント実行時に条件で個人番号を入れれば出ると思います。
↑これは出来ているんですよね?

只、これだと現在しか見れないクエリーなので私ならクエリーには条件を入れず、
フォーム上
テキストボックス:個人番号
テキストボックス:日付
 既定値 Format(Now(),"yyyy/mm/dd")
表示させるのはリストボックス:List
実行ボタン Cmd1
作成したクエリー名:クエリー1

実行ボタン Cmd1
クリック時
Dim SQL As String
Dim 条件 As String

SQL = ""
SQL = " SELECT クエリー1.*"
SQL = SQL & " FROM クエリー1"
SQL = SQL & " WHERE 個人番号=" & Me!個人番号 & " AND 日付=#" & Me!日付 & "#"

Me!List.RowSource = SQL

ってやれば現在・過去・未来のデーターを表示する事が可能ですよ

PS 日付型は結構癖があると思います。
ちょっと難易度が高いかも知れませんががんばって下さい。

どうもです。
テーブルの構成が解かりませんが日付フィールドは日付/時刻型
って思って書きます。

作成したクエリーの抽出条件に
Format(Now(),"yyyy/mm/dd")
を入れてみて下さい。
これで当日のデーターが全て出ていればOKです。
後はフォーム上のコンボのイベント実行時に条件で個人番号を入れれば出ると思います。
↑これは出来ているんですよね?

只、これだと現在しか見れないクエリーなので私ならクエリーには条件を入れず、
フォーム上
テキストボックス:個人番号
テキストボックス:日付
...続きを読む

Qアクセス・クエリの抽出条件(翌日以降)

WinXP、OfficeXPまたはOffice2000のアクセスを使用してクエリを
作成しているのですが、抽出条件の設定方法を教えて下さい。

データベースには"年月日"の情報があり、それは当日及び翌日以降の
年月日情報です。
その中から、翌日以降だけのデータを抽出したい場合にどのような
抽出条件を入力すれば良いのでしょうか。

Aベストアンサー

>上記の「Date」には具体的に年月日が入るのでしょうか。
>その場合、毎日「Date」の年月日を変更する必要があると思うのですが

Date()とすれば、システム日付が自動で設定されますので、
自分で変更する必要はありません。
例えば今日、「>=Date()」と実行すれば実際は、
「>=2006/09/26」となり、明日は「>=2006/09/27」
となるのです。

QACCESS IIF関数 複数条件の設定について

 選択クエリにおいて、あるフィールド「 X」 のレコード数値が
 
  0<[X]<=50   であれば A 
  50<[X]<=100  であれば B 
  100<[X]<=150  であれば C

 と表記させるフィールド「Y」を追加したいと考えています。
 この場合、Yのフィールド設定で指定する数式についてご教授願います。

 一応、
  IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")

  としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。

 何卒よろしくお願いいたします。

Aベストアンサー

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "")


なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、
Accessの関数などではこれだと正しい結果が得られません。
正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の
2つの要素からなる形にする必要があります。
(「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と)

但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる
式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証
されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として
指定すればOk、ということになります。
(「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた
 場合は、省略ができない、と)


【参考】
「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。
この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに
なります。
何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、
ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す
ことになります。

この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」
以外なので、「真(=-1)」という値が返された、ということです。

なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに:
http://oshiete.goo.ne.jp/qa/4850675.html

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A"...続きを読む

QOfficeアクセス テーブル「テキスト型」⇒「日付型」への変換について

テーブルにデータが保管されており、そのフィールドの一つに「テキスト型」で”20080301”のようなデータを持っています。これを「日付/時刻型」”2008/03/01”のように変換したいのですが、どのようにすればよいのでしょうか。

※ちなみにこのオリジナルデータは毎日、自動的にテーブルにダウンロードされており、このテーブル自体の型を予め「日付/時刻型」に変換すると、日々のデータ取得時にエラーとなってしまいます。ですので、「日付/時刻型」のフィールドを持った新規のテーブルに、この”20080301”のデータを変換し格納したいのですがどのようにすればよろしいでしょうか。

テーブル⇒デザインより、該当のフィールドの型を「テキスト型」⇒「日付/時刻型」へ直接変換してしまうと、「データの変換中にエラーが発生しました。○○件のレコードのデータが失われました。」と表示されます。素人のため、なるべく追加クエリや更新クエリや簡単な関数のみでの方法を教えていただけたら幸いです。

Aベストアンサー

テーブルに日付時刻型フィールドを追加して、
更新クエリを使って、#1さんが提案されている
数式を使えばよいのでは?

QACCESS 重複データを1つだけ表示したい(初心者です)

ACCESSで複数のフィールドに全く同じレコードが複数存在します
(例)
フィールド1  フィールド2  フィールド3
愛知      田中      12
愛知      田中      12
愛知      田中      12
三重      山本      23
三重      山本      23
岐阜      鈴木      33
岐阜      鈴木      33

もともと他のデーターベースからCSVで落としたものをインポートしているので、データの存在自体はどうしようもありませんが、これらの重複しているデータを1件だけ表示したいのです。つまり
(例)
フィールド1  フィールド2  フィールド3
愛知      田中      12
三重      山本      23
岐阜      鈴木      33

どのようにすればよいでしょうか。

Aベストアンサー

クエリにて[固有のレコード]プロパティーを[はい]にします

QAccessのクエリで、Left関数を使用して、7桁の数値を抜き出す方

Accessのクエリで、Left関数を使用して、7桁の数値を抜き出す方法。
IDが8桁で入力されているのですが、左から7桁だけを抜き出して、全てのレコードを表示させたかったのですが、誤って入力されている7桁のIDしか表示されませんでした。
いつもExcelを使用している感覚だったので、文字の左から7桁の数値や文字列を抽出して表示してくれるものと思っていました。
元のテーブルに入力されているIDを変更することなく、
クエリで、7桁だけにして、その取り出した7桁で区別し、グループとして認識し合計を出したいと考えているのですが、どうすればよいのでしょうか。
宜しくお願い致します。

Aベストアンサー

>Left関数をする前は、5000行程なのですが、関数を加えたとたん4300程度に減ってしまいます。

関数を加えるのでは無く、関数だけ(演算フィールドのみ)のクエリを作成をして実行させます
単にleft関数で左から何文字取れという演算フィールドしか持たないクエリを実効させれば、指定した桁数に満たない場合には実際にある桁数まで、一文字も入っていない場合には0を返して、全データ分のクエリ結果を返します

全件分のデータが帰って来ないという事は作成しているクエリに問題ありの可能性高いです

先の書き込みに書きましたが、手順は演算フィールドのみのクエリを作成し実行させ全データが取得出来る事を確認してから、この演算フィールドのみのクエリに必用なフィールドを追加してゆくって事してください

QAccess 別テーブルにある値を抽出条件にしたい

OS:WindowsXP SP3
使用ソフト: Microsoft Access2003


選択クエリにて、別テーブルのフィールドにある値すべてを抽出条件にできますか?


ホームページに来て頂いた方の検索キーワードを集計しております。
テーブル1には『検索キーワード履歴』フィールドがあり、お客様が使用した検索キーワードが入力されています。(約2万件)
テーブル2には『除外キーワード候補』フィールドがあり、不要なキーワードが入力されています。(約10件)


クエリにて、『検索キーワード履歴』から『除外キーワード候補』の値を全て除いた結果を出力させたいのですが、
抽出条件をどのように指定したらいいのか分かりません。

そもそも、別テーブルのフィールドにある値すべてを除外させる抽出条件って指定できるのでしょうか。
SQLを用いる方法でも構いませんので教えてください。

Aベストアンサー

SELECT * FROM テーブル1
WHERE NOT EXISTS
(SELECT * FROM テーブル2 WHERE テーブル1.検索キーワード履歴 = テーブル2.除外キーワード候補)
OR 検索キーワード履歴 IS NOT NULL
とか
SELECT * FROM テーブル1
WHERE 検索キーワード履歴 NOT IN (SELECT 除外キーワード候補 FROM テーブル2 )
ということ?
1フィールドに1キーワードの場合です。

QAccessのマクロでモジュールを実行させたい。

Access2002を勉強中の初心者です。

AccessでDB1という名前のデータベースを作成し、その中で、モジュール1というモジュールを作成しました。これを実行するマクロを作成したく、次のようにマクロを作成しました。
マクロのデザイン画面でアクションに「プロージャの実行」を選択、プロージャ名入力覧の右側の...のボタンを押して式ビルダ画面を表示、ここの「関数」フォルダを開いてDB1を選択、表示されたモジュール1を貼り付けてOK。
しかし、このマクロを実行すると、次のエラーとなります。「DB1 指定されたDB1が見つけることができない関数名が含まれています」

根本的に方法が間違っているのでしょうか?
アドバイスをよろしくお願いします。

Aベストアンサー

#1です。

ちょっと時間ができたので、Accessのヘルプで、
 "RunCode/プロシージャの実行" アクション
についてのトピックを見てみました。

結論から言うと、基本的な考え方が間違っているみたいです^^;。

「プロシージャの実行」アクションでは、「Function」プロシージャを指定するようです。
Subプロシージャではエラーになります。


つまりご質問の件では、
「Subプロシージャを呼び出すFnctionプロシージャ」をまず書かなけれえばならない。
そして、マクロのアクションでは、あらためてこのFunctionプロシージャを指定しなければいけません。

QACCESSでの重複レコードの削除

ACCESSで、重複レコードを引っ張ってくるのは、重複クエリでやれましたが、逆に、重複レコード(1つのフィールド、或いは複数のフィールドに着目しての)の削除は、やれないのでしょうか?
イメージしているのは、エクセルのオートフィルタでの「重複データの削除」です。
よろしくお願い致します。

Aベストアンサー

方法を2つばかり示します:

A)選択クエリを使用する
「重複分のデータを表示させないだけ」(=削除はしない)場合は、そのテーブルをもとにしたクエリで、「固有の値」プロパティを「はい」に設定すればOKです。

但し、テーブルのデータが

  (ID,テキスト)=(1,aaa),(2,bbb),(3,bbb),(4,ccc)・・・

の場合、クエリに表示させるフィールドを「テキスト」のみにすれば、

  (テキスト)=(aaa),(bbb),(ccc)・・

となってくれますが、IDも含めてしまうと、重複分がそのまま表示されます(=テーブルのデータと変わらない)。


B)削除クエリで削除後に、追加クエリで再追加する
※こちらは、テーブルのデータを変更するやり方です※
1)重複クエリを、メニューの「クエリ(Q)」→「テーブル作成(K)」をクリックして、テーブル作成クエリにする
 (作成テーブル名を、仮に「重複分」とします)
2)テーブル作成クエリを実行して、「重複分」テーブルを作成
3)元のテーブルの重複データを全て削除
 (=No.1の方の回答で行ったこと)
4)「重複分」テーブルのレコードを、元のテーブルに追加する追加クエリを作成
5)追加クエリを実行

この操作を実行すると、元のテーブルのデータは下のように変わっていきます:

 (ID,テキスト)=(1,aaa),(2,bbb),(3,bbb),(4,ccc)
      ↓
 (ID,テキスト)=(1,aaa),(4,ccc)
      ↓
 (ID,テキスト)=(1,aaa),(4,ccc),(5,bbb)

なお、「ID」にオートナンバー型が設定されている場合を想定しています。
もし元のテーブルに「ID」がないなら、データの変遷は

 (テキスト)=(aaa),(bbb),(bbb),(ccc)
     ↓
 (テキスト)=(aaa),(ccc)
     ↓
 (テキスト)=(aaa),(bbb),(ccc)

となります。

方法を2つばかり示します:

A)選択クエリを使用する
「重複分のデータを表示させないだけ」(=削除はしない)場合は、そのテーブルをもとにしたクエリで、「固有の値」プロパティを「はい」に設定すればOKです。

但し、テーブルのデータが

  (ID,テキスト)=(1,aaa),(2,bbb),(3,bbb),(4,ccc)・・・

の場合、クエリに表示させるフィールドを「テキスト」のみにすれば、

  (テキスト)=(aaa),(bbb),(ccc)・・

となってくれますが、IDも含めてしまうと、重複分がそのまま表示されます(=テーブルの...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング