ACCESS97のVBAで開発しています。ACCESSデータベースから該当する日付データを抽出したいのですが、YYYYのみの条件でYYYY/1/1からYYYY/12/31までのデータを抽出したいのです。SQLでできるのでしょうか?もしできるのならそのやり方を教えてください。

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

A 回答 (2件)

他にも、


[Field1] >= DateSerial([年を指定],1,1) AND [Field1] < DateSerial([年を指定]+1,1,1)

とか…
Betweenを使わないのは、時刻の入ったデータも有効にする為です。
    • good
    • 0

出来ますよ!


YEAR関数を使います。
 Year([File01]![adddate])=1999
SQLだと
 Select *
 From File01
 Where Year([File01]![adddate])=1999;
です!
    • good
    • 0

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

関連するカテゴリからQ&Aを探す

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

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

Q[ACCESS97]SQLの書き方

グラフのレコードソースにクエリ・SQLを使用しています。データ入力チェックに使おうと思っています。妙なデータがはいった場合、グラフが乱れるのではないかと。

ソートは日付でしています。

それで、100レコードずつを順番に表示していきたいのですが、top値 だと最初からいくつ、、としか指定できません。これを、レコードの途中の任意の位置から取るにはどうしたらいいのでしょうか?

IDとかのようにユニークな値でソートしているのであれば、大小関係で一発ですが、同じ値がいくつも存在する日付なもので困っています。

日付でソートしたものを配列に入れる、もしくは一度テーブルに書き出す等も考えているのですが、SQLでできたら助かります。

よろしくお願いします。

Aベストアンサー

No.1です。

>たとえば、もう一つ順序管理するフィールドを作って、
>そこに順序を書き込むようなアクションクエリは
>簡単にできないものでしょうか?
テーブル構造が同じの空のテーブルを作成しておくのはどうでしょうか?
ただし、元のテーブルのフィールドの他に、オートナンバーのフィールドを1つ追加しておきます。
そして、このテーブルへ、日付昇順で追加クエリを実行すれば、日付昇順で、オートナンバーにユニークな整数が入ります。
ユニークなので、確実に私のSQLで100個ずつ取り出せます。
一連の操作が終了したら、テーブルの全データを削除します。
ただし、オートナンバーの値は、前回の続きからで、どんどん大きな値になります。
しかしそれも、テーブルのデータが空の状態で、Accessの最適化をすればまた「1」からナンバリングされます。

QMS ACCESS 商品価格変更時の該当価格抽出方法の設定について

私はACCESS初心者です。
会社用で商品受注履歴を閲覧出来る仕組みをACCESSにて、運用しております。
商品価格変更時の設定方法について質問させて下さい。

以前こちらでの類似質問履歴を参照させて頂き、下記のテーブルを作成しました。

テーブル名:フィールド内容
(1)商品マスター:商品ID、商品名
(2)価格マスター:商品ID、商品名、価格(単価)、適用開始日、適用終了日
(3)受注マスター:商品ID、商品名、販売日、数量

クエリ名:フィールド内容
(4)受注閲覧:受注ID、商品名、価格(単価)、数量、販売日

使用方法:
(4)受注閲覧に、商品名、販売日(例:2007/7/1~2007/8/1)を入力し、
(3)受注マスターから、その期間に販売日設定された注文情報、およびその期間の商品価格を抽出する。

商品の価格変更時は、(2)価格マスターで商品ID・価格を新規入力しますが、
旧新価格とも商品名(主キー)が同じな為、(4)受注閲覧に販売日を入力した際、両方とも表示されてしまいます。
この時、「(2)価格マスター適用期間」の商品価格のみを引っ張り、(4)受注閲覧に表示出来る様にしたいのです。

色々と調べましたが、具体的な抽出条件が分からず、大変困っております。
是非アドバイスをお願い致します。

私はACCESS初心者です。
会社用で商品受注履歴を閲覧出来る仕組みをACCESSにて、運用しております。
商品価格変更時の設定方法について質問させて下さい。

以前こちらでの類似質問履歴を参照させて頂き、下記のテーブルを作成しました。

テーブル名:フィールド内容
(1)商品マスター:商品ID、商品名
(2)価格マスター:商品ID、商品名、価格(単価)、適用開始日、適用終了日
(3)受注マスター:商品ID、商品名、販売日、数量

