人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

excelのVBAでSQLsarverに接続しデータを取得しています。
フィールドがNEN,TUKI(ともにINT)と別れており、年をまたぐ計算がめんどくさいので下記のようにとりたいと考えています。
SELECT * FROM SYUKEI WHERE (NEN * 100 + TUKI >= 201110 And NEN * 100 + TUKI <= 201203)

※2011(NEN)を100倍して201100に、その後10(TUKI)を足せば201110になるので行けそうなのですが。エンタープライズマネージャー上では実行できました。

どなたかご指導お願いします。

●質問者: きあ
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ
●100ポイント

>エンタープライズマネージャー上では実行できました。

実行できたのならば、問題ないんじゃないでしょうか?

あと カッコは ANDで 分けたほうがいいでしょう。

(NEN * 100 + TUKI >= 201110 And NEN * 100 + TUKI <= 201203)



(NEN * 100 + TUKI >= 201110) And (NEN * 100 + TUKI <= 201203)


きあさんのコメント
ありがとうございます。VBAからSQLを投げる際のエラーなんでしょうか…。 カッコ分けてみて試してみます

2 ● taroe
●100ポイント

基本的に普通のアプローチなので問題ないと思いますが・・。
SQLがEXCELからも動作するかどうかと言うのは試してみないと分かりませんが
動かない場合は、SQLを見直すだけですが・・・

見る限り、動かないSQLにはみえないですが・・。


1.SQLを見直す
(NEN=2011 AND TUKI>=10) OR ( NEN=2012 AND TUKI <3)

条件をほかの方法でも表すことはいろいろ可能ですよ
年のまたぎ方が1年以上とかでも、書き方はいろいろありますが・・。


2.SQLsarver側でView(仮想表)を作成する

NEN*100+TUKIという値のフィールドYYYYDDを作れば
仮想表大して普通にSQLを発行するだけですよ

SELECT * FROM SYUKEIの仮想表 WHERE YYYYDD >= 201110 And YYYYDD <= 201203

EXCELでも必ず動きます。
こちらの方が何も考えなくてよいので簡単ですね。


きあさんのコメント
単月のものがすでにあり、年月の指定をテキストボックスにて201201という形で指定しています。 その場合はNEN=left(201201,4) TUKI=RIGHT(201201,2)という形で問題ないのですが、年またぎだと条件の作成が複雑になります。 201010?201203指定の場合や201110?201203で条件の作成に困りまして。 (NEN=2010 AND TUKI>=10 AND TUKI<=12 ) OR (NEN=2011 ) OR (NEND=2012 AND TUKI=>=1 AND <=3) のように…。 なので、年月までのフィールドで?と思ったのですが。 やはり素直にビューを作成したほうがいいでしょうか。

taroeさんのコメント
ビューを作成するか SQLの中で連結フィールドを作成するのが良さそうだと思います。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