• ベストアンサー

Access 抽出条件 フォームの作成について

クエリで以下のような関数で日数から期首を求めたのですが 抽出条件の指定が出来ません。テキスト型、○○年○○月、期首7月 今期: IIf(Month(CDate([決算日] & "01日"))<=7,Format(DateAdd("m",-6,CDate([決算日] & "01日")),"ggge" & "年"),Format(CDate([決算日] & "01日"),"gggee" & "年")) 色々試してみましたがデータ型が違うといわれるのですが、どの様な方法をとれば良いでしょうか? それとエラーになっている(日付けデータが無い)部分はほって置いて良いのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.6

>これでは合ってないと言う事ですよね? 違います。あれでもいいんですが無駄が多い長い式だから書き直しただけです 本当はもっと短くできます Format(DateAdd("m",-6,CDate("H" & [決算日])),"ggge" & "年") それに今回アップされた式 Format(DateAdd("m",-6,CDate([決算日] & "01日")),"ggge" & "年") これも間違えていますよ 私がアップしたものと注意深く見比べてください >抽出条件にFormat・・・と入れないといけないのですか? 違います 式フィールドが返す値が「平成xx年」なのに 抽出条件に「平成xx年度」と書いたって一致するわけないでしょということです

sskj
質問者

お礼

あ・・・分りました。 >○○年○○月 はじめのこの表記が間違いの原因でした。 >Format(DateAdd("m",-6,CDate([決算日] & "01日")),"ggge" & "年") >これも間違えていますよ >年月だけなら1日が、月日だけなら今年の年が補足されます これを知らなかったので助かります。 >違います ですよね。 Format・・・)=平成18年 こんなやり方しないといけないのかな、とか思いましたが関係ないですね。 

その他の回答 (5)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.5

なにやってんですか あちこちの式を理解せずに使用したってうまくいくわけないですよ あの長い式は "平成18年"という文字列を返すのですから そのような条件を書いてやらなきゃ SELECT 調査項目新.企業コード, 調査項目新.決算日, 調査項目新.総売上高, Format(DateAdd("m",-6,CDate("H" & [決算日] & "01日")),"ggge" & "年") AS 式1 FROM 調査項目新 WHERE Format(DateAdd("m",-6,CDate("H" & [決算日] & "01日")),"ggge" & "年")="平成18年";

sskj
質問者

補足

SQL全て SELECT 調査項目新.企業コード, 調査項目新.決算日, 調査項目新.総売上高, Format(DateAdd("m",-6,CDate([決算日] & "01日")),"ggge" & "年") AS 式1 FROM 調査項目新 WHERE (((Format(DateAdd("m",-6,CDate([決算日] & "01日")),"ggge" & "年"))="平成18年")); 私のIF関数を入れて分かりづらかったので直しました。 これでは合ってないと言う事ですよね? (データ型が違うとエラーが出ます) <そのような条件を書いてやらなきゃ 抽出条件にFormat・・・と入れないといけないのですか? その辺りが分からなかったのでお聞きしたのですが・・・ 関数で表示させている(フィールド上に)文字や数字をただ抽出条件にいれるだけなのか それとも関数を使っているので抽出条件も関数を使わないといけないのか? もしただ抽出条件を指定するだけなら、エラーを出さない筈なんですが・・・出てしまうので上のような考え方をしたのです。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.4

>両方試しましたが「抽出条件でデータ型が一致しません」とでます。 埒があかないですね・・・・ そのクエリをSQLビューで表示し そのSQLをコピーしてここに貼り付けてみてください

sskj
質問者

補足

SELECT 調査項目新.企業コード, 調査項目新.決算日, 調査項目新.総売上高, IIf(Month(CDate([決算日] & "01日"))<=7,Format(DateAdd("m",-6,CDate([決算日] & "01日")),"ggge" & "年"),Format(CDate([決算日] & "01日"),"gggee" & "年")) AS 今期, Format(DateAdd("m",-6,CDate([決算日] & "01日")),"ggge" & "年度") AS 今期2 FROM 調査項目新 WHERE (((IIf(Month(CDate([決算日] & "01日"))<=7,Format(DateAdd("m",-6,CDate([決算日] & "01日")),"ggge" & "年"),Format(CDate([決算日] & "01日"),"gggee" & "年")))="平成18年") AND ((Format(DateAdd("m",-6,CDate([決算日] & "01日")),"ggge" & "年度"))="平成18年度")); SOLを貼り付けました。 原因は分かるでしょうか?

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