クエリ名:フィールド内容
(4)受注閲覧:受注ID、商品名、価格(単価)...続きを読む

Aベストアンサー

このテーブル構造を提案したという回答には単価の参照方法も載っていたのでは・・・

受注閲覧クエリは受注と価格マスタを商品IDで結合したクエリにし
販売日の抽出条件欄に

Between 適用開始日 and 適用終了日

と書きます。これで販売日の単価を取ってこれます

なおテーブルにはまだ問題があります下のように変えてください

(1)商品マスター:商品ID、商品名
(2)価格履歴:商品ID、価格(単価)、適用開始日、適用終了日
(3)受注:商品ID、販売日、数量

マスタは半固定的な基本データを集めたテーブルにつけます
履歴や受注のようなものには使いません
特に受注は取引記録ですからマスタと反対に位置するトランザクションテーブルです

商品マスタがあるときそれを参照するテーブルには商品IDのみを
参照キーとしておきます
商品名を取り込んではいけません

QAccess97でのVBAのプログラミングやSQLについてのサイトを探してます

Access97でのVBAのプログラミングやSQLについてのサイトを探してます。
わかりやすい、または詳しいおすすめのサイトがありましたら、
教えてください。

Aベストアンサー

Accessについてはこちら。
http://www.mahoutsukaino.com/
http://www.accessclub.jp/
http://homepage2.nifty.com/MrUr/katuyo/index.htm

SQLについてのサイトはこちらをごらんください。
http://www.atmarkit.co.jp/fnetwork/rensai/index/index-serial.html#sql
http://allabout.co.jp/computer/database/
http://www.techscore.com/tech/sql/
http://www.rfs.jp/sitebuilder/sql/

QAccess97 新規データ入力時に前回データを読込みたい

Microsoft Access97 について質問致します。
現在、フォームとテーブルを連結させてデータ入力を行っているのですが、新規入力の時は各項目の値がすべて消えてしまいます。

前回入力した値を覚えておいて、新規入力時にそれを読みこむような事はできないのでしょうか?

例えば10件のデータを入力する場合、毎回「登録日」や「担当者」などその都度変える必要のないデータも入力する手間を省きたいのですが・・・。

どうぞよろしくお願い致します。

Aベストアンサー

作業中にクリップボードが使えませんが、以下の手順で出来ます。

最初の1回目の入力
・新規レコードに移動する
・データが固定の項目のみ入力する。
・メニューの「編集」から「レコードの選択」を行う。
・メニューの「編集」から「コピー」を行う。
・未入力の残りの項目を打ち込む

2回目以降の入力
・メニューの「編集」から「追加貼り付け」を行う。(新規のレコードに、最初の手順でコピーされたレコードと同じ内容のデータが貼り付けされます。手動で新規レコードに移動する必要はありません)
・未入力の残りの項目を打ち込む

もし、入力ボックスの中で、文字列をクリップボードにコピー、切り取り(文字を選択してCtrl+CやCtrl+X)してしまった場合は「最初の1回目の入力」の手順からやり直しですが…。

また、オペレータの操作ミスを防ぐ為、プログラマがAccessの「編集」メニューを隠してしまっている場合、この手は使えません。

QAccess97のクエリー(sql文)について

[A]テーブルに[CODE.DATE.CHK]とフィールドがあります

内容は、
[CODE][DATE][CHK]
01.2007/06/01.0
01.2007/06/10.1
01.2007/06/11.1
02.2007/05/01.0
02.2007/05/10.1 と、します。

結果を
01.3.2
02.2.1  と、したいのです。

つまり、[DATE]の行数と、[CHK]が1の件数が
とりたいのです。

SELECT A.CODE, Count(A.DATE) AS CNT FROM A
GROUP BY A.CODE;
と、すれば、[DATE]の行数はとれます。

[CHK]が1の件数の取り方が解りません。
宜しくお願い致します。

Aベストアンサー

case when then else と言う表記は、Accessでは使えないと思いますので、
Access用に書き直すとこうなると思います。

SELECT A.CODE, Count(A.DATE) AS CNT, Count(IIf(A.CHK=1,1,Null)) AS ChkSum
FROM A
GROUP BY A.CODE;


人気Q&Aランキング

おすすめ情報