>IFで指定している場合はどするのですか? 意味不明です、IIFを使っていても返る結果はひとつだけです "平成18年度"のような文字列が返るようになっているのならそのような文字列を条件に指定します >月日まで入っていないといけないですね。 年月日全てそろっていなくても大丈夫です 年月だけなら1日が、月日だけなら今年の年が補足されます

sskj
質問者

補足

>意味不明です、IIFを使っていても返る結果はひとつだけです "平成18年度"のような文字列が返るようになっているのならそのような文字列を条件に指定します。 >こんな書き方は出来ません >CDateにはAccessが日付と判定できる文字列を与えてやる必要があります >月日まで入っていないといけないですね。 平成○○年○月○日は使えるので、 CDate("平成18年1月1日")とすれば関数としては使えますね。 今回は日付け型ではないので関係ありませんが。 両方試しましたが「抽出条件でデータ型が一致しません」とでます。 今期フィールドの抽出条件に"平成18年"を指定しましたがダメでした。 IIf(Month(CDate([決算日] & "01日"))<=7,Format(DateAdd("m",-6,CDate([決算日] & "01日")),"ggge" & "年"),Format(CDate([決算日] & "01日"),"gggee" & "年")) Format(DateAdd("m",-6,CDate([決算日] & "01日")),"ggge" & "年度") (こちらに合うように修正しました。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

>7より低い数字とか指定しなく良いのですね。 -6で6ヶ月ずらしているじゃないですか 7より大きいのも小さいのもずらした結果は同じですよ >平成18年と書いただけではだめですよね。 平成18年という値に変換したのならそれでできます 私の回答を使うのであれば "平成18年度"ですね >日付け型に直さないと行けないのですか? Formatが返すのはテキスト型の値です >CDate("平成18年")とかですかね・・・? こんな書き方は出来ません CDateにはAccessが日付と判定できる文字列を与えてやる必要があります

sskj
質問者

補足

ありがとうございます。 >-6で6ヶ月ずらしているじゃないですか 集計時期をずらしているんですね。 >"平成18年度"ですね IFで指定している場合はどするのですか? 抽出条件もIFで指定すのですかね? >Formatが返すのはテキスト型の値です 勉強になります。 バリアント型の文字列ですね。 >CDateにはAccessが日付と判定できる文字列 今関数辞典で確認しました。 月日まで入っていないといけないですね。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

期首じゃなく年度を求めているんじゃないの? 求めたい結果は"平成18年度"でいいいの? だったら 今期: IIf(Month(CDate("H" & [決算日] & "01日"))<=7,Format(DateAdd("m",-6,CDate("H" & [決算日] & "01日")),"ggge" & "年度"),Format(CDate("H" & [決算日] & "01日"),"gggee" & "年度")) Format(DateAdd("m",-6,CDate("H" & [決算日] & "01日")),"ggge" & "年度" だけでもOKですよ >データ型が違うといわれるのですが 抽出条件欄にどのように書いているの? >エラーになっている(日付けデータが無い)部分はほって置いて良いのでしょうか? 抽出に使う目的には関係ないですね

sskj
質問者

補足

年度でした。失礼しました。 >求めたい結果は"平成18年度"でいいいの? 日付けだと集計できないので年度に直したかったのです。 Format(DateAdd("m",-6,CDate("H" & [決算日] & "01日")),"ggge" & "年度" 短いですね・・・。 7より低い数字とか指定しなく良いのですね。 >抽出条件欄にどのように書いているの? 平成18年と書いただけではだめですよね。 日付け型に直さないと行けないのですか? CDate("平成18年")とかですかね・・・?

関連するQ&A

専門家に質問してみよう